簡體   English   中英

如何在C#中獲取某個國家的主要CultureInfo?

[英]How to get the main CultureInfo for a country in c#?

我正在研究需要本地化貨幣格式的asp.net mvc應用程序。 因此,我決定讓用戶選擇可以使用RegionInfo查找貨幣符號的國家/地區,並在CultureInfo上運行查詢,並將第一個結果設置為用戶的文化。 這是我的代碼:

        public string GetPrimaryUICulture(string CountryCd) {
        CultureInfo Info;
        var _CultureInfox = new System.Globalization.RegionInfo(CountryCd);
        var _CultureInfo = CultureInfo.GetCultures(CultureTypes.SpecificCultures).Where(c => c.Name.EndsWith(CountryCd)).ToList();
        if (_CultureInfo.Count == 0)
        {
            Info = new CultureInfo("en-US");
        }
        else
        {

            Info = _CultureInfo.Where(p => p.NumberFormat.CurrencySymbol == _CultureInfox.CurrencySymbol).FirstOrDefault();
           // Info = _CultureInfo.Where(p => p.TwoLetterISOLanguageName.Equals("en")).FirstOrDefault();
            if (Info == null)
            {
                Info = _CultureInfo.Where(p => p.TwoLetterISOLanguageName.Equals("en")).FirstOrDefault();
                if (Info == null)
                {
                    Info = _CultureInfo.FirstOrDefault();
                }
            }
        }
        return Info.Name;
    }

現在的問題是,如果我將CountryCd設置為“ IN”,則從上述函數中得到的結果是as-IN,為此我沒有angularjs i18n文件; 我所擁有的是嗨。

另一個解決方案是檢索與en-{{CountryName}}匹配的CultureInfo,但是存在貨幣問題。 對於印度,這有效,但對於馬來西亞(en-MY),它給出$而不是RM。

如果情況變得更糟,我必須硬編碼為:如果輸入IN,然后輸入Hi-IN,如果輸入MY,則輸入MS-MY。 如果CH,然后ZH-CN等...我真的不想做。

希望您能理解我所面臨的問題,對於我的英語不好,抱歉,如果您需要進一步的說明,請告訴我。

在Web應用程序中,您可以簡單地分析HTTP語言/區域標頭,而不必嘗試從自定義字段中猜測它。

安裝程序中的大多數瀏覽器會首先設置有效的語言環境。

詳細在這里:

http://matthewwittering.com/blog/internationalization-localization/http-headers.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM