找出ResourceLoader.GetString使用的文化

时间:2013-01-28 16:35:47

标签: c# .net localization windows-store-apps pluralize

我打算开发一个本地化的Windows 8商店应用程序。 Microsoft建议使用resource files in tagged directories and the ResourceLoader class,所以 - 现在 - 这就是我打算做的事情。

对于简单的翻译,这很好用,例如:

var resourceLoader = new Windows.ApplicationModel.Resources.ResourceLoader();
string text = resourceLoader.GetString("FileDeletedMessage");
text = string.Format(text, fileName);

GetString自动将当前文化和首选语言与最合适的资源文件匹配,并返回相应的条目,例如: The file "{0}" was deletedDie Datei "{0}" wurde gelöscht。这是透明的。

但现在我也希望按照in the CLDR charts of the Unicode Consortium的要求实施适当的复数化。 AFAIK,.NET不支持这种开箱即用的权利,对吗?因此,我想使用或实现SmartFormat之类的东西。在这种情况下,GetString将返回类似{0} {0:file|files} {0:was|were} deleted的字符串。

问题:要将特定于文化的复数规则应用于此字符串,我需要知道字符串的文化。但GetString不提供它,只提供字符串本身。有没有办法查找字符串的文化? (我不想自己重新实现它。这很复杂!)

BTW,使用System.Globalization.CultureInfo.CurrentCultureCurrentUICulture代替不起作用,因为GetString不一定返回当前文化的直接匹配(考虑具有单一本地化的应用程序,英语,在法语上运行机)。

0 个答案:

没有答案