2017-05-08 63 views
0

我有一个产品的下列YAML文件(数学formulas.yml):本地化YAML文件的内容

Name: Math formulas 
Type: Book 
Description: A book with math formulas 
Price: 40 USD 

的名称和说明需要本地化为两种语言:EN和FR。

本地化YAML文件内容的正确方法是什么?

我应该有3个文件吗?一个文件?

我将使用YAML文件将数据插入到我的应用程序数据库中。

UPDATE

你怎么看待这种做法(Yaml Parser Example)什么:

Name: Math formulas 
Type: Book 
Description: 
    - EN: A book with math formulas 
    - FR: Un livre avec des formules mathématiques 
Price: 40 USD 

这是否有道理?

+0

是什么让你觉得有一个*正确*的方式?我可以想到几种可能的方式。 – flyx

+0

我不知道是否有一个标准的方式。这就是为什么我问...你会建议什么? –

回答

0

这里有一些方法我能想到的:(注:我用谷歌翻译例如文本。)在最低水平

  1. 分支。我使用本地标签来识别语言。
Name: [!en Math formulas, !fr formules mathématiques] 
Type: Book 
Description: [!en A book with math formulas, 
       !fr Un livre avec des formules mathématiques] 
Price: 40 USD 
  • 使用一种语言作为默认情况下,与另一个替换文本(这是例如gettext的做,保证你一回退)。对于可翻译的值,我使用!t,对于包含替换的文档,我使用!translations。根据您的数据模型,您可能不需要。
  • --- 
    Name: !t Math formulas 
    Type: Book 
    Description: !t A book with math formulas 
    Price: 40 USD 
    --- !translations 
    fr: 
        Math formulas: formules mathématiques 
        A book with math formulas: Un livre avec des formules mathématiques 
    
  • 分配ID,以可翻译实体和其他地方定义它们。
  • --- 
    Name: !t 1 
    Type: Book 
    Description: !t 2 
    Price: 40 USD 
    --- !translations 
    en: 
        1: Math formulas 
        2: A book with math formulas 
    fr: 
        1: formules mathématiques 
        2: Un livre avec des formules 
    

    在这2和3,你也可以有,而不必在一个文件中的所有翻译为每种语言一个语言文件。为了便于阅读,我建议您使用解决方案2(您可以在原始文档中看到英文文本,而不会与其他翻译混杂在一起,并且在附加的翻译文档中,您直接看到正在翻译的术语,并且消除了重复翻译

    +0

    我刚刚在我的问题中增加了另一个选项......它看起来更具可读性,不是吗?您认为如何? –

    +0

    没有理由拥有序列,您可以使用'EN:'和'FR:'没有破折号,另外,请在发布答案后不要改变问题。 – flyx