问题标签 [internationalization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
406 浏览

c++ - 在代码中管理大量文本(并且还支持翻译)的最佳方法是什么?

我正在开发一个应用程序,它有很多文本和不同的模块,可以包含或不包含在每个构建中。

对于每个保存的项目,我们会自动生成一份包含所有详细信息的报告(即,该项目中使用的算法的描述等)。目前我们将所有文本作为字符串嵌入到源代码中,我们还通过 po 和 mo 文件支持不同的语言。

该系统的优点是动态生成文档和报告文件非常容易。不好的一点是源代码中有很多文本很难看,格式(即使用html)不舒服,文本编辑很困难,拼写检查不方便,翻译也很糟糕。

所以,最后一个问题是:你是宁愿在代码中嵌入文档还是为不同的语言编写外部文档文件(例如 html)并在运行时解析它们?显然是软件的核心文本,我们这样的消息框无论如何都会留在代码中。

如果重要的话,我正在使用 wxWidgets 使用 C++。

0 投票
2 回答
1829 浏览

objective-c - NSDateFormatter 不会使用语言环境设置解析日期?

我正在尝试使用用户的日期首选项解析日期

当我将我的地区(在国际系统首选项中)设置为美国时,它会打印:

当我的地区是英国时,它会打印:

看起来 NSDateFormatter 对区域的变化不敏感。但是请注意,日期的原始打印会随着区域正确切换。

我该怎么做才能让 NSDateFormatter 尊重区域设置?

0 投票
2 回答
1349 浏览

java - How to create own header.jsp in JBoss Portal with language support?

I want to create own header.jsp file instead of the one included in the JBoss Portal 2.6 but have to support the locale set by the user.

The original header.jsp does not contain any i18n and I don't know how to do it, especially how to get the actual locale.

0 投票
5 回答
1422 浏览

php - 在php中翻译多种语言

我正在开发一个应该接受多种语言输入的小型解析器。我将有大约 50 个字符串作为解析输入的关键字/锚。在 PHP 中,组织这些翻译后的关键字的最佳方式是什么?

我想到的一种可能的解决方案是使用关联数组。像这样:

然后我可以使用以下内容访问:

有没有更好的、经过验证的方法来处理一堆翻译成多种语言的短字符串?

0 投票
1 回答
2316 浏览

apache - UTF-8 URI 爆炸 Apache & mod_rewrite

我有带有 mod_rewrite 的 Apache,每当我输入一个带有重音字符的 URI 时,Apache 都会给我一个“找不到页面”错误。

URI 是:/places/tags/Café

我的页面编码是 UTF-8。我的数据库连接和表是 UTF-8。我的 Apache DefaultCharacterSet = UTF-8。是的,Apache 有语言包,但我相信它们用于页面内容,而不是 URI。

我们不希望将 url 编码成百分号和 html 实体,在我们的 1 亿行数据中,去除特殊字符目前是不切实际的。

任何帮助将不胜感激。

0 投票
7 回答
6739 浏览

wpf - 几年内将桌面应用程序国际化……我们现在应该做什么?

因此,我们确信我们将把我们的产品推向国际,并最终需要将其国际化。在我们进行的过程中,您建议我们进行多少国际化?

我想换句话说,是否有任何国际化现在很容易,但如果我们让代码库成熟,并且如果我们选择现在开始这样做不会让我们非常慢,那么国际化会变得更糟吗?

使用的技术:C#、WPF、WinForms

0 投票
6 回答
8384 浏览

html - 您如何处理带有标记的文本翻译?

我正在为我们的网络应用程序开发多语言支持。我们在gettext库周围使用Django 的助手。一切都出乎意料地简单,除了如何处理包含重要 HTML 标记的句子的问题。这是一个简单的例子:

以下是我能想到的方法:

  1. 更改链接以包含整个句子。不管在这种情况下改变是否是一个好主意,这个解决方案的问题是,当两者在理想情况下独立时,UI 变得依赖于 i18n 的需求。

  2. 将上面的整个字符串标记为翻译(包括格式)。然后,翻译字符串也将直接包含 HTML。问题在于更改 HTML 格式需要更改所有翻译。

  3. 紧密耦合多个翻译,然后使用字符串插值来组合它们。例如,短语“请 %s 继续”和“登录”可以分别标记为翻译,然后合并。“登录”被本地化,然后包装在 HREF 中,然后插入到翻译的短语中,这使 %s 保持在翻译中以标记链接应该去哪里。这种方法使代码复杂化并破坏了翻译字符串的独立性。

还有其他选择吗?其他人是如何解决这个问题的?

0 投票
2 回答
4810 浏览

.net - 枚举 resx 中的所有字符串

我们想枚举 .NET 资源文件(resx 文件)中的所有字符串。我们希望它生成一个包含所有这些键值对的 javascript 对象。我们现在使用这样的代码对附属程序集执行此操作(这是 VB.NET,但任何示例代码都可以):

但是,遗憾的是,我们还没有找到对 .resx 文件执行此操作的方法。我们如何枚举 resx 文件中的所有本地化字符串?

更新:

根据 Dennis Myren 的评论和这里的想法,我构建了一个 ResXResourceManager。现在我可以对 .resx 文件执行与嵌入资源相同的操作。这是代码。请注意,Microsoft 将所需的构造函数设为私有,因此我使用反射来访问它。使用它时您需要完全信任。

0 投票
10 回答
12655 浏览

internationalization - i18n - 国际化的最佳实践 - XLIFF, gettext, INI, ...?

编辑:我真的很想看到一些关于格式、优缺点的一般性讨论!

EDIT2:'赏金并没有真正帮助创建所需的讨论,有一些有趣的答案,但仍然缺少对该主题的全面报道。六个人将该问题标记为最喜欢的问题,这表明我对此讨论很感兴趣。

在决定国际化时,IMO 最困难的部分是存储格式的选择。

例如,Zend PHP 框架提供了以下适配器,几乎涵盖了我的所有选项:

  • 数组:不,难以维护
  • CSV:不知道,编码可能有问题
  • Gettext : 经常使用,poEdit 适用于所有可用但复杂的平台
  • INI : 不知道,编码可能有问题
  • TBX:不知道
  • TMX:太大了?没有免费的编辑器。
  • QT:不是很普遍,没有免费工具
  • XLIFF:即将到来的标准?但没有可用的免费工具。
  • XMLTM:不,不是我需要的

基本上我坚持使用 4 个“大胆”的选择。我想使用 INI 文件,但我正在阅读有关编码问题的信息……如果我使用严格的 UTF-8(文件、连接、数据库等),这真的有问题吗?

我在 Windows 上,我试图弄清楚 poEdit 的功能,但没有管理。网络上也没有教程,gettext仍然是一种选择还是濒临灭绝的物种?

XLIFF怎么样,有人用过吗?关于使用什么工具的任何提示?

任何关于Eclipse集成这些技术的想法?

0 投票
4 回答
2766 浏览

java - 基于插件的程序中的语言环境和资源包

我们需要开始为我们的程序添加国际化。谢天谢地,还不是全部,只是一点点,但我希望我们这样做的方式可以扩大到可能覆盖整个程序。问题是,我们的程序是基于插件的,所以并不是所有的字符串都属于同一个地方。

据我了解,Java 的ResourceBundle工作是这样的。您创建了一个扩展类ResourceBundle,称为类似的类MyProgramStrings,以及特定于语言的类,称为MyProgramStrings_frMyProgramStrings_es。这些类中的每一个都将键(字符串)映射到值(任何对象)。从哪里获取数据取决于这些类中的每一个,但它们的常见位置是属性文件。

您在两个阶段查找值:首先您获得正确的捆绑包,然后查询它以获取您想要的字符串。

但是,我们需要将多个语言环境的结果组合到一个资源空间中。例如,插件需要能够覆盖已定义的字符串,并在代码查找该字符串时返回该新值。

我有点迷失在这一切中。有人可以帮忙吗?


更新:大卫沃特斯问:

我已经把我的答案放在了底部,但我很想听听你是如何解决这个问题的。

好吧,我们还没有走多远——长期的 WIBNI 总是成为最新危机的受害者——但我们基于插件实现的接口,约定资源与接口具有相同的完全限定名称.

所以一个接口UsersAPI可能有各种不同的实现。默认情况下,该接口上的方法getBundle()返回等效于 ResourceBundle.get("...UsersAPI", locale). 可以替换该文件,或者如果用户需要更复杂的内容,UsersAPI 的实现可以覆盖该方法。

到目前为止,这可以满足我们的需要,但我们仍在寻找基于插件的更灵活的解决方案。