繁体   English   中英

如何在C#.net Web应用程序中无论当前区域性如何获取特定的资源字符串

[英]How to get specific resource string regardless of current culture in c# .net web app

我需要向用户发送批量电子邮件,但是他们有不同的语言首选项。 电子邮件位于资源文件中:Email.resx,Email.fr.resx

如何强制从另一个获取字符串? 例如,说我以en-CA文化登录,但是我想发送法文电子邮件吗?

我试过了:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("fr-CA");

System.Resources.ResourceSet rSet = Resources.Emails.ResourceManager.GetResourceSet(ci ,true, false);

string bodyMessageResource = rSet.GetString("EmailBody");

但是rSet为空。

我只希望能够选择自己选择的语言字符串。

我想你快到了。 尝试这个:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("fr-CA");
ResourceManager resourceManager = new ResourceManager("MyResource", Assembly.GetExecutingAssembly());
string bodyMessageResource = resourceManager.GetString("EmailBody", ci);

我试图使用您的资源的全名空间,我在那里呆了将近3个小时才能弄清楚; 使用线程设置当前的区域性信息。

Application.CurrentCulture = new System.Globalization.CultureInfo("fr");
System.Threading.Thread.CurrentThread.CurrentUICulture = Application.CurrentCulture;
ResourceManager resourceManager = new ResourceManager("ProjectName.ResourcesFolder.MainApplicationResource", System.Reflection.Assembly.GetExecutingAssembly());
string msg = resourceManager.GetString("yourResourcedMsgName");

尝试这个:

ResourceManager resourceManager = FrenchLanguage.ResourceManager;
string msg = resourceManager.GetString("MyString");

您可以将CultureInfo传递给Ressource文件,而不是更改当前踩的区域性。 我写了这个扩展方法,它从我的core。{language-code} .resx文件返回翻译后的字符串。

public static string Translate(this string resourceId, CultureInfo cultureInfo)
{            
    return Resources.Text.Core.ResourceManager.GetString(resourceId, cultureInfo) ?? String.Format("Missing translation for Core resx ResourceId '{0}'", resourceId);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM