我一直通过在 .resx 文件中存储字符串来为我的 WPF 应用程序进行本地化。我的默认(英语)字符串资源是 strings.resx。对于其他语言,法语称为 strings.fr-FR.resx,西班牙语称为 strings.es-ES.resx,依此类推。

这种本地化方法非常棒,因为当我将全球化区域设置为匹配的区域设置时,我的应用程序会自动加载正确的字符串,而如果没有,则默认为英语。

是否可以在运行时枚举我的程序集中包含哪些语言?

我可以绕过这个问题以及包含语言的硬代码,但是随着构建服务器将语言 resx 组合在一起并动态构建,这可能会随着构建而改变。

有帮助吗?

解决方案

我看到两个选择,但没有一个是理想的......

  • 枚举所有已知的文化(CultureInfo.GetCultures),并尝试获取该文化的给定资源=>简单但缓慢
  • 在应用程序的目录中查找附属程序集:对于每个子目录,检查其名称是否对应于区域性名称 (CultureInfo.GetCultureInfo),以及是否包含 .resources.dll 文件
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top