【问题标题】:What's the recommended rails way to I18n in Rails 3Rails 3中I18n的推荐rails方式是什么
【发布时间】:2012-03-30 07:51:02
【问题描述】:

首先要确认的是,我不会在数据库中提供多种语言的任何内容。我只是在谈论页面上的文字。

我对@9​​87654321@中的说法有点困惑:

i18n 库对语言环境键采用实用的方法(经过一些讨论),仅包括语言环境(“语言”)部分,例如 :en、:pl,而不包括区域部分,例如 :en-US或 :en-GB,传统上用于分隔“语言”和“区域设置”或“方言”。许多国际应用程序仅使用区域设置的“语言”元素,例如 :cs、:th 或 :es(用于捷克语、泰语和西班牙语)。但是,不同语言组之间的区域差异也可能很重要。例如,在 :en-US 语言环境中,您将使用 $ 作为货币符号,而在 :en-GB 中,您将使用 £。没有什么能阻止您以这种方式区分区域设置和其他设置:您只需在 :en-GB 字典中提供完整的“英语 - 英国”语言环境。

假设我想要一套完整的英文本地化,其中包含美国部分和英国部分。

所以我需要在locale文件夹中有en.ymlen-US.ymlen-GB.yml,3个文件,

-- Rails Root
  |-- config
    |-- locale
      |
      |-- en.yml
      |-- en-US.yml
      |-- en-GB.yml 

当我设置I18n.locale = 'en-US' 时,它将使用en-US.yml 中的文本翻译。这是在 rails 3 中执行 I18n 的推荐方法吗?

我将相同的部分保留在en.yml 中是否很好(例如星期一星期二,它们在美国和英国是相同的)并将不同的东西(例如货币符号)保留在单独的文件中 en-US.ymlen-GB.yml? Rails 是否有可能自动在en.yml 中找到相同的部分?正如我测试的那样,它不支持开箱即用

【问题讨论】:

标签: ruby-on-rails-3 internationalization


【解决方案1】:

为避免出现 en-US 和 en-GB 共有的所有翻译的重复,您可以为不同的翻译定义自定义后备路由。

I18n.fallbacks.map(:"en-GB" => :"en")

I18n.fallbacks[:"en-GB"] # => [:"en-US", :en]

所以如果 en-GB 没有特定的翻译,您可以退回到 en.yml 或 en-US.yml。这样,您可以将特定于地区的翻译保留在 en-US.yml 和 en-GB.yml 中,而它们的共同点都可以在 en 中,并且当您找不到en-US.yml 或 en-GB.yml 中的特定翻译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 2012-04-07
    • 2011-11-05
    相关资源
    最近更新 更多