2024-10-23 11:20:55 -04:00
|
|
|
module LanguagesHelper
|
|
|
|
LANGUAGE_MAPPING = {
|
|
|
|
en: "English",
|
|
|
|
ru: "Russian",
|
|
|
|
ar: "Arabic",
|
|
|
|
bg: "Bulgarian",
|
|
|
|
'ca-CAT': "Catalan (Catalonia)",
|
|
|
|
ca: "Catalan",
|
|
|
|
'da-DK': "Danish (Denmark)",
|
|
|
|
'de-AT': "German (Austria)",
|
|
|
|
'de-CH': "German (Switzerland)",
|
|
|
|
de: "German",
|
|
|
|
ee: "Ewe",
|
|
|
|
'en-AU': "English (Australia)",
|
|
|
|
'en-BORK': "English (Bork)",
|
|
|
|
'en-CA': "English (Canada)",
|
|
|
|
'en-GB': "English (United Kingdom)",
|
|
|
|
'en-IND': "English (India)",
|
|
|
|
'en-KE': "English (Kenya)",
|
|
|
|
'en-MS': "English (Malaysia)",
|
|
|
|
'en-NEP': "English (Nepal)",
|
|
|
|
'en-NG': "English (Nigeria)",
|
|
|
|
'en-NZ': "English (New Zealand)",
|
|
|
|
'en-PAK': "English (Pakistan)",
|
|
|
|
'en-SG': "English (Singapore)",
|
|
|
|
'en-TH': "English (Thailand)",
|
|
|
|
'en-UG': "English (Uganda)",
|
|
|
|
'en-US': "English (United States)",
|
|
|
|
'en-ZA': "English (South Africa)",
|
|
|
|
'en-au-ocker': "English (Australian Ocker)",
|
|
|
|
'es-AR': "Spanish (Argentina)",
|
|
|
|
'es-MX': "Spanish (Mexico)",
|
|
|
|
es: "Spanish",
|
|
|
|
fa: "Persian",
|
|
|
|
'fi-FI': "Finnish (Finland)",
|
|
|
|
fr: "French",
|
|
|
|
'fr-CA': "French (Canada)",
|
|
|
|
'fr-CH': "French (Switzerland)",
|
|
|
|
he: "Hebrew",
|
|
|
|
hy: "Armenian",
|
|
|
|
id: "Indonesian",
|
|
|
|
it: "Italian",
|
|
|
|
ja: "Japanese",
|
|
|
|
ko: "Korean",
|
|
|
|
lt: "Lithuanian",
|
|
|
|
lv: "Latvian",
|
|
|
|
'mi-NZ': "Maori (New Zealand)",
|
|
|
|
'nb-NO': "Norwegian Bokmål (Norway)",
|
|
|
|
nl: "Dutch",
|
|
|
|
'no-NO': "Norwegian (Norway)",
|
|
|
|
pl: "Polish",
|
|
|
|
'pt-BR': "Portuguese (Brazil)",
|
|
|
|
pt: "Portuguese",
|
|
|
|
sk: "Slovak",
|
|
|
|
sv: "Swedish",
|
|
|
|
th: "Thai",
|
|
|
|
tr: "Turkish",
|
|
|
|
uk: "Ukrainian",
|
|
|
|
vi: "Vietnamese",
|
|
|
|
'zh-CN': "Chinese (Simplified)",
|
|
|
|
'zh-TW': "Chinese (Traditional)",
|
|
|
|
af: "Afrikaans",
|
|
|
|
az: "Azerbaijani",
|
|
|
|
be: "Belarusian",
|
|
|
|
bn: "Bengali",
|
|
|
|
bs: "Bosnian",
|
|
|
|
cs: "Czech",
|
|
|
|
cy: "Welsh",
|
|
|
|
da: "Danish",
|
|
|
|
'de-DE': "German (Germany)",
|
|
|
|
dz: "Dzongkha",
|
|
|
|
'el-CY': "Greek (Cyprus)",
|
|
|
|
el: "Greek",
|
|
|
|
'en-CY': "English (Cyprus)",
|
|
|
|
'en-IE': "English (Ireland)",
|
|
|
|
'en-IN': "English (India)",
|
|
|
|
'en-TT': "English (Trinidad and Tobago)",
|
|
|
|
eo: "Esperanto",
|
|
|
|
'es-419': "Spanish (Latin America)",
|
|
|
|
'es-CL': "Spanish (Chile)",
|
|
|
|
'es-CO': "Spanish (Colombia)",
|
|
|
|
'es-CR': "Spanish (Costa Rica)",
|
|
|
|
'es-EC': "Spanish (Ecuador)",
|
|
|
|
'es-ES': "Spanish (Spain)",
|
|
|
|
'es-NI': "Spanish (Nicaragua)",
|
|
|
|
'es-PA': "Spanish (Panama)",
|
|
|
|
'es-PE': "Spanish (Peru)",
|
|
|
|
'es-US': "Spanish (United States)",
|
|
|
|
'es-VE': "Spanish (Venezuela)",
|
|
|
|
et: "Estonian",
|
|
|
|
eu: "Basque",
|
|
|
|
fi: "Finnish",
|
|
|
|
'fr-FR': "French (France)",
|
|
|
|
fy: "Western Frisian",
|
|
|
|
gd: "Scottish Gaelic",
|
|
|
|
gl: "Galician",
|
|
|
|
'hi-IN': "Hindi (India)",
|
|
|
|
hi: "Hindi",
|
|
|
|
hr: "Croatian",
|
|
|
|
hu: "Hungarian",
|
|
|
|
is: "Icelandic",
|
|
|
|
'it-CH': "Italian (Switzerland)",
|
|
|
|
ka: "Georgian",
|
|
|
|
kk: "Kazakh",
|
|
|
|
km: "Khmer",
|
|
|
|
kn: "Kannada",
|
|
|
|
lb: "Luxembourgish",
|
|
|
|
lo: "Lao",
|
|
|
|
mg: "Malagasy",
|
|
|
|
mk: "Macedonian",
|
|
|
|
ml: "Malayalam",
|
|
|
|
mn: "Mongolian",
|
|
|
|
'mr-IN': "Marathi (India)",
|
|
|
|
ms: "Malay",
|
|
|
|
nb: "Norwegian Bokmål",
|
|
|
|
ne: "Nepali",
|
|
|
|
nn: "Norwegian Nynorsk",
|
|
|
|
oc: "Occitan",
|
|
|
|
or: "Odia",
|
|
|
|
pa: "Punjabi",
|
|
|
|
rm: "Romansh",
|
|
|
|
ro: "Romanian",
|
|
|
|
sc: "Sardinian",
|
|
|
|
sl: "Slovenian",
|
|
|
|
sq: "Albanian",
|
|
|
|
sr: "Serbian",
|
|
|
|
st: "Southern Sotho",
|
|
|
|
'sv-FI': "Swedish (Finland)",
|
|
|
|
'sv-SE': "Swedish (Sweden)",
|
|
|
|
sw: "Swahili",
|
|
|
|
ta: "Tamil",
|
|
|
|
te: "Telugu",
|
|
|
|
tl: "Tagalog",
|
|
|
|
tt: "Tatar",
|
|
|
|
ug: "Uyghur",
|
|
|
|
ur: "Urdu",
|
|
|
|
uz: "Uzbek",
|
|
|
|
wo: "Wolof"
|
|
|
|
}.freeze
|
|
|
|
|
|
|
|
EXCLUDED_LOCALES = [
|
2024-10-24 16:43:59 -04:00
|
|
|
# Test locales
|
2024-10-23 11:20:55 -04:00
|
|
|
"en-BORK",
|
|
|
|
"en-au-ocker",
|
2024-10-24 16:43:59 -04:00
|
|
|
# Duplicate locales
|
|
|
|
"fr-FR",
|
|
|
|
"de-DE",
|
|
|
|
"hi-IN",
|
|
|
|
"sv-SE",
|
2024-10-23 11:20:55 -04:00
|
|
|
"ca-CAT",
|
2024-10-24 16:43:59 -04:00
|
|
|
"en-US",
|
|
|
|
"fi-FI",
|
|
|
|
"en-IND"
|
2024-10-23 11:20:55 -04:00
|
|
|
].freeze
|
|
|
|
|
|
|
|
COUNTRY_MAPPING = {
|
|
|
|
AF: "Afghanistan",
|
|
|
|
AL: "Albania",
|
|
|
|
DZ: "Algeria",
|
|
|
|
AD: "Andorra",
|
|
|
|
AO: "Angola",
|
|
|
|
AG: "Antigua and Barbuda",
|
|
|
|
AR: "Argentina",
|
|
|
|
AM: "Armenia",
|
|
|
|
AU: "Australia",
|
|
|
|
AT: "Austria",
|
|
|
|
AZ: "Azerbaijan",
|
|
|
|
BS: "Bahamas",
|
|
|
|
BH: "Bahrain",
|
|
|
|
BD: "Bangladesh",
|
|
|
|
BB: "Barbados",
|
|
|
|
BY: "Belarus",
|
|
|
|
BE: "Belgium",
|
|
|
|
BZ: "Belize",
|
|
|
|
BJ: "Benin",
|
|
|
|
BT: "Bhutan",
|
|
|
|
BO: "Bolivia",
|
|
|
|
BA: "Bosnia and Herzegovina",
|
|
|
|
BW: "Botswana",
|
|
|
|
BR: "Brazil",
|
|
|
|
BN: "Brunei",
|
|
|
|
BG: "Bulgaria",
|
|
|
|
BF: "Burkina Faso",
|
|
|
|
BI: "Burundi",
|
|
|
|
KH: "Cambodia",
|
|
|
|
CM: "Cameroon",
|
|
|
|
CA: "Canada",
|
|
|
|
CV: "Cape Verde",
|
|
|
|
CF: "Central African Republic",
|
|
|
|
TD: "Chad",
|
|
|
|
CL: "Chile",
|
|
|
|
CN: "China",
|
|
|
|
CO: "Colombia",
|
|
|
|
KM: "Comoros",
|
|
|
|
CG: "Congo",
|
|
|
|
CD: "Congo, Democratic Republic of the",
|
|
|
|
CR: "Costa Rica",
|
|
|
|
CI: "Côte d'Ivoire",
|
|
|
|
HR: "Croatia",
|
|
|
|
CU: "Cuba",
|
|
|
|
CY: "Cyprus",
|
|
|
|
CZ: "Czech Republic",
|
|
|
|
DK: "Denmark",
|
|
|
|
DJ: "Djibouti",
|
|
|
|
DM: "Dominica",
|
|
|
|
DO: "Dominican Republic",
|
|
|
|
EC: "Ecuador",
|
|
|
|
EG: "Egypt",
|
|
|
|
SV: "El Salvador",
|
|
|
|
GQ: "Equatorial Guinea",
|
|
|
|
ER: "Eritrea",
|
|
|
|
EE: "Estonia",
|
|
|
|
ET: "Ethiopia",
|
|
|
|
FJ: "Fiji",
|
|
|
|
FI: "Finland",
|
|
|
|
FR: "France",
|
|
|
|
GA: "Gabon",
|
|
|
|
GM: "Gambia",
|
|
|
|
GE: "Georgia",
|
|
|
|
DE: "Germany",
|
|
|
|
GH: "Ghana",
|
|
|
|
GR: "Greece",
|
|
|
|
GD: "Grenada",
|
|
|
|
GT: "Guatemala",
|
|
|
|
GN: "Guinea",
|
|
|
|
GW: "Guinea-Bissau",
|
|
|
|
GY: "Guyana",
|
|
|
|
HT: "Haiti",
|
|
|
|
HN: "Honduras",
|
|
|
|
HU: "Hungary",
|
|
|
|
IS: "Iceland",
|
|
|
|
IN: "India",
|
|
|
|
ID: "Indonesia",
|
|
|
|
IR: "Iran",
|
|
|
|
IQ: "Iraq",
|
|
|
|
IE: "Ireland",
|
|
|
|
IL: "Israel",
|
|
|
|
IT: "Italy",
|
|
|
|
JM: "Jamaica",
|
|
|
|
JP: "Japan",
|
|
|
|
JO: "Jordan",
|
|
|
|
KZ: "Kazakhstan",
|
|
|
|
KE: "Kenya",
|
|
|
|
KI: "Kiribati",
|
|
|
|
KP: "North Korea",
|
|
|
|
KR: "South Korea",
|
|
|
|
KW: "Kuwait",
|
|
|
|
KG: "Kyrgyzstan",
|
|
|
|
LA: "Laos",
|
|
|
|
LV: "Latvia",
|
|
|
|
LB: "Lebanon",
|
|
|
|
LS: "Lesotho",
|
|
|
|
LR: "Liberia",
|
|
|
|
LY: "Libya",
|
|
|
|
LI: "Liechtenstein",
|
|
|
|
LT: "Lithuania",
|
|
|
|
LU: "Luxembourg",
|
|
|
|
MK: "North Macedonia",
|
|
|
|
MG: "Madagascar",
|
|
|
|
MW: "Malawi",
|
|
|
|
MY: "Malaysia",
|
|
|
|
MV: "Maldives",
|
|
|
|
ML: "Mali",
|
|
|
|
MT: "Malta",
|
|
|
|
MH: "Marshall Islands",
|
|
|
|
MR: "Mauritania",
|
|
|
|
MU: "Mauritius",
|
|
|
|
MX: "Mexico",
|
|
|
|
FM: "Micronesia",
|
|
|
|
MD: "Moldova",
|
|
|
|
MC: "Monaco",
|
|
|
|
MN: "Mongolia",
|
|
|
|
ME: "Montenegro",
|
|
|
|
MA: "Morocco",
|
|
|
|
MZ: "Mozambique",
|
|
|
|
MM: "Myanmar",
|
|
|
|
NA: "Namibia",
|
|
|
|
NR: "Nauru",
|
|
|
|
NP: "Nepal",
|
|
|
|
NL: "Netherlands",
|
|
|
|
NZ: "New Zealand",
|
|
|
|
NI: "Nicaragua",
|
|
|
|
NE: "Niger",
|
|
|
|
NG: "Nigeria",
|
|
|
|
NO: "Norway",
|
|
|
|
OM: "Oman",
|
|
|
|
PK: "Pakistan",
|
|
|
|
PW: "Palau",
|
|
|
|
PA: "Panama",
|
|
|
|
PG: "Papua New Guinea",
|
|
|
|
PY: "Paraguay",
|
|
|
|
PE: "Peru",
|
|
|
|
PH: "Philippines",
|
|
|
|
PL: "Poland",
|
|
|
|
PT: "Portugal",
|
|
|
|
QA: "Qatar",
|
|
|
|
RO: "Romania",
|
|
|
|
RU: "Russia",
|
|
|
|
RW: "Rwanda",
|
|
|
|
KN: "Saint Kitts and Nevis",
|
|
|
|
LC: "Saint Lucia",
|
|
|
|
VC: "Saint Vincent and the Grenadines",
|
|
|
|
WS: "Samoa",
|
|
|
|
SM: "San Marino",
|
|
|
|
ST: "Sao Tome and Principe",
|
|
|
|
SA: "Saudi Arabia",
|
|
|
|
SN: "Senegal",
|
|
|
|
RS: "Serbia",
|
|
|
|
SC: "Seychelles",
|
|
|
|
SL: "Sierra Leone",
|
|
|
|
SG: "Singapore",
|
|
|
|
SK: "Slovakia",
|
|
|
|
SI: "Slovenia",
|
|
|
|
SB: "Solomon Islands",
|
|
|
|
SO: "Somalia",
|
|
|
|
ZA: "South Africa",
|
|
|
|
SS: "South Sudan",
|
|
|
|
ES: "Spain",
|
|
|
|
LK: "Sri Lanka",
|
|
|
|
SD: "Sudan",
|
|
|
|
SR: "Suriname",
|
|
|
|
SE: "Sweden",
|
|
|
|
CH: "Switzerland",
|
|
|
|
SY: "Syria",
|
|
|
|
TW: "Taiwan",
|
|
|
|
TJ: "Tajikistan",
|
|
|
|
TZ: "Tanzania",
|
|
|
|
TH: "Thailand",
|
|
|
|
TL: "Timor-Leste",
|
|
|
|
TG: "Togo",
|
|
|
|
TO: "Tonga",
|
|
|
|
TT: "Trinidad and Tobago",
|
|
|
|
TN: "Tunisia",
|
|
|
|
TR: "Turkey",
|
|
|
|
TM: "Turkmenistan",
|
|
|
|
TV: "Tuvalu",
|
|
|
|
UG: "Uganda",
|
|
|
|
UA: "Ukraine",
|
|
|
|
AE: "United Arab Emirates",
|
|
|
|
GB: "United Kingdom",
|
|
|
|
US: "United States",
|
|
|
|
UY: "Uruguay",
|
|
|
|
UZ: "Uzbekistan",
|
|
|
|
VU: "Vanuatu",
|
|
|
|
VA: "Vatican City",
|
|
|
|
VE: "Venezuela",
|
|
|
|
VN: "Vietnam",
|
|
|
|
YE: "Yemen",
|
|
|
|
ZM: "Zambia",
|
|
|
|
ZW: "Zimbabwe"
|
|
|
|
}.freeze
|
|
|
|
|
|
|
|
def country_options
|
|
|
|
COUNTRY_MAPPING.keys.map { |key| [ COUNTRY_MAPPING[key], key ] }
|
|
|
|
end
|
|
|
|
|
|
|
|
def language_options
|
|
|
|
I18n.available_locales
|
|
|
|
.reject { |locale| EXCLUDED_LOCALES.include?(locale.to_s) }
|
|
|
|
.map do |locale|
|
|
|
|
label = LANGUAGE_MAPPING[locale.to_sym] || locale.to_s.humanize
|
|
|
|
[ "#{label} (#{locale})", locale ]
|
|
|
|
end
|
2024-10-24 16:43:59 -04:00
|
|
|
.sort_by { |label, locale| label }
|
2024-10-23 11:20:55 -04:00
|
|
|
end
|
|
|
|
end
|