我是 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/