我正在开发一个具有 Web 应用程序模块的项目,该模块可根据请求生成本地化电子邮件。该应用程序需要多种语言的 html 模板本地化。我决定使用 asp.net 资源文件,因为电子邮件布局不太可能改变,并且所需的密钥数量相对较少。
我正在使用 Global Resources,并且为所需的语言环境提供了大约 15 个不同的资源文件。我有英文的默认资源文件(“EmailTemplates.resx”),然后是几个本地化资源文件(“EmailTemplates.ru-RU.resx”、“EmailTemplates.zh-CN.resx”、“EmailTemplates.it-IT.resx” ”、“EmailTemplates.id-ID.resx”等)。
在资源文件中,我有两个阿拉伯文文件:“EmailTemplates.ar-AE.resx”实际上是英文的,“EmailTemplates.ar-SA.resx”是阿拉伯文的。
非阿拉伯语语言环境的所有电子邮件都可以正常工作。该应用程序选择所需的语言环境并使用相应的资源文件。但是当我尝试请求阿拉伯语时,它总是回退到默认资源文件。
我设置文化的方式是基于请求的数据,而不是浏览器设置:
Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
在调试时,我可以看到 CultureInfo 已正确设置为“ar-SA”或“ar-AE”,但是当应用程序检索相应的资源值时,它总是选择默认值。
我在默认资源文件中输入了阿拉伯语数据以进行测试,并且阿拉伯语文本显示得很好,所以我确定这不是字体或 HTML 布局问题。
我在互联网上进行了搜索,证明了不同的方法,但没有运气。“ar-SA”和“ar-AE”是有效的 CultureInfo 值,应用程序编译没有问题,但似乎每当我请求阿拉伯语电子邮件时,应用程序都找不到阿拉伯语资源文件。
有任何想法吗?我真的很感激任何点击和帮助!
干杯!