我对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
答案 0 :(得分:3)
在某些情况下,如果I18n模块没有找到翻译(例如表单属性),则它会回退到翻译密钥的“人性化”转换。例如'enter_a_location' - &gt; '输入位置'。所以你不知道它是使用集合翻译还是后备。
或者正如Sascha所提到的那样,您使用的另一个gem / engine / plugin可能具有完全相同的翻译密钥,并覆盖您设置的那个。
现在很难说,因为我们无法看到'enter_a_location'的分配发生在哪里。