我有一个需要本地化的 C# 应用程序。我可以使用RESX .NET MUI 策略来做到这一点。现在,我有一个单独的团队在构建/编译后提供额外的本地化资源(XML 文件)。我想利用 .NETs MUI 策略,它提供了一个很好的回退机制,但我似乎无法找到实现这一目标的方法。
注意,我考虑过在我的应用程序的字符串资源文件中添加本地化文件名(我知道)。但是,如果在运行时该文件不存在,那么我会遇到问题(并且无法自动回退)。
那么,有没有办法在这种情况下利用 .NET MUI 策略?
我有一个需要本地化的 C# 应用程序。我可以使用RESX .NET MUI 策略来做到这一点。现在,我有一个单独的团队在构建/编译后提供额外的本地化资源(XML 文件)。我想利用 .NETs MUI 策略,它提供了一个很好的回退机制,但我似乎无法找到实现这一目标的方法。
注意,我考虑过在我的应用程序的字符串资源文件中添加本地化文件名(我知道)。但是,如果在运行时该文件不存在,那么我会遇到问题(并且无法自动回退)。
那么,有没有办法在这种情况下利用 .NET MUI 策略?
选项1:
您可以将 XML 文件存储在资源中,然后获取一个流对象来读取它,它使用与字符串等相同的方法。请参阅http://msdn.microsoft.com/en-us/library/ zxee5096.aspx为此。
选项 2:
您也可以应用与资源自己使用的基本方法相同的基本方法。我发现 Web 应用程序很方便,这些应用程序通常基于大量文件(.aspx、.html、.css、.js、.png 等)。假设您有一堆目录,例如:
localised/en/SomeFile1.xml(等等....) localised/en-US/SomeFile1.xml(等等....) localised/en-GB/SomeFile.xml localised/fr/SomeFile.xml
我带着我的 en-IE 偏好来了,你不匹配,但你匹配 en 并且这已经足够好了(好吧,理想情况下,你应该选择 en-IE 比 en-US 更接近 en-GB,但是这完全属于奖励信用领域,并且比 .NET 对资源的处理要好得多)。
您的匹配算法应该是:
zxx
.NET afaik 不使用它,但它与 BCP 47/RFC 4647 和 ISO 639 一起用于没有语言内容的项目 - 例如,您的护照照片是区域设置 zxx,因为它与约鲁巴语或威尔士语的法语文件)。到那时,您将比资源文件做得更好。尽管如此,大多数情况下,选项 1 更简单,而且更加独立。