ruby-on-rails - 无法在我的 Rails 项目中编辑国际化字符串

标签 ruby-on-rails ruby string internationalization

我是 Ruby 的新手,而且我继承了一个大项目;到目前为止,我一直在通过执行以下操作来很好地更改按钮/表单/文本框上的文本:

如果我想将对象上的文本更改为“此处的文本”,我会在整个 Rails 项目中搜索带有“此处的文本”的字符串。通常我会在我的 locales/en.yml 文件中得到一个结果,然后我会更改该文件的相应部分。

然而,在目前的情况下,我有一个带有“输入位置”的文本字段。我想将其更改为“输入地址”所以我搜索了“输入位置”,在我的国际化文件中我确实看到了:

helpers:
enter_a_location: "Enter a location"

这是我整个项目中唯一出现这串文本的地方。但无论我将其更改为什么,当我开始我的 Rails 项目时,我都会不断收到“输入位置”。即使我完全删除整个 enter_a_location 东西,它仍然会出现。真的很烦人!我以为我已经掌握了编程业务的窍门。有什么想法吗?

出现“输入位置”的代码部分是(在 text_field 部分):

<div class='address-area'>

<%= form_for current_user, :url => update_address_path, :html => {:method => :post, :class => 'form-horizontal', :id => 'address_form'} do |f| %>
  <%= f.text_field :address, :id => 'address_autocomplete' %>
  <%= f.hidden_field :city %>
  <%= f.hidden_field :lat  %>
  <%= f.hidden_field :lng  %>

  <%= hidden_field_tag :changed %>
<% end %>

如有任何帮助,我们将不胜感激。

这是我的 Gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.3'
gem 'rake', '~> 0.9.5'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'mysql2', '~> 0.3.11'
gem 'json', '~> 1.7.3'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'compass-rails', '~> 1.0.1'
  gem 'bootstrap-sass', '~> 2.0.2'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'therubyracer', '~> 0.10.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platform => :ruby

  gem 'uglifier', '>= 1.0.3'
  gem 'jquery-fileupload-rails'
end

gem 'jquery-rails', '~> 2.0.2'
gem 'inherited_resources', '~> 1.3.1'
gem 'simple_form', '~> 2.0.2'
gem 'will_paginate', '~> 3.0.3'
gem 'bootstrap-will_paginate', '~> 0.0.7'
gem 'has_scope', '~> 0.5.1'
gem "best_in_place", "~> 1.1.2"

gem 'devise', '~> 2.0.4'
gem 'omniauth'
gem 'omniauth-facebook'
gem 'linkedin'
gem 'omnicontacts', '~> 0.2.3'
gem 'SystemTimer', '~> 1.2.3'
gem 'resque', '~> 1.20.0'
gem 'resque-scheduler', :require => 'resque_scheduler'
gem 'rest-client', '~> 1.6.7'
gem 'rest-graph', '~> 2.0.1'

gem 'geokit', '=1.6.5'
gem 'geokit-rails3', '~> 0.1.5'
gem 'memcache-client'

gem 'forgery', '~> 0.5.0'
gem 'factory_girl_rails', '~> 1.7.0'
gem "amoeba", "~> 1.2.1"

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# To use Jbuilder templates for JSON
# gem 'jbuilder'

# Use unicorn as the app server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'ruby-debug'

group :development do
  gem 'mongrel'
  gem 'pry-rails'
  gem 'quiet_assets'
  gem 'email_spec'
  gem 'capistrano', '~> 2.12.0'
  gem 'capistrano-ext', '~> 1.2.1'
  gem 'ruby-debug-base', '=0.10.4'
  gem 'ruby-debug', '=0.10.4'
  gem 'annotate'
  gem 'letter_opener', :git => 'https://github.com/ryanb/letter_opener.git'
  gem 'localtunnel'
end

group :test do
  gem 'cucumber-rails', '~> 1.3.0', :require => false
  gem 'capybara-webkit', '~> 0.11.0'
  gem 'headless', '~> 0.3.1'
  gem 'database_cleaner', '~> 0.7.2'
  gem 'rspec-rails', '~> 2.9.0'
  gem 'email_spec'
end

最佳答案

在某些情况下,如果 I18n 模块找不到翻译(例如表单属性),它会回退到翻译键的“人性化”转换。例如“enter_a_location”->“输入位置”。所以你不会知道它是使用集合翻译还是回退。

或者如 Sascha 所述,您正在使用的另一个 gem/引擎/插件可能具有完全相同的翻译 key ,并且正在覆盖您设置的 key 。

现在很难说,因为我们看不到“enter_a_location”的分配发生在何处。

关于ruby-on-rails - 无法在我的 Rails 项目中编辑国际化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15862010/

相关文章:

ruby-on-rails - 名称的正则表达式

ruby-on-rails - rake 数据库 :seed before db:migrate

ruby-on-rails - ruby rails : Validate CSV file

java - 将字符串中的 `\\r` 替换为 `\r`

regex - awk中的多个字段分隔符

c++ - 我可以释放传递给 SysAllocString 的内存吗?

ruby-on-rails - 简单表单输入类型

ruby-on-rails - 存储在 lib (heroku) 中的生产未初始化常量自定义类

ruby-on-rails - 我尝试在安装 cocoapods 后在 Rail 上安装 ruby​​,但它有同样的错误

ruby - Sinatra 与纯 Ruby 数据库