【问题标题】:Extract localizable strings from source code, aspx, xaml to resource files从源代码、aspx、xaml 中提取可本地化的字符串到资源文件
【发布时间】:2012-12-27 06:15:01
【问题描述】:

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

我有以下选择:

  1. Resource Refactoring tool,但它会提取所有字符串(无论您是否必须翻译),例如页眉等。我们不能标记或排除特定字符串。或者我们将不得不手动选择每个字符串,然后提取(右键单击并单击提取)。
  2. Resharper's Localization assistance,这里我没有看到自动提取,但我必须手动逐个提取字符串。

我知道必须进行一些人工干预,但任何建议都有助于在 gettext()(gnu gettext() c# or fairlylocal 或 MS 本地化方法之间选择正确的方向。

【问题讨论】:

  • 如果您使用的是 VS 2010,那么本地化 aspx/ascx 的最简单方法是在设计视图中使用工具->生成本地资源。此外,不要忘记在您的潜在本地化目标中包含 java 脚本和图像。最后,是否提取所有字符串以进行本地化并不重要 - 如果您不想本地化某些资源,则将其从特定于语言环境的资源文件中删除。默认逻辑将回退到该值的文化中立资源。
  • @VinayC:这对 aspx/ascx 有用,但我正在寻找一种可以从源代码和 xaml 中提取的解决方案。此外,当我有大约 300 个页面要处理时,每页(或用户控件)的资源文件看起来更麻烦,我希望我们可以将它们合二为一(如果有重复数据删除),但不确定性能影响.

标签: asp.net localization resharper globalization


【解决方案1】:

这两种方法各有利弊,让我们讨论一下。

相当本地化

(GNU Gettext) 首先,需要初步调整:

  1. 下载库和工具并转储到与您的项目相关的某个位置
  2. 修改您网站的基本页面对象(手动干预)
  3. 为您的 Web 项目添加一个构建后步骤,该步骤将运行 xgettext 并更新您的 .po 文件

第二,字符串提取已由FairlyLocal 自己处理。 第三,字符串的翻译可以在内部完成或外包,因为 PO 文件被 linguists 广为人知。 第四,一些 UTF-8 字符(如果有)的渲染依赖于 webfonts {eot (trident), svg (webkit, gecko, @ 987654332@)}。 第五,需要维护语言环境(如pa-INlanguageCode-countryCode)。 第六,有几个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 本地化

首先,使用Resource Refactoring Tool 提取字符串非常简单。 第二,resgen.exe 命令行工具可用于制作.resx 文件linguists 友好。

resgen /compile examplestrings.xx.resx,examplestrings.xx.txt

第三,.NET 中的本地化(不特定于 ASP.NET Proper 或 ASP.NET MVC)实现了标准的回退机制。 第四个,不依赖于GNU Gettext Utils第五,可以使用CurrentUICulture和CurrentCulture实现从StringsDatesCurrency等的本地化。 第六,这里也推荐使用网络字体。

谢谢。

【讨论】:

  • 感谢您详细说明。资源重构工具会生成自己的键,例如 res1、res2 等,我想我必须手动更改每个键以赋予键更多意义,如果我没记错的话,这是一个痛点。作为键的文本在我看来更直接,就像在 PO 文件中一样。
  • 是的,在维护翻译的同时,您总能找到更好的 PO 文件。看看github.com/7Pass/GettextUtils/tree/master/Resx2Po
  • 经过全面评估,Gettext是国际化的。对于 asp.net,我将使用 FairlyLocal,对于 silverlight 和 WPF,我将使用 this。不过,必须扩展方法以使用 silverlight。
  • 哦!伟大的。我还首先寻找 Gettext 实现。 This 可能会增加您对 GNU Gettext 的理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多