0

我的 YML 文件失控了,我已经开始整理它们。在这一点上,我正在处理大约 50 种表格和 8 种语言。而那些只能增加。因此,如果我遵循推荐的重构方法,那么我最终会得到大约 50 个文件夹和每个文件夹中的 8 个文件。平均而言,每个表格都有大约 10-20 个与之相关的翻译。所以我想我会采用这种方法:

/config
  /locales
    en.yml        # will contain default English translations
    es.yml        # will contain default Spanish translations
    ......        # etc. default files for each language
    form_1.yml    # translations for form 1 and related
    form_2.yml    # translations for form 2 and related
    ..........    # etc. for the different forms
    form_50.yml   # of course, will be using actual form names and not form_1 .. form_50 :)

像这样的语言文件en.yml很明显它们将包含什么格式的翻译。但是像这样的文件form_1.yml将包含以下内容:

en:
  first_name: First Name
  last_name: Last Name

es:
  first_name: Nombre
  last_name: Apellido

it:
  first_name: Nome
  last_name: Cognome

fr:
  first_name: Prénom
  last_name: Nom

...etc for more languages

或者,在同一个文件中以多种语言作为根。这将我需要维护的文件从 404 减少到 54,再加上同时查看所有语言以捕获任何遗漏的内容等优势。我已经对此进行了测试并且它有效。但在我全速推进这个实现之前,我想知道 Rails 社区对此有何看法。这种方法的任何陷阱。

谢谢。

编辑:请注意,当我说形式时,我指的不仅仅是字幕的翻译。它还将包括与表单相关的帮助消息、错误等。

4

1 回答 1

2

StackOverflow 上还有其他一些 关于如何为 i18n 构建 YAML 文件的问题,我认为您的问题没有“正确”答案。如果它对你有用,那就太好了!我想说你得到的任何答案都是完全主观的,更多的是关于 i18n 和翻译管理,而不是与 Rails 方式有关的任何事情。

话虽如此,这里有一些关于如何设置 YAML 文件的即兴主观评论:

  • 看起来您已经以编程方式将翻译拆分为组件,就像您可以在 Rails 应用程序中将视图拆分为部分一样。您想编辑一个表单翻译(或一组翻译),您直接进入该表单文件并一次完成工作。如果您是所有翻译的管理员/翻译,那就太好了,这意味着更少的文件,这很好。

  • 一个潜在的烦恼可能是您是否需要由第三方为您不会说的语言完成(或重新完成)翻译?您需要给他们一大堆带有大量噪音的文件来过滤(未审查的语言),而不仅仅是基础语言的文件和带有目标语言键的文件。这是假设您不直接处理文件并且不使用诸如LocaleappPhraseApp 之类的工具。

  • 也许对您来说一个快乐的媒介可能是拥有一个config/locales树结构,例如:

    form_1/form_1.en.yml
    form_1/form_1.it.yml
    form_2/form_2.en.yml
    form_2/form_2.it.yml etc...
    

    这让你既可以组件化又可以分离语言……但可能比你现在拥有的文件更多。

但最终,我想说最适合您的 i18n 工作流程的文件结构是最好的。

于 2013-10-28T07:19:54.460 回答