Ruby on rails Rails中YAML i18n翻译文件中的扩展嵌套范围键(与类路径键相比)有什么优势
注意:我不是RoR开发人员,因此如果问题中有任何不准确的地方,请纠正我 RoR有自己的i18n库。该库(可选)对本地化文件使用YAML格式。在这些本地化文件中,如果值是提供的翻译,则使用键值对,但这些键值对可以位于范围(命名空间)内,以下是示例: 这里有一个例子- 。。。顶级键是区域设置:foo是一个名称空间键和:bar 是翻译“baz”的关键 还有一个例子- 请检查指针以获得更好的解释 我们可以想到的另一种样式是展平范围属性:例如,在上一个引用中,我们可以说: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
helpers.label.contact.company_name: "Company name"
我相信在编辑大型或深度嵌套的本地化文件时,嵌套样式可能会非常混乱。事实上,我发现有几个地方提出了这个问题:
- -一个线程在rails-i18n组中抱怨相同的问题
- 这里:有人编写了一个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"