Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails中YAML i18n翻译文件中的扩展嵌套范围键(与类路径键相比)有什么优势_Ruby On Rails_Internationalization_Yaml - Fatal编程技术网

Ruby on rails Rails中YAML i18n翻译文件中的扩展嵌套范围键(与类路径键相比)有什么优势

Ruby on rails Rails中YAML i18n翻译文件中的扩展嵌套范围键(与类路径键相比)有什么优势,ruby-on-rails,internationalization,yaml,Ruby On Rails,Internationalization,Yaml,注意:我不是RoR开发人员,因此如果问题中有任何不准确的地方,请纠正我 RoR有自己的i18n库。该库(可选)对本地化文件使用YAML格式。在这些本地化文件中,如果值是提供的翻译,则使用键值对,但这些键值对可以位于范围(命名空间)内,以下是示例: 这里有一个例子- 。。。顶级键是区域设置:foo是一个名称空间键和:bar 是翻译“baz”的关键 还有一个例子- 请检查指针以获得更好的解释 我们可以想到的另一种样式是展平范围属性:例如,在上一个引用中,我们可以说: helpers.label.co

注意:我不是RoR开发人员,因此如果问题中有任何不准确的地方,请纠正我

RoR有自己的i18n库。该库(可选)对本地化文件使用YAML格式。在这些本地化文件中,如果值是提供的翻译,则使用键值对,但这些键值对可以位于范围(命名空间)内,以下是示例:

这里有一个例子-

。。。顶级键是区域设置:foo是一个名称空间键和:bar 是翻译“baz”的关键

还有一个例子-

请检查指针以获得更好的解释

我们可以想到的另一种样式是展平范围属性:例如,在上一个引用中,我们可以说:

helpers.label.contact.company_name: "Company name" 
我相信在编辑大型或深度嵌套的本地化文件时,嵌套样式可能会非常混乱。事实上,我发现有几个地方提出了这个问题:

  • -一个线程在rails-i18n组中抱怨相同的问题
之所以这样做,是因为我在从事大型项目时遇到了一些复杂情况 嵌套yml文件中的一段数据。在几分钟内拥有几千把钥匙 翻译文件,当我需要重新命名的时候,这让我很生气 转换键,将它们移动到另一个名称空间等,并且必须 滚动很多,查看并想知道键的名称空间是什么。 此外,还要解决合并冲突,检查中是否缺少翻译 当您拥有并看到完整密钥时,其他语言环境文件更容易

  • 这里:有人编写了一个Vim插件来来回展平文件以克服这个问题

我的问题是:嵌套样式的优点到底是什么。平面样式是否存在任何问题,使得开发人员尽管有缺点,但仍然使用嵌套样式?

对我来说,YAML文件布局的主要好处是,很容易一目了然地看到配置数据之间的关系。我花了几年时间使用Python,它用空格定义作用域,而不是像{}之类的无关字符,所以这个范例对我来说很舒服

可以说,如果您有大型yaml文件…数千个密钥…那么可能是时候开始将文件分解为更小、更易于管理的文件了。当我编写一般代码时,我得到一个如此大的文件,我会毫不留情地进行重构,以更直观地组织事情


我想这主要是druthers。我为Vim编写了YAML扁平器插件

对我来说,嵌套格式的主要原因是它是传统的,所以我们可能想要使用的任何工具或服务都可能使用这种格式

我想,当你开始重复自己的时候,可能会出现一些打字错误,重命名意味着在多个地方重命名它们——但重命名它们也很难找到,而且你的编辑器可能有很好的工具可以批量重命名

我可以想出更多的理由(更短的行,更小的文件,更少的噪音差异),但我认为它们不是很重要


这是个好问题。我正在考虑大部分时间使用平面格式,只有在需要使用外部工具时才进行转换。

这个答案完全不相关。问题不在于空格分隔与字符分隔。qestion是关于对键值对使用嵌套键还是使用带路径分隔符的展平键。这两种样式都可以与空格分隔(YAML)或字符分隔的数据(如JSON)一起使用。我提供了一些例子和指针,以便读者能够理解问题的实质。如果你认为答案没有价值,那是你的事,但也不是完全无关。您的备用样式helpers.label.contact.company\u name:“company name”仍在范围内。两者之间的唯一区别是视觉呈现。您提供术语“展平”来描述替代样式,但它不是概念上的展平…只是视觉上的展平。但我会让其他人介入,试着提供一个更符合你喜欢的答案……对不起,我不是故意这么苛刻的。您的回答讨论了缩进与字符定界。您在这里所说的是现场-结构并不是概念上的扁平化,只是视觉上的格式化样式。这正是问题所在-为什么开发人员选择有问题的样式(在某些方面)以及可视化嵌套样式是否有好处。是的,这就是我的意思。视觉嵌套样式使我个人更容易找到东西。我完全理解其他人可能不喜欢这种布局。我对Python、HAML和SASS的熟悉使YAML方法更适合我。我不认为这有任何真正的功能上的好处,但我可能弄错了。我编辑了主题行-我希望它现在能更准确地把握问题的主题,并消除视觉和概念上的混淆。因为我刚才对这个答案投了赞成票:现在,我没有将文件展平,而是与Vim一起使用。
en:
  contact:
    prices:
      show_price: "%{price_dollar}$"
      quote: "Coordinator: & quot;Crucifixion?& quot? & lt;br /& gt; Mr. Cheeky: & quot;Er, no, freedom actually.& quot;"

  attributes:
    created_at: "Created at"
    updated_at: "Updated at"

  helpers:
    submit:
      contact:
        create: "Order"
        update: "Modify"
    label:
      contact:
        name: "Your name"
        company_name: "Company name"
        phone: "Phone number"
        email: "E-mail"
        comment: "Comment"
helpers.label.contact.company_name: "Company name"