Getting Player's Country

Does anyone know of any open-sourced modules for getting a user’s full country/region? Localization:GetCountryRegionForPlayerAsync() returns GB for me but I want it to be automatically converted to Great Britain, for example.

4 Likes
local Players = game:GetService("Players")
local HttpService = game:GetService("HttpService")
local LocalizationService = game:GetService("LocalizationService")
local Countries = {}

local success, result = pcall(function()
	return HttpService:GetAsync("http://country.io/names.json")
end)

if success and result then
	Countries = HttpService:JSONDecode(result)
end

Players.PlayerAdded:Connect(function(player)
	local success, code = pcall(LocalizationService.GetCountryRegionForPlayerAsync, LocalizationService, player)
	if success and code then
		print(Countries[code])
	end
end)
18 Likes

Thanks a lot.

chars

1 Like

How can I get the country code from the actual name? [Ex: Canada → CA]

1 Like

LocalizationService already does this for you automatically. The reason the HTTP request in the original solution is sent is so it can translate the country/region code to an actual country name (the reverse of what you want to do). Removing the HTTP to the website should have the effect you want.

Made a post about it awhile ago with working code for country codes, check it out if you’d like.

3 Likes

uh, it returns nil for me, does someone know what might be an issue?

also yes, http requests are enabled :v

1 Like

The only way you can fix this is by creating a module script with the countries convertion by going to country.io/names.json then copying and pasting it and converting it to lua easily.

Here’s how:

Create a script in workspace or anywhere that has this code:

local Players = game:GetService("Players")
local HttpService = game:GetService("HttpService")
local LocalizationService = game:GetService("LocalizationService")
local Countries = require(script.Countries)

Players.PlayerAdded:Connect(function(player)
	local success, code = pcall(LocalizationService.GetCountryRegionForPlayerAsync, LocalizationService, player)
	if success and code then
		print(Countries[code])
	end
end)

Lastly create a module script inside the script called Countries or any name and make it contain this:

