我正在尝试为我的网站实现不同的语言,到目前为止我的设置没有问题。
我创建了Language.en.resx,Language.nl.resx等,并将它们放在App_GlobalResources文件夹中。 然后使用代码blewlo我允许用户设置他们喜欢的语言
protected override void InitializeCulture()
{
if (string.IsNullOrEmpty(site_language))
{
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-GB");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
}
else
{
this.UICulture = site_language;
this.Culture = site_language;
base.InitializeCulture();
}
}
但这不适用于Azerbeycani语言。当我创建Language.az.resx并通过az-AZ设置时,我得到错误说
System.ArgumentException
不支持文化名称'az-az'。参数名称:名称 System.ArgumentException:不支持文化名称'az-az'。 参数名称:名称 在System.Globalization.CultureTableRecord..ctor(String cultureName,Boolean useUserOverride) 在System.Globalization.CultureTableRecord.GetCultureTableRecord(String name,Boolean useUserOverride) 在System.Globalization.CultureInfo..ctor(String name,Boolean useUserOverride) 在System.Web.HttpServerUtility.CreateReadOnlyCultureInfo(String name) 在System.Web.UI.Page.set_UICulture(String value) 在SiteBasePage.InitializeCulture() 在ASP.mobile_default_aspx .__ BuildControlTree(mobile_default_aspx __ctrl) 在ASP.mobile_default_aspx.FrameworkInitialize() 在System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint) 在System.Web.UI.Page.ProcessRequest() 在System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) 在System.Web.UI.Page.ProcessRequest(HttpContext上下文) at ASP.mobile_default_aspx.ProcessRequest(HttpContext context) 在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)
我检查了http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(VS.71).aspx并注意到没有az-Az而是az-AZ-Latn。问题是,当我使用az-AZ-Latn设置语言时,我得到同样的错误。
我见过并试过http://support.microsoft.com/kb/939949,但它不适用/工作
有人有微笑问题吗?
答案 0 :(得分:4)
您是否按照KB article?
中的说明尝试了新的文化名称az-Latn-AZ
您的应用是否有可能截断文化名称?
我只是因为我的控制台应用程序使用这种文化没有问题:
var name = "az-Latn-AZ";
var sc = CultureInfo.CreateSpecificCulture(name);
Console.WriteLine(sc.NativeName);
Console.WriteLine(42.ToString("C", sc));
打印:
Az?rbaycan-ili (Az?rbaycanca) 42,00 man.