在 Rails 3 中推荐的 I18n 导轨方式是什么



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

我对Rails Guide中的语句有点困惑:

i18n库对区域设置键采取了务实的方法(经过一些讨论),只包括区域设置("语言")部分,如:en、:pl,而不包括区域设置部分,例如:en-US或:en-GB,它们传统上用于分隔"语言"one_answers"区域设置"或"方言"。许多国际应用程序只使用语言环境的"language"元素,如:cs、:th或:es(用于捷克语、泰语和西班牙语)。然而,不同语言群体之间也存在着重要的地区差异。例如,在:en-US语言环境中,您将使用$作为货币符号,而在:en-GB中,您则使用£。没有什么能阻止你以这种方式将地区和其他设置分开:你只需要在:en-GB词典中提供完整的"English–United Kingdom"语言环境

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

所以我需要在区域设置文件夹中有en.ymlen-US.ymlen-GB.yml个文件

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

并且当我设置CCD_ 4时,它将使用CCD_。这是建议在轨道3中执行I18n的方法吗?

我在en.yml中保留相同的部分(比如星期一到星期二,它们在美国和英国是相同的),并在分开的文件en-US.ymlen-GB.yml中保留不同的东西(比如货币符号),这好吗?铁轨有可能在en.yml中自动找到相同的零件吗?正如我所测试的,它不支持开箱即用的

为了避免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.Iml或en-GB.yml中找到特定翻译时,可以将两者回退到en。

最新更新