我试图了解如何管理和翻译 Orchard PO 文件,如下所述: http ://weblogs.asp.net/bleroy/archive/2011/01/13/creating-and-maintaining-orchard-translations.aspx
当我尝试使用在互联网上找到的一些编辑器时,问题就开始了,我注意到:
- Vandelay.TranslationManager 生成的果园翻译文件可能无效
- 在外部编辑器中编辑的文件可能会破坏 PO 翻译文件并阻止使用同步(有效键被标记为过时,新键被添加为未翻译)
首先,我试图获得 PO 文件格式的可靠解释,我在这里找到:http: //pology.nedohodnik.net/doc/user/en_US/ch-poformat.html
规格摘要:
- PO 文件中的消息由其 msgid 字符串唯一标识
- 当在不同的文件中使用相同的 msgid 时,可以使用可选的上下文来区分相同的 msgid
在 Vandelay.TranslationManager 和所有翻译文件中挖掘了一下之后,我想我找到了问题所在。
Vandelay.TranslationManager 将两个值的组合假定为唯一键: - #| msgid(用作翻译键) - msgctxt(可选上下文,在 Orchard 中始终定义)
问题是 Vandelay.TranslationManager 用作唯一键 "#| msgid" 而不是 "msgid" "#| msgid" 用于模糊字符串并说明以前未翻译的字符串,在果园中用作额外信息,看起来更像是“ #。”
提取的 PO 文件示例:
#: ~/Modules/nwazet.commerce/Module.txt
#| msgid "Nwazet.Commerce.Category"
msgctxt ~/Modules/nwazet.commerce/Module.txt
msgid "Commerce"
msgstr "Commerce"
#: ~/Modules/nwazet.commerce/Module.txt
#| msgid "Nwazet.Bundles.Category"
msgctxt ~/Modules/nwazet.commerce/Module.txt
msgid "Commerce"
msgstr "Commerce"
请注意,即使“#| msgid”不同,根据规范,上面的两个条目确实是重复的。
现在的问题是:这只是一个错误还是一个精确的设计?Afaik Vandelay.TranslationManager 是在 Orchard 中处理 Po 文件的推荐方法。还有其他人在使用此功能时遇到问题吗?谢谢