从国际电话代码中查找语言环境[重复]

Posted

技术标签:

【中文标题】从国际电话代码中查找语言环境[重复]【英文标题】:Find locale from International calling code [duplicate] 【发布时间】:2018-09-06 07:35:36 【问题描述】:

我已经在数据库中保留了国际电话代码(电话代码),如下所示。

客户表列

名字 姓氏 电子邮件 电话号码

示例电话代码

+46

+44

+47

预期结果

var phoneCode = "+47"; //
var cultureInfo = <some way to achieve it by using phoneCode>

由于我已经在表格中保留了电话代码,我想知道是否可以从电话代码中获取区域设置,而不是使用单独的列来保留区域设置。我对此进行了很多搜索,但找不到任何有用的东西。

【问题讨论】:

有很多有用的信息。甚至还有带有国际国家代码的a Wikipedia article。一个简单的字典或查找表就足以将代码与国家/地区匹配,并从那里匹配以该国家/地区代码开头的 CultureInfo 对象。您是否正在寻找现成的数据库或库,因此您不需要自己填写表格? @PanagiotisKanavos 是的,我知道***中有很多关于国际国家代码的信息。我想要的是从国际电话代码中获取国家语言(区域设置)。有什么方法可以完成吗? 你的语言环境是什么意思?从字面意义上说,区域设置 国家,您已经通过其两个字母的 ISO 代码知道该国家/地区。在 .NET 中,它是一个 CultureInfo 对象。在数据库中,它是表的排序规则。 CultureInfo 代码以两个字母的国家/地区代码开头,因此您已经了解与特定调用代码匹配的所有区域设置。有用于其他文化的查找表,以涵盖奥地利的 de-AT 等案例。数据库排序规则有更复杂的名称。 @PanagiotisKanavos 是的,我的意思是 CultureInfo 对象。目前我的数据库中没有两个字母的国家代码,但我有呼叫代码。我要问的是,有没有办法通过调用 c# 中的代码来获得文化 如果区域设置是指语言代码,请注意国际拨号代码和语言代码之间的翻译并非适用于所有国家(甚至一般情况下)。示例:+41 代表瑞士,但您如何决定是选择德语、法语、意大利语还是 Rumantsch 作为语言环境? 【参考方案1】:

在此post 中,前缀国家/地区编号由字典使用 ISO 3166-1 2 代码检索。

