作为基于asp.net,c#,silverlight,XBAP的应用程序国际化的一部分,我正在评估开始的方法。我必须在GNU gettext()(PO files)和Microsoft的资源(resx)方法之间进行选择。所以在这个时刻,我试图了解如果我必须采用MS方式,从.cs文件,aspx,ascx,xaml(silverlight)文件到资源文件(resx)自动提取可本地化字符串的最佳方法是什么。
我有以下选项:
我知道必须进行一些人工干预,但任何建议都有助于在gettext()(gnu gettext() c# or fairlylocal或MS本地化方法之间选择正确的方向。
答案 0 :(得分:7)
两种方法都有利有弊,我们来讨论。
(GNU Gettext
) 首先 ,需要进行初步调整:
第二 ,字符串提取由FairlyLocal
本身处理。
第三 ,字符串的翻译可以在内部完成或外包,因为linguists
广泛知道PO文件。 第四 ,呈现几个UTF-8字符(如果有)取决于网络字体{eot(trident
),svg(webkit
,{ {1}},gecko
)}。 第五 ,需要维护区域设置(例如presto
pa-IN
)。 第六 ,有几个converters可用于PO文件。 第七 ,默认逻辑将回退到该值的默认区域设置(en-US)资源。 一个问题 ,The .po files that the build script generates won't be UTF8 by default. You'll need to open them in POEdit (or similar) and explicitly change the encoding the first time you edit them if you want your translated text to correctly show special characters。
首先 ,使用languageCode-countryCode
提取字符串非常简单。 second ,resgen.exe命令行工具可用于使.resx文件Resource Refactoring Tool
友好。
linguists
第三 ,.NET中的本地化(不是特定于ASP.NET Proper或ASP.NET MVC)实现了标准的回退机制。 第四 ,不依赖于resgen /compile examplestrings.xx.resx,examplestrings.xx.txt
。 第五 ,可以使用CurrentUICulture和CurrentCulture实现从GNU Gettext Utils
到Strings
,Dates
等的本地化。 第六 ,此处也推荐使用网络字体。
感谢。