从源代码,aspx,xaml中提取可本地化的字符串到资源文件

时间:2012-12-27 06:15:02

标签: asp.net localization resharper globalization

作为基于asp.net,c#,silverlight,XBAP的应用程序国际化的一部分,我正在评估开始的方法。我必须在GNU gettext()(PO files)和Microsoft的资源(resx)方法之间进行选择。所以在这个时刻,我试图了解如果我必须采用MS方式,从.cs文件,aspx,ascx,xaml(silverlight)文件到资源文件(resx)自动提取可本地化字符串的最佳方法是什么。

我有以下选项:

  1. Resource Refactoring tool,但它会提取所有字符串(无论您是否需要翻译),例如页眉等。我们无法标记或排除特定字符串。或者我们必须手动选择每个字符串,然后提取(右键单击并单击提取)。
  2. Resharper's Localization assistance,这里我没有看到自动提取,但我必须手动提取字符串。
  3. 我知道必须进行一些人工干预,但任何建议都有助于在gettext()(gnu gettext() c# or fairlylocal或MS本地化方法之间选择正确的方向。

1 个答案:

答案 0 :(得分:7)

两种方法都有利有弊,我们来讨论。

FairlyLocal

GNU Gettext 首先 ,需要进行初步调整:

  1. 下载库&工具和转储在与项目相关的某个地方
  2. 修改站点的基页对象(手动干预)
  3. 在您的Web项目中添加一个构建后步骤,该步骤将运行xgettext并更新您的.po文件
  4. 第二 ,字符串提取由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

    MS本地化

    首先 ,使用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 UtilsStringsDates等的本地化。 第六 ,此处也推荐使用网络字体。

    感谢。