我正在开发一个项目,该项目有一个Web应用程序模块,可根据请求生成本地化的电子邮件。该应用程序需要多种语言的html模板本地化。我决定使用asp.net资源文件,因为电子邮件布局不太可能改变,所需的密钥量相对较小。
我正在使用全局资源,并且有大约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值,应用程序编译没有问题,但似乎每当我请求阿拉伯语电子邮件时,应用程序都找不到阿拉伯语资源文件。
有什么想法吗?我真的很感激任何点击和帮助!
干杯!
答案 0 :(得分:1)
请使用没有文化信息的语言 例如。 EmailTemplates.ar.resx
因为您使用的浏览器可能没有不同文化中的阿拉伯语,因为我使用我的Chrome检查。或尝试添加该文化语言。示例ar-AE ar-SA等,但无论如何它有阿拉伯语没有文化,它的工作原理。