在 WPF 应用程序中运行时枚举已翻译的 .resx 资源

发布于 2024-07-22 07:17:49 字数 322 浏览 2 评论 0原文

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

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

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

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

I've been doing localization for my WPF application by storing strings in .resx files. My default (english) string resource is strings.resx. For other languages are called strings.fr-FR.resx for French, strings.es-ES.resx for Spanish and so on.

This method of localization has been great as my app will automatically load up the right string when I set the Globalization region to a matching locale, and defaults to English when there isn't.

Is it possible at runtime to enumerate which languages are in my Assembly?

I could get around this and hard code in which languages are included, but this can change from build to build as a build server is putting together the language resx's and building dynamically.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝天白云 2024-07-29 07:17:49

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

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

I see two options, none of which is ideal...

  • Enumerate all known cultures (CultureInfo.GetCultures), and try to get a given ressource for this culture => simple but slow
  • Look for satellite assemblies in your application's directory : for each subdirectory, check if it's name corresponds to a culture name (CultureInfo.GetCultureInfo), and if it contains a .resources.dll file
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文