2013-07-16 92 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