public static string getCountryCode(string PhoneCode)

    var dictionary = new Dictionary<string, string>();

    dictionary.Add("AC", "+247");
    dictionary.Add("AD", "+376");
    dictionary.Add("AE", "+971");
    dictionary.Add("AF", "+93");
    dictionary.Add("AG", "+1-268");
    dictionary.Add("AI", "+1-264");
    dictionary.Add("AL", "+355");
    dictionary.Add("AM", "+374");
    dictionary.Add("AN", "+599");
    dictionary.Add("AO", "+244");
    dictionary.Add("AR", "+54");
    dictionary.Add("AS", "+1-684");
    dictionary.Add("AT", "+43");
    dictionary.Add("AU", "+61");
    dictionary.Add("AW", "+297");
    dictionary.Add("AX", "+358-18");
    dictionary.Add("AZ", "+994"); // or +374-97
    dictionary.Add("BA", "+387");
    dictionary.Add("BB", "+1-246");
    dictionary.Add("BD", "+880");
    dictionary.Add("BE", "+32");
    dictionary.Add("BF", "+226");
    dictionary.Add("BG", "+359");
    dictionary.Add("BH", "+973");
    dictionary.Add("BI", "+257");
    dictionary.Add("BJ", "+229");
    dictionary.Add("BM", "+1-441");
    dictionary.Add("BN", "+673");
    dictionary.Add("BO", "+591");
    dictionary.Add("BR", "+55");
    dictionary.Add("BS", "+1-242");
    dictionary.Add("BT", "+975");
    dictionary.Add("BW", "+267");
    dictionary.Add("BY", "+375");
    dictionary.Add("BZ", "+501");
    dictionary.Add("CA", "+1");
    dictionary.Add("CC", "+61");
    dictionary.Add("CD", "+243");
    dictionary.Add("CF", "+236");
    dictionary.Add("CG", "+242");
    dictionary.Add("CH", "+41");
    dictionary.Add("CI", "+225");
    dictionary.Add("CK", "+682");
    dictionary.Add("CL", "+56");
    dictionary.Add("CM", "+237");
    dictionary.Add("CN", "+86");
    dictionary.Add("CO", "+57");
    dictionary.Add("CR", "+506");
    dictionary.Add("CS", "+381");
    dictionary.Add("CU", "+53");
    dictionary.Add("CV", "+238");
    dictionary.Add("CX", "+61");
    dictionary.Add("CY", "+357"); // or +90-392
    dictionary.Add("CZ", "+420");
    dictionary.Add("DE", "+49");
    dictionary.Add("DJ", "+253");
    dictionary.Add("DK", "+45");
    dictionary.Add("DM", "+1-767");
    dictionary.Add("DO", "+1-809"); // and 1-829?
    dictionary.Add("DZ", "+213");
    dictionary.Add("EC", "+593");
    dictionary.Add("EE", "+372");
    dictionary.Add("EG", "+20");
    dictionary.Add("EH", "+212");
    dictionary.Add("ER", "+291");
    dictionary.Add("ES", "+34");
    dictionary.Add("ET", "+251");
    dictionary.Add("FI", "+358");
    dictionary.Add("FJ", "+679");
    dictionary.Add("FK", "+500");
    dictionary.Add("FM", "+691");
    dictionary.Add("FO", "+298");
    dictionary.Add("FR", "+33");
    dictionary.Add("GA", "+241");
    dictionary.Add("GB", "+44");
    dictionary.Add("GD", "+1-473");
    dictionary.Add("GE", "+995");
    dictionary.Add("GF", "+594");
    dictionary.Add("GG", "+44");
    dictionary.Add("GH", "+233");
    dictionary.Add("GI", "+350");
    dictionary.Add("GL", "+299");
    dictionary.Add("GM", "+220");
    dictionary.Add("GN", "+224");
    dictionary.Add("GP", "+590");
    dictionary.Add("GQ", "+240");
    dictionary.Add("GR", "+30");
    dictionary.Add("GT", "+502");
    dictionary.Add("GU", "+1-671");
    dictionary.Add("GW", "+245");
    dictionary.Add("GY", "+592");
    dictionary.Add("HK", "+852");
    dictionary.Add("HN", "+504");
    dictionary.Add("HR", "+385");
    dictionary.Add("HT", "+509");
    dictionary.Add("HU", "+36");
    dictionary.Add("ID", "+62");
    dictionary.Add("IE", "+353");
    dictionary.Add("IL", "+972");
    dictionary.Add("IM", "+44");
    dictionary.Add("IN", "+91");
    dictionary.Add("IO", "+246");
    dictionary.Add("IQ", "+964");
    dictionary.Add("IR", "+98");
    dictionary.Add("IS", "+354");
    dictionary.Add("IT", "+39");
    dictionary.Add("JE", "+44");
    dictionary.Add("JM", "+1-876");
    dictionary.Add("JO", "+962");
    dictionary.Add("JP", "+81");
    dictionary.Add("KE", "+254");
    dictionary.Add("KG", "+996");
    dictionary.Add("KH", "+855");
    dictionary.Add("KI", "+686");
    dictionary.Add("KM", "+269");
    dictionary.Add("KN", "+1-869");
    dictionary.Add("KP", "+850");
    dictionary.Add("KR", "+82");
    dictionary.Add("KW", "+965");
    dictionary.Add("KY", "+1-345");
    dictionary.Add("KZ", "+7");
    dictionary.Add("LA", "+856");
    dictionary.Add("LB", "+961");
    dictionary.Add("LC", "+1-758");
    dictionary.Add("LI", "+423");
    dictionary.Add("LK", "+94");
    dictionary.Add("LR", "+231");
    dictionary.Add("LS", "+266");
    dictionary.Add("LT", "+370");
    dictionary.Add("LU", "+352");
    dictionary.Add("LV", "+371");
    dictionary.Add("LY", "+218");
    dictionary.Add("MA", "+212");
    dictionary.Add("MC", "+377");
    dictionary.Add("MD", "+373"); // or +373-533
    dictionary.Add("ME", "+382");
    dictionary.Add("MG", "+261");
    dictionary.Add("MH", "+692");
    dictionary.Add("MK", "+389");
    dictionary.Add("ML", "+223");
    dictionary.Add("MM", "+95");
    dictionary.Add("MN", "+976");
    dictionary.Add("MO", "+853");
    dictionary.Add("MP", "+1-670");
    dictionary.Add("MQ", "+596");
    dictionary.Add("MR", "+222");
    dictionary.Add("MS", "+1-664");
    dictionary.Add("MT", "+356");
    dictionary.Add("MU", "+230");
    dictionary.Add("MV", "+960");
    dictionary.Add("MW", "+265");
    dictionary.Add("MX", "+52");
    dictionary.Add("MY", "+60");
    dictionary.Add("MZ", "+258");
    dictionary.Add("NA", "+264");
    dictionary.Add("NC", "+687");
    dictionary.Add("NE", "+227");
    dictionary.Add("NF", "+672");
    dictionary.Add("NG", "+234");
    dictionary.Add("NI", "+505");
    dictionary.Add("NL", "+31");
    dictionary.Add("NO", "+47");
    dictionary.Add("NP", "+977");
    dictionary.Add("NR", "+674");
    dictionary.Add("NU", "+683");
    dictionary.Add("NZ", "+64");
    dictionary.Add("OM", "+968");
    dictionary.Add("PA", "+507");
    dictionary.Add("PE", "+51");
    dictionary.Add("PF", "+689");
    dictionary.Add("PG", "+675");
    dictionary.Add("PH", "+63");
    dictionary.Add("PK", "+92");
    dictionary.Add("PL", "+48");
    dictionary.Add("PM", "+508");
    dictionary.Add("PR", "+1-787"); // and 1-939 ?
    dictionary.Add("PS", "+970");
    dictionary.Add("PT", "+351");
    dictionary.Add("PW", "+680");
    dictionary.Add("PY", "+595");
    dictionary.Add("QA", "+974");
    dictionary.Add("RE", "+262");
    dictionary.Add("RO", "+40");
    dictionary.Add("RS", "+381");
    dictionary.Add("RU", "+7");
    dictionary.Add("RW", "+250");
    dictionary.Add("SA", "+966");
    dictionary.Add("SB", "+677");
    dictionary.Add("SC", "+248");
    dictionary.Add("SD", "+249");
    dictionary.Add("SE", "+46");
    dictionary.Add("SG", "+65");
    dictionary.Add("SH", "+290");
    dictionary.Add("SI", "+386");
    dictionary.Add("SJ", "+47");
    dictionary.Add("SK", "+421");
    dictionary.Add("SL", "+232");
    dictionary.Add("SM", "+378");
    dictionary.Add("SN", "+221");
    dictionary.Add("SO", "+252");
    dictionary.Add("SR", "+597");
    dictionary.Add("ST", "+239");
    dictionary.Add("SV", "+503");
    dictionary.Add("SY", "+963");
    dictionary.Add("SZ", "+268");
    dictionary.Add("TA", "+290");
    dictionary.Add("TC", "+1-649");
    dictionary.Add("TD", "+235");
    dictionary.Add("TG", "+228");
    dictionary.Add("TH", "+66");
    dictionary.Add("TJ", "+992");
    dictionary.Add("TK", "+690");
    dictionary.Add("TL", "+670");
    dictionary.Add("TM", "+993");
    dictionary.Add("TN", "+216");
    dictionary.Add("TO", "+676");
    dictionary.Add("TR", "+90");
    dictionary.Add("TT", "+1-868");
    dictionary.Add("TV", "+688");
    dictionary.Add("TW", "+886");
    dictionary.Add("TZ", "+255");
    dictionary.Add("UA", "+380");
    dictionary.Add("UG", "+256");
    dictionary.Add("US", "+1");
    dictionary.Add("UY", "+598");
    dictionary.Add("UZ", "+998");
    dictionary.Add("VA", "+379");
    dictionary.Add("VC", "+1-784");
    dictionary.Add("VE", "+58");
    dictionary.Add("VG", "+1-284");
    dictionary.Add("VI", "+1-340");
    dictionary.Add("VN", "+84");
    dictionary.Add("VU", "+678");
    dictionary.Add("WF", "+681");
    dictionary.Add("WS", "+685");
    dictionary.Add("YE", "+967");
    dictionary.Add("YT", "+262");
    dictionary.Add("ZA", "+27");
    dictionary.Add("ZM", "+260");
    dictionary.Add("ZW", "+263");

    var countyCode = dictionary.Where(d => d.Value == PhoneCode).Select(d => d.Key).FirstOrDefault();

        return countyCode;

并调用函数:

string isoCountryCode = getCountryCode("+47") //<= Will return "NO"
var cultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures)
                      .Where(c => c.Name.EndsWith("-" + isoCountryCode )).First;

【讨论】:

@SuvethanNantha 你不能用这个解决方案吗?

以上是关于从国际电话代码中查找语言环境[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java从0到全栈-Java语言概述与开发环境搭建

java 在spring引导中通过语言环境进行i18n国际化的messages.properties文件中的验证消息

flea-common使用之本地国际化实现

flea-common使用之本地国际化实现

goweb- 国际化和本地化

iOS开发之本地化国际化语言设置