2013-07-16 72 views
1

我如何在我的wpf项目中支持库尔德语言? 我创建了不同的文化(本地化)资源文件C#库尔德语言本地化

French -> fr 
English -> en 
Arabic -> ar 
. 
. 
. 

Kurdish -> ??? 

如果窗户剂量不支持这种语言,我该如何使用CultureAndRegionInfoBuilder类添加这种文化? 有没有其他的方法?

回答

3

区阿

所有支持的代码here

+0

我有消息 **文化不被支持。 参数名称:名称 ku-Arab是一个无效的文化标识符** 当我编写'CultureInfo.GetCultureInfo(“ku-Arab”)' –

+0

@AmjadSham:尝试'ku'首先,也许。此外,受支持文化的列表可能会根据您的操作系统的年龄而变化。在我的Windows 10上,我有库尔德(中央库尔德),库阿拉(中央库尔德语(阿拉伯语)),库拉阿拉伯智商(中央库尔德人(伊拉克))和库拉阿拉伯国家联盟(库尔德人(Perso-Arabic,伊朗))。现在,在一个古老的Windows版本上尝试相同的可能会失去其中的一些。 – Joey

+0

指向受支持列表的链接是指Bing Maps REST API。我以某种方式怀疑WPF的相关性...... – Joey

-1

此代码演示了如何使用CultureAndRegionInfoBuilder库尔德本地化增加系统的文化类型。请注意,代码注册文化UserCustomCulture存储。此代码仅适用于Windows 7或更低版​​本。在Windows 10不能正常工作(我认为也是Windows 8)。在Windows 10中已经有库尔德文化库阿拉伯了。

class Program 
{ 
    static void Main(string[] args) 
    { 
     BuildCulture(); 
    } 

    public static void BuildCulture() 
    { 
     if(cultureExist()) 
      CultureAndRegionInfoBuilder.Unregister("ku-KU"); 
     Console.WriteLine("Create the CultureAndRegionInfoBuilder..."); 

     var cib = new CultureAndRegionInfoBuilder("ku-KU", CultureAndRegionModifiers.None); 
     cib.CultureEnglishName = "Kurdish (Kurdistan)"; 
     cib.RegionEnglishName = "Kurdistan"; 
     cib.CultureNativeName = "ßæÑÏí"; 
     var cia = new CultureInfo("ar-IQ"); 
     cib.NumberFormat = cia.NumberFormat; 
     cib.GregorianDateTimeFormat = cia.DateTimeFormat; 
     cib.TextInfo = cia.TextInfo; 
     cib.CompareInfo = cia.CompareInfo; 
     cib.KeyboardLayoutId = cia.KeyboardLayoutId; 
     cib.RegionNativeName = "ßæÑÏÓÊÇä"; 
     cib.ThreeLetterISOLanguageName = "kur"; 
     cib.ThreeLetterISORegionName = "kur"; 
     cib.TwoLetterISORegionName = "ku"; 
     cib.ThreeLetterWindowsRegionName = "kur"; 
     cib.ISOCurrencySymbol = "USD"; 
     cib.CurrencyNativeName = "Dinary Kurdi"; 
     cib.CurrencyEnglishName = "Kurdish Dinar"; 

     var cinull = new CultureInfo(""); 
     cib.Parent = cinull; 
     cib.ThreeLetterWindowsLanguageName = "kur"; 
     cib.TwoLetterISOLanguageName = "ku"; 
     cib.IetfLanguageTag = "kurdisk"; 
     cib.Register(); 
     cib.Save(@"C:\temp\kurdish.xml"); //Save created culture to XML document 

     Console.WriteLine("Create and explore the custom culture..."); 
     var ci = new CultureInfo("ku-KU"); 
     Console.WriteLine("Name: . . . . . . . . . . . . . {0}", ci.Name); 
     Console.WriteLine("EnglishName:. . . . . . . . . . {0}", ci.EnglishName); 
     Console.WriteLine("NativeName: . . . . . . . . . . {0}", ci.NativeName); 
     Console.WriteLine("TwoLetterISOLanguageName: . . . {0}", ci.TwoLetterISOLanguageName); 
     Console.WriteLine("ThreeLetterISOLanguageName: . . {0}", ci.ThreeLetterISOLanguageName); 
     Console.WriteLine("ThreeLetterWindowsLanguageName: {0}", ci.ThreeLetterWindowsLanguageName); 
     Console.Read(); 
    } 

    //Register culture from XML file 
    private void cmdCreateCultureFromXML() 
    { 
     if(cultureExist()) 
      CultureAndRegionInfoBuilder.Unregister("ku-KU"); 

     CultureAndRegionInfoBuilder cib = CultureAndRegionInfoBuilder.CreateFromLdml(@"C:\temp\kurdish.xml"); 
     cib.Register(); 
    } 

    private static bool cultureExist() 
    { 
     var cultures = CultureInfo.GetCultures(CultureTypes.UserCustomCulture); 

     return cultures.Where(s => s.Name == "ku-KU").Any(); 
    } 

} 

了解更多:Time to Add Kurdish Culture to VS .NET Globalization

+0

你是什么意思? –

+0

你在这个答案中包含的代码的目的是什么,***没有***解释呢?哪个BTW通常被认为是“低质量答案”。所以请添加一些关于这段代码应该做什么的解释,以及它如何回答实际问题。祝你好运! –

+0

我认为'ßæÑÏí'是一种文化的不好名字...... – Joey