C# 在运行时访问本地化的 XML

标签 c# xml localization runtime

我有一个需要本地化的 C# 应用程序。我可以使用 RESX .NET MUI strategy要做到这一点。现在,我有一个单独的团队在构建/编译后提供额外的本地化资源(XML 文件)。我想利用 .NETs MUI 策略,它提供了一个很好的回退机制,但我似乎无法找到实现这一目标的方法。

请注意,我考虑过在我的应用程序的字符串资源文件中添加本地化文件名(我知道)。但是,如果在运行时该文件不存在,那么我就会遇到问题(并且无法自动回退)。

那么,有没有办法在这种情况下利用 .NET MUI 策略?

最佳答案

选项 1:

您可以将 XML 文件存储在资源中,然后获取一个流对象来读取它,它使用与字符串等相同的方法。参见 http://msdn.microsoft.com/en-us/library/zxee5096.aspx为此。

选项 2:

您也可以应用与资源本身相同的基本方法。我发现它对通常基于大量文件(.aspx、.html、.css、.js、.png 等)的 Web 应用程序很方便。假设您有一堆目录,例如:

localised/en/SomeFile1.xml(等等....) localised/en-US/SomeFile1.xml(等等……) 本地化/zh-CN/SomeFile.xml 本地化/fr/SomeFile.xml

我提出了我的 en-IE 偏好,你不匹配,但你匹配 en,这就足够了(好吧,理想情况下你应该选择 en-IE 比 en- 更接近 en-GB美国,但这完全属于奖励信用领域,并且比 .NET 更好地处理资源)。

你的匹配算法应该是:

  1. 尝试为所寻找的语言环境找到匹配项,如果找到则返回。
  2. 去掉语言环境的末尾,因此 en-GB-OED 变为 en-GB,en-GB 变为 en-,依此类推。如果这不能解决所有问题,请使用新的语言环境返回到步骤 1。
  3. 尝试 zxx(zxx 未被 .NET afaik 使用,但它与 BCP 47/RFC 4647 和 ISO 639 一起用于没有语言内容的项目 - 例如,您的护照照片是语言环境 zxx,因为法语文档与约鲁巴语或威尔士语文档一样合适)。
  4. 尝试使用您定义的“默认”语言环境(如果您的应用程序 promise 匹配良好,则出错)。

在这一点上,你会比资源文件做得更好。不过,大多数情况下,选项 1 要简单得多,而且更加独立。

关于C# 在运行时访问本地化的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12116149/

相关文章:

ruby - 如何使用 Ruby 将阿拉伯语/波斯语数字翻译成英语?

c# - #c (ArrayList) 中的集合在 for 循环或带有索引的 foreach 中

c# - 从 DataGrid 中删除空格

c# - 翻译解释一些C++位操作转C#

java - ClassNotFoundException : oracle. jdbc.OracleDriver

ios - Xcode 本地化和国际化 : Exporting for Localization (XLIFF) does not export Info. plist 条目

c# - 添加线程到线程数组

python - 什么是适用于 Python 的良好 XML 流解析器?

Android以编程方式将XML形状设置为可绘制

iphone - 本地化:如何获取当前用户的语言?