return {
	["BD"] = "Bangladesh",
	["BE"] = "Belgium",
	["BF"] = "Burkina Faso",
	["BG"] = "Bulgaria",
	["BA"] = "Bosnia and Herzegovina",
	["BB"] = "Barbados",
	["WF"] = "Wallis and Futuna",
	["BL"] = "Saint Barthelemy",
	["BM"] = "Bermuda",
	["BN"] = "Brunei",
	["BO"] = "Bolivia",
	["BH"] = "Bahrain",
	["BI"] = "Burundi",
	["BJ"] = "Benin",
	["BT"] = "Bhutan",
	["JM"] = "Jamaica",
	["BV"] = "Bouvet Island",
	["BW"] = "Botswana",
	["WS"] = "Samoa",
	["BQ"] = "Bonaire, Saint Eustatius and Saba ",
	["BR"] = "Brazil",
	["BS"] = "Bahamas",
	["JE"] = "Jersey",
	["BY"] = "Belarus",
	["BZ"] = "Belize",
	["RU"] = "Russia",
	["RW"] = "Rwanda",
	["RS"] = "Serbia",
	["TL"] = "East Timor",
	["RE"] = "Reunion",
	["TM"] = "Turkmenistan",
	["TJ"] = "Tajikistan",
	["RO"] = "Romania",
	["TK"] = "Tokelau",
	["GW"] = "Guinea-Bissau",
	["GU"] = "Guam",
	["GT"] = "Guatemala",
	["GS"] = "South Georgia and the South Sandwich Islands",
	["GR"] = "Greece",
	["GQ"] = "Equatorial Guinea",
	["GP"] = "Guadeloupe",
	["JP"] = "Japan",
	["GY"] = "Guyana",
	["GG"] = "Guernsey",
	["GF"] = "French Guiana",
	["GE"] = "Georgia",
	["GD"] = "Grenada",
	["GB"] = "United Kingdom",
	["GA"] = "Gabon",
	["SV"] = "El Salvador",
	["GN"] = "Guinea",
	["GM"] = "Gambia",
	["GL"] = "Greenland",
	["GI"] = "Gibraltar",
	["GH"] = "Ghana",
	["OM"] = "Oman",
	["TN"] = "Tunisia",
	["JO"] = "Jordan",
	["HR"] = "Croatia",
	["HT"] = "Haiti",
	["HU"] = "Hungary",
	["HK"] = "Hong Kong",
	["HN"] = "Honduras",
	["HM"] = "Heard Island and McDonald Islands",
	["VE"] = "Venezuela",
	["PR"] = "Puerto Rico",
	["PS"] = "Palestinian Territory",
	["PW"] = "Palau",
	["PT"] = "Portugal",
	["SJ"] = "Svalbard and Jan Mayen",
	["PY"] = "Paraguay",
	["IQ"] = "Iraq",
	["PA"] = "Panama",
	["PF"] = "French Polynesia",
	["PG"] = "Papua New Guinea",
	["PE"] = "Peru",
	["PK"] = "Pakistan",
	["PH"] = "Philippines",
	["PN"] = "Pitcairn",
	["PL"] = "Poland",
	["PM"] = "Saint Pierre and Miquelon",
	["ZM"] = "Zambia",
	["EH"] = "Western Sahara",
	["EE"] = "Estonia",
	["EG"] = "Egypt",
	["ZA"] = "South Africa",
	["EC"] = "Ecuador",
	["IT"] = "Italy",
	["VN"] = "Vietnam",
	["SB"] = "Solomon Islands",
	["ET"] = "Ethiopia",
	["SO"] = "Somalia",
	["ZW"] = "Zimbabwe",
	["SA"] = "Saudi Arabia",
	["ES"] = "Spain",
	["ER"] = "Eritrea",
	["ME"] = "Montenegro",
	["MD"] = "Moldova",
	["MG"] = "Madagascar",
	["MF"] = "Saint Martin",
	["MA"] = "Morocco",
	["MC"] = "Monaco",
	["UZ"] = "Uzbekistan",
	["MM"] = "Myanmar",
	["ML"] = "Mali",
	["MO"] = "Macao",
	["MN"] = "Mongolia",
	["MH"] = "Marshall Islands",
	["MK"] = "Macedonia",
	["MU"] = "Mauritius",
	["MT"] = "Malta",
	["MW"] = "Malawi",
	["MV"] = "Maldives",
	["MQ"] = "Martinique",
	["MP"] = "Northern Mariana Islands",
	["MS"] = "Montserrat",
	["MR"] = "Mauritania",
	["IM"] = "Isle of Man",
	["UG"] = "Uganda",
	["TZ"] = "Tanzania",
	["MY"] = "Malaysia",
	["MX"] = "Mexico",
	["IL"] = "Israel",
	["FR"] = "France",
	["IO"] = "British Indian Ocean Territory",
	["SH"] = "Saint Helena",
	["FI"] = "Finland",
	["FJ"] = "Fiji",
	["FK"] = "Falkland Islands",
	["FM"] = "Micronesia",
	["FO"] = "Faroe Islands",
	["NI"] = "Nicaragua",
	["NL"] = "Netherlands",
	["NO"] = "Norway",
	["NA"] = "Namibia",
	["VU"] = "Vanuatu",
	["NC"] = "New Caledonia",
	["NE"] = "CENSORED [Here should be the country starting with N and ending with R]",
	["NF"] = "Norfolk Island",
	["NG"] = "Nigeria",
	["NZ"] = "New Zealand",
	["NP"] = "Nepal",
	["NR"] = "Nauru",
	["NU"] = "Niue",
	["CK"] = "Cook Islands",
	["XK"] = "Kosovo",
	["CI"] = "Ivory Coast",
	["CH"] = "Switzerland",
	["CO"] = "Colombia",
	["CN"] = "China",
	["CM"] = "Cameroon",
	["CL"] = "Chile",
	["CC"] = "Cocos Islands",
	["CA"] = "Canada",
	["CG"] = "Republic of the Congo",
	["CF"] = "Central African Republic",
	["CD"] = "Democratic Republic of the Congo",
	["CZ"] = "Czech Republic",
	["CY"] = "Cyprus",
	["CX"] = "Christmas Island",
	["CR"] = "Costa Rica",
	["CW"] = "Curacao",
	["CV"] = "Cape Verde",
	["CU"] = "Cuba",
	["SZ"] = "Swaziland",
	["SY"] = "Syria",
	["SX"] = "Sint Maarten",
	["KG"] = "Kyrgyzstan",
	["KE"] = "Kenya",
	["SS"] = "South Sudan",
	["SR"] = "Suriname",
	["KI"] = "Kiribati",
	["KH"] = "Cambodia",
	["KN"] = "Saint Kitts and Nevis",
	["KM"] = "Comoros",
	["ST"] = "Sao Tome and Principe",
	["SK"] = "Slovakia",
	["KR"] = "South Korea",
	["SI"] = "Slovenia",
	["KP"] = "North Korea",
	["KW"] = "Kuwait",
	["SN"] = "Senegal",
	["SM"] = "San Marino",
	["SL"] = "Sierra Leone",
	["SC"] = "Seychelles",
	["KZ"] = "Kazakhstan",
	["KY"] = "Cayman Islands",
	["SG"] = "Singapore",
	["SE"] = "Sweden",
	["SD"] = "Sudan",
	["DO"] = "Dominican Republic",
	["DM"] = "Dominica",
	["DJ"] = "Djibouti",
	["DK"] = "Denmark",
	["VG"] = "British Virgin Islands",
	["DE"] = "Germany",
	["YE"] = "Yemen",
	["DZ"] = "Algeria",
	["US"] = "United States",
	["UY"] = "Uruguay",
	["YT"] = "Mayotte",
	["UM"] = "United States Minor Outlying Islands",
	["LB"] = "Lebanon",
	["LC"] = "Saint Lucia",
	["LA"] = "Laos",
	["TV"] = "Tuvalu",
	["TW"] = "Taiwan",
	["TT"] = "Trinidad and Tobago",
	["TR"] = "Turkey",
	["LK"] = "Sri Lanka",
	["LI"] = "Liechtenstein",
	["LV"] = "Latvia",
	["TO"] = "Tonga",
	["LT"] = "Lithuania",
	["LU"] = "Luxembourg",
	["LR"] = "Liberia",
	["LS"] = "Lesotho",
	["TH"] = "Thailand",
	["TF"] = "French Southern Territories",
	["TG"] = "Togo",
	["TD"] = "Chad",
	["TC"] = "Turks and Caicos Islands",
	["LY"] = "Libya",
	["VA"] = "Vatican",
	["VC"] = "Saint Vincent and the Grenadines",
	["AE"] = "United Arab Emirates",
	["AD"] = "Andorra",
	["AG"] = "Antigua and Barbuda",
	["AF"] = "Afghanistan",
	["AI"] = "Anguilla",
	["VI"] = "U.S. Virgin Islands",
	["IS"] = "Iceland",
	["IR"] = "Iran",
	["AM"] = "Armenia",
	["AL"] = "Albania",
	["AO"] = "Angola",
	["AQ"] = "Antarctica",
	["AS"] = "American Samoa",
	["AR"] = "Argentina",
	["AU"] = "Australia",
	["AT"] = "Austria",
	["AW"] = "Aruba",
	["IN"] = "India",
	["AX"] = "Aland Islands",
	["AZ"] = "Azerbaijan",
	["IE"] = "Ireland",
	["ID"] = "Indonesia",
	["UA"] = "Ukraine",
	["QA"] = "Qatar",
	["MZ"] = "Mozambique"
}

And your issue should be fixed.

sorry for bumping in a old post lol

1 Like

There’s one country that i cannot put here, which is censored so i’ve named it as CENSORED. where it’s code is NE