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

时间:2013-04-07 11:48:51

标签: ruby-on-rails ruby string internationalization

我对Ruby很新,我继承了一个大项目;到目前为止,我通过执行以下操作来处理按钮/表单/文本框上的正确更改文本:

如果我想更改“在此处文字”的对象上的文字,更改为不同的内容,我会在整个rails项目中搜索带有'Text here'的字符串。通常我在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

1 个答案:

答案 0 :(得分:3)

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

或者正如Sascha所提到的那样,您使用的另一个gem / engine / plugin可能具有完全相同的翻译密钥,并覆盖您设置的那个。

现在很难说,因为我们无法看到'enter_a_location'的分配发生在哪里。