ant*_*paw 30 fallback ruby-on-rails internationalization ruby-on-rails-3 rails-i18n
我有这个问题
activerecord:
notices:
messages:
success:
create: "Something was created"
models:
user:
success:
create: "Thanks for registration"
I18n.t("activerecord.notices.models.user.success.create")
# => "Thanks for registration"
I18n.t("activerecord.notices.models.book.success.create")
# => "translation missing: de, activerecord, notices, models, book, success, create"
Run Code Online (Sandbox Code Playgroud)
我不知道为什么书模型没有得到后备按摩.我已经定了config.i18n.fallbacks = true.我正在使用Rails 3
ras*_*afi 99
我通常在config/application.rb中设置
config.i18n.fallbacks =[:de, :fr, :en]
Run Code Online (Sandbox Code Playgroud)
所以你可以减速后退的顺序.
但请注意在某些环境中/*.rb配置被覆盖.
egz*_*gze 31
当a :默认给出选项时,如果缺少翻译,将返回其值:
I18n.t :missing, :default => 'Not here'
# => 'Not here'
Run Code Online (Sandbox Code Playgroud)
更多信息在这里
小智 18
你是否为你的后端启用了后备?假设它很简单(基于示例中的yml):
把它放在初始化器中:
require "i18n/backend/fallbacks"
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
Run Code Online (Sandbox Code Playgroud)
https://github.com/svenfuchs/i18n/wiki/Fallbacks
Ala*_*ois 16
在rails 3+中,这是在config/environments文件中设置的:
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation can not be found)
config.i18n.fallbacks = true
Run Code Online (Sandbox Code Playgroud)
pas*_*llo 11
我相信处理丢失字符串的最佳方法是显示默认语言环境,而不是错误消息.
在application.rb中添加此行以回退到英语语言环境.
config.i18n.fallbacks = [:en]
Run Code Online (Sandbox Code Playgroud)
如果要指定特定于语言环境的回退,可以使用以下命令:
config.i18n.fallbacks = {:de => [:de,:en], :en => [:en,:de]}
Run Code Online (Sandbox Code Playgroud)
另请注意,您可以根据您的环境启用和禁用回退.因此,在开发时,显示错误可能是有意义的,您可以environments/production.rb使用以下内容启用后备:
config.i18n.fallbacks = true
Run Code Online (Sandbox Code Playgroud)
小智 5
对I18n Fallback功能存在误解。
此功能导致当缺少翻译异常时(在这种情况下,当I18n无法"activerecord.notices.models.book.success.create"在您当前语言的语言环境文件中找到与键关联的值时会发生这种情况)I18n将在预定义的回退语言列表中查找该值在生成丢失翻译异常的键中,如果找到,I18n将返回该值,但如果在任何其他语言环境文件中未找到,I18n将返回丢失的翻译异常。
因此,当您定义 时config.i18n.fallbacks = true,这并不意味着发生丢失翻译异常时,在这种情况下:
I18n.t("activerecord.models.book.success.create")
# => "translation missing: de, activerecord, notices, models, book, success, create"
Run Code Online (Sandbox Code Playgroud)
I18n将在您的语言环境文件中查找类似的键以返回其值,可能是:
I18n.t("activerecord.models.user.success.create")
# => "Thanks for registration"
Run Code Online (Sandbox Code Playgroud)
会发生什么是I18n将在您的默认后备语言中查找发生丢失翻译异常的特定语言。
一个很好的用法示例是:
# using :"en-US" as a default locale:
I18n.default_locale = :"en-US"
I18n.fallbacks[:es] # => [:es, :"en-US", :en]
Run Code Online (Sandbox Code Playgroud)
语言环境文件:
es:
activerecord:
notices:
messages:
success:
create: "Algo fue creado"
models:
user:
success:
create: "Gracias por registrarte"
Run Code Online (Sandbox Code Playgroud)
en-US:
activerecord:
...
models:
books:
success:
create: "The model was created"
Run Code Online (Sandbox Code Playgroud)
拨打英文网站:
I18n.t("activerecord.models.books.success.create")
# => "The model was created"
Run Code Online (Sandbox Code Playgroud)
致电西班牙网站:
#with config.i18n.fallbacks = false
I18n.t("activerecord.models.books.success.create")
# => "translation missing: es, activerecord, models, book, success, create"
#with config.i18n.fallbacks = true
I18n.t("activerecord.models.books.success.create")
# => "The model was created"
Run Code Online (Sandbox Code Playgroud)
更多信息请查看:https : //github.com/ruby-i18n/i18n
| 归档时间: |
|
| 查看次数: |
28237 次 |
| 最近记录: |