@@ -14,68 +14,68 @@ type LanguageMetadata struct {
1414
1515// SupportedLanguages is a curated list of allowed language codes
1616var SupportedLanguages = map [string ]struct {}{
17- // Apple App Store Connect locale codes
18- "da " : {}, "uk " : {}, "ru " : {}, "hr " : {}, "ca " : {}, "hu " : {}, "hi " : {},
19- "id " : {}, "tr " : {}, "he " : {}, "el " : {}, "de " : {}, "it" : {}, "no" : {}, "cs " : {},
20- "sk " : {}, "ja " : {}, "fr " : {}, "fr-CA " : {}, "pl " : {}, "th " : {}, "sv " : {},
21- "zh-Hans " : {}, "zh-Hant " : {}, "ro " : {}, "fi " : {}, "en-US " : {}, "en-CA " : {}, "en-AU" : {}, "en-GB " : {},
22- "nl " : {}, "pt-BR " : {}, "pt-PT " : {}, "es-MX " : {}, "es-ES " : {}, "vi " : {},
23- "ar " : {}, "ko " : {}, "ms " : {},
17+ // Apple App Store Connect locale codes (41 languages)
18+ "ar-SA " : {}, "ca " : {}, "zh-Hans " : {}, "zh-Hant " : {}, "hr " : {}, "cs " : {}, "da " : {},
19+ "nl-NL " : {}, "en-AU " : {}, "en-CA " : {}, "en-GB " : {}, "en-US " : {}, "fi " : {},
20+ "fr-CA " : {}, "fr-FR " : {}, "de-DE " : {}, "el " : {}, "he " : {}, "hi " : {}, "hu " : {},
21+ "id " : {}, "it " : {}, "ja " : {}, "ko " : {}, "ms " : {}, "no " : {}, "pl " : {},
22+ "pt-BR " : {}, "pt-PT " : {}, "ro " : {}, "ru " : {}, "sk" : {}, " es-MX " : {}, "es-ES " : {},
23+ "sv " : {}, "th " : {}, "tr" : {}, "uk" : {}, "vi " : {},
2424}
2525
2626// AppleConnectLanguage is the enum from Apple App Store Connect
2727type AppleConnectLanguage string
2828
2929const (
30- danish AppleConnectLanguage = "da"
31- ukrainian AppleConnectLanguage = "uk"
32- russian AppleConnectLanguage = "ru"
33- croatian AppleConnectLanguage = "hr"
34- catalan AppleConnectLanguage = "ca"
35- hungarian AppleConnectLanguage = "hu"
36- hindiNorth AppleConnectLanguage = "hi"
37- indonesian AppleConnectLanguage = "id"
38- turkish AppleConnectLanguage = "tr"
39- hebrew AppleConnectLanguage = "he"
40- greek AppleConnectLanguage = "el"
41- german AppleConnectLanguage = "de"
42- italian AppleConnectLanguage = "it"
43- norwegian AppleConnectLanguage = "no"
44- czech AppleConnectLanguage = "cs"
45- slovak AppleConnectLanguage = "sk"
46- japanese AppleConnectLanguage = "ja"
47- french AppleConnectLanguage = "fr"
48- frenchCanada AppleConnectLanguage = "fr-CA"
49- polish AppleConnectLanguage = "pl"
50- thai AppleConnectLanguage = "th"
51- swedish AppleConnectLanguage = "sv"
30+ arabic AppleConnectLanguage = "ar-SA"
31+ catalan AppleConnectLanguage = "ca"
5232 chineseSimplified AppleConnectLanguage = "zh-Hans"
5333 chineseTraditional AppleConnectLanguage = "zh-Hant"
54- romanian AppleConnectLanguage = "ro"
55- finnish AppleConnectLanguage = "fi"
56- englishUS AppleConnectLanguage = "en-US"
57- englishCanada AppleConnectLanguage = "en-CA"
58- englishAustralia AppleConnectLanguage = "en-AU"
59- englishUK AppleConnectLanguage = "en-GB"
60- dutch AppleConnectLanguage = "nl"
61- portugueseBrazil AppleConnectLanguage = "pt-BR"
34+ croatian AppleConnectLanguage = "hr"
35+ czech AppleConnectLanguage = "cs"
36+ danish AppleConnectLanguage = "da"
37+ dutch AppleConnectLanguage = "nl-NL"
38+ englishAustralia AppleConnectLanguage = "en-AU"
39+ englishCanada AppleConnectLanguage = "en-CA"
40+ englishUK AppleConnectLanguage = "en-GB"
41+ englishUS AppleConnectLanguage = "en-US"
42+ finnish AppleConnectLanguage = "fi"
43+ frenchCanada AppleConnectLanguage = "fr-CA"
44+ frenchFrance AppleConnectLanguage = "fr-FR"
45+ german AppleConnectLanguage = "de-DE"
46+ greek AppleConnectLanguage = "el"
47+ hebrew AppleConnectLanguage = "he"
48+ hindi AppleConnectLanguage = "hi"
49+ hungarian AppleConnectLanguage = "hu"
50+ indonesian AppleConnectLanguage = "id"
51+ italian AppleConnectLanguage = "it"
52+ japanese AppleConnectLanguage = "ja"
53+ korean AppleConnectLanguage = "ko"
54+ malay AppleConnectLanguage = "ms"
55+ norwegian AppleConnectLanguage = "no"
56+ polish AppleConnectLanguage = "pl"
57+ portugueseBrazil AppleConnectLanguage = "pt-BR"
6258 portuguesePortugal AppleConnectLanguage = "pt-PT"
63- spanishMexico AppleConnectLanguage = "es-MX"
64- spanishSpain AppleConnectLanguage = "es-ES"
65- vietnamese AppleConnectLanguage = "vi"
66- arabic AppleConnectLanguage = "ar"
67- korean AppleConnectLanguage = "ko"
68- malay AppleConnectLanguage = "ms"
59+ romanian AppleConnectLanguage = "ro"
60+ russian AppleConnectLanguage = "ru"
61+ slovak AppleConnectLanguage = "sk"
62+ spanishMexico AppleConnectLanguage = "es-MX"
63+ spanishSpain AppleConnectLanguage = "es-ES"
64+ swedish AppleConnectLanguage = "sv"
65+ thai AppleConnectLanguage = "th"
66+ turkish AppleConnectLanguage = "tr"
67+ ukrainian AppleConnectLanguage = "uk"
68+ vietnamese AppleConnectLanguage = "vi"
6969)
7070
71- // AppleConnectLanguages is the list of all Apple Store Connect supported languages
71+ // AppleConnectLanguages is the list of all Apple Store Connect supported languages (41 languages)
7272var AppleConnectLanguages = []AppleConnectLanguage {
73- danish , ukrainian , russian , croatian , catalan , hungarian , hindiNorth , indonesian ,
74- turkish , hebrew , greek , german , italian , norwegian , czech , slovak , japanese ,
75- french , frenchCanada , polish , thai , swedish , chineseSimplified , chineseTraditional ,
76- romanian , finnish , englishUS , englishCanada , englishAustralia , englishUK , dutch ,
77- portugueseBrazil , portuguesePortugal , spanishMexico , spanishSpain , vietnamese ,
78- arabic , korean , malay ,
73+ arabic , catalan , chineseSimplified , chineseTraditional , croatian , czech , danish ,
74+ dutch , englishAustralia , englishCanada , englishUK , englishUS , finnish ,
75+ frenchCanada , frenchFrance , german , greek , hebrew , hindi , hungarian ,
76+ indonesian , italian , japanese , korean , malay , norwegian , polish ,
77+ portugueseBrazil , portuguesePortugal , romanian , russian , slovak , spanishMexico , spanishSpain ,
78+ swedish , thai , turkish , ukrainian , vietnamese ,
7979}
8080
8181// GetAppleConnectLanguages returns the list of Apple Connect languages with metadata
@@ -91,17 +91,24 @@ func GetAppleConnectLanguages() []LanguageMetadata {
9191
9292// GetAppleConnectLanguageMetadata returns metadata for a specific Apple Connect language
9393func GetAppleConnectLanguageMetadata (code string ) (LanguageMetadata , bool ) {
94- // Map basic language codes to full Apple Connect codes
94+ // Map alternative language codes to Apple Connect codes
9595 appleConnectMap := map [string ]string {
96- "da" : "da" , "uk" : "uk" , "ru" : "ru" , "hr" : "hr" , "ca" : "ca" , "hu" : "hu" ,
97- "hi" : "hi" , "id" : "id" , "tr" : "tr" , "he" : "he" , "el" : "el" , "de" : "de" , "it" : "it" ,
98- "no" : "no" , "cs" : "cs" , "sk" : "sk" , "ja" : "ja" , "fr" : "fr" , "fr-CA" : "fr-CA" , "pl" : "pl" ,
99- "th" : "th" , "sv" : "sv" , "zh-Hans" : "zh-Hans" , "zh-Hant" : "zh-Hant" , "ro" : "ro" ,
100- "fi" : "fi" , "en-CA" : "en-CA" , "en-AU" : "en-AU" , "en-GB" : "en-GB" , "nl" : "nl" ,
101- "pt-BR" : "pt-BR" , "pt-PT" : "pt-PT" , "es-MX" : "es-MX" , "es-ES" : "es-ES" , "vi" : "vi" ,
102- "ar" : "ar" , "ko" : "ko" , "ms" : "ms" ,
96+ "ar" : "ar-SA" , "ar-SA" : "ar-SA" ,
97+ "ca" : "ca" ,
98+ "zh-CN" : "zh-Hans" , "zh-Hans" : "zh-Hans" , "zh-Hans-CN" : "zh-Hans" ,
99+ "zh-TW" : "zh-Hant" , "zh-Hant" : "zh-Hant" , "zh-Hant-TW" : "zh-Hant" ,
100+ "hr" : "hr" , "cs" : "cs" , "da" : "da" ,
101+ "nl" : "nl-NL" , "nl-NL" : "nl-NL" ,
102+ "en-AU" : "en-AU" , "en-CA" : "en-CA" , "en-GB" : "en-GB" , "en-US" : "en-US" ,
103+ "fi" : "fi" , "fr-CA" : "fr-CA" , "fr-FR" : "fr-FR" , "fr" : "fr-FR" ,
104+ "de-DE" : "de-DE" , "de" : "de-DE" ,
105+ "el" : "el" , "he" : "he" , "hi" : "hi" , "hu" : "hu" , "id" : "id" ,
106+ "it" : "it" , "ja" : "ja" , "ko" : "ko" , "ms" : "ms" , "no" : "no" ,
107+ "pl" : "pl" , "pt-BR" : "pt-BR" , "pt-PT" : "pt-PT" , "ro" : "ro" ,
108+ "ru" : "ru" , "sk" : "sk" , "es-MX" : "es-MX" , "es-ES" : "es-ES" , "es" : "es-ES" ,
109+ "sv" : "sv" , "th" : "th" , "tr" : "tr" , "uk" : "uk" , "vi" : "vi" ,
103110 }
104-
111+
105112 if mappedCode , ok := appleConnectMap [code ]; ok {
106113 if meta , ok := LanguageMetadataMap [mappedCode ]; ok {
107114 return meta , true
@@ -112,46 +119,46 @@ func GetAppleConnectLanguageMetadata(code string) (LanguageMetadata, bool) {
112119
113120// LanguageMetadataMap contains detailed information about each language
114121var LanguageMetadataMap = map [string ]LanguageMetadata {
115- // Apple App Store Connect languages (37 languages)
116- "da" : {Code : "da" , Name : "Danish" , NativeName : "Dansk" , Region : "Europe" , Direction : "ltr" , Emoji : "🇩🇰" },
117- "uk" : {Code : "uk" , Name : "Ukrainian" , NativeName : "Українська" , Region : "Europe" , Direction : "ltr" , Emoji : "🇺🇦" },
118- "ru" : {Code : "ru" , Name : "Russian" , NativeName : "Русский" , Region : "Europe" , Direction : "ltr" , Emoji : "🇷🇺" },
119- "hr" : {Code : "hr" , Name : "Croatian" , NativeName : "Hrvatski" , Region : "Europe" , Direction : "ltr" , Emoji : "🇭🇷" },
122+ // Apple App Store Connect languages (41 languages)
123+ "ar-SA" : {Code : "ar-SA" , Name : "Arabic" , NativeName : "العربية" , Region : "Middle East" , Direction : "rtl" , Emoji : "🇸🇦" },
120124 "ca" : {Code : "ca" , Name : "Catalan" , NativeName : "Català" , Region : "Europe" , Direction : "ltr" , Emoji : "🇪🇸" },
121- "hu" : {Code : "hu" , Name : "Hungarian" , NativeName : "Magyar" , Region : "Europe" , Direction : "ltr" , Emoji : "🇭🇺" },
125+ "zh-Hans" : {Code : "zh-Hans" , Name : "Chinese (Simplified)" , NativeName : "简体中文" , Region : "Asia" , Direction : "ltr" , Emoji : "🇨🇳" },
126+ "zh-Hant" : {Code : "zh-Hant" , Name : "Chinese (Traditional)" , NativeName : "繁體中文" , Region : "Asia" , Direction : "ltr" , Emoji : "🇹🇼" },
127+ "hr" : {Code : "hr" , Name : "Croatian" , NativeName : "Hrvatski" , Region : "Europe" , Direction : "ltr" , Emoji : "🇭🇷" },
128+ "cs" : {Code : "cs" , Name : "Czech" , NativeName : "Čeština" , Region : "Europe" , Direction : "ltr" , Emoji : "🇨🇿" },
129+ "da" : {Code : "da" , Name : "Danish" , NativeName : "Dansk" , Region : "Europe" , Direction : "ltr" , Emoji : "🇩🇰" },
130+ "nl-NL" : {Code : "nl-NL" , Name : "Dutch" , NativeName : "Nederlands" , Region : "Europe" , Direction : "ltr" , Emoji : "🇳🇱" },
131+ "en-AU" : {Code : "en-AU" , Name : "English (Australia)" , NativeName : "English (Australia)" , Region : "Oceania" , Direction : "ltr" , Emoji : "🇦🇺" },
132+ "en-CA" : {Code : "en-CA" , Name : "English (Canada)" , NativeName : "English (Canada)" , Region : "Americas" , Direction : "ltr" , Emoji : "🇨🇦" },
133+ "en-GB" : {Code : "en-GB" , Name : "English (U.K.)" , NativeName : "English (U.K.)" , Region : "Europe" , Direction : "ltr" , Emoji : "🇬🇧" },
134+ "en-US" : {Code : "en-US" , Name : "English (U.S.)" , NativeName : "English (U.S.)" , Region : "Americas" , Direction : "ltr" , Emoji : "🇺🇸" },
135+ "fi" : {Code : "fi" , Name : "Finnish" , NativeName : "Suomi" , Region : "Europe" , Direction : "ltr" , Emoji : "🇫🇮" },
136+ "fr-CA" : {Code : "fr-CA" , Name : "French (Canada)" , NativeName : "Français (Canada)" , Region : "Americas" , Direction : "ltr" , Emoji : "🇨🇦" },
137+ "fr-FR" : {Code : "fr-FR" , Name : "French (France)" , NativeName : "Français (France)" , Region : "Europe" , Direction : "ltr" , Emoji : "🇫🇷" },
138+ "de-DE" : {Code : "de-DE" , Name : "German" , NativeName : "Deutsch" , Region : "Europe" , Direction : "ltr" , Emoji : "🇩🇪" },
139+ "el" : {Code : "el" , Name : "Greek" , NativeName : "Ελληνικά" , Region : "Europe" , Direction : "ltr" , Emoji : "🇬🇷" },
140+ "he" : {Code : "he" , Name : "Hebrew" , NativeName : "עברית" , Region : "Middle East" , Direction : "rtl" , Emoji : "🇮🇱" },
122141 "hi" : {Code : "hi" , Name : "Hindi" , NativeName : "हिन्दी" , Region : "Asia" , Direction : "ltr" , Emoji : "🇮🇳" },
142+ "hu" : {Code : "hu" , Name : "Hungarian" , NativeName : "Magyar" , Region : "Europe" , Direction : "ltr" , Emoji : "🇭🇺" },
123143 "id" : {Code : "id" , Name : "Indonesian" , NativeName : "Bahasa Indonesia" , Region : "Asia" , Direction : "ltr" , Emoji : "🇮🇩" },
124- "tr" : {Code : "tr" , Name : "Turkish" , NativeName : "Türkçe" , Region : "Asia" , Direction : "ltr" , Emoji : "🇹🇷" },
125- "he" : {Code : "he" , Name : "Hebrew" , NativeName : "עברית" , Region : "Middle East" , Direction : "rtl" , Emoji : "🇮🇱" },
126- "el" : {Code : "el" , Name : "Greek" , NativeName : "Ελληνικά" , Region : "Europe" , Direction : "ltr" , Emoji : "🇬🇷" },
127- "de" : {Code : "de" , Name : "German" , NativeName : "Deutsch" , Region : "Europe" , Direction : "ltr" , Emoji : "🇩🇪" },
128144 "it" : {Code : "it" , Name : "Italian" , NativeName : "Italiano" , Region : "Europe" , Direction : "ltr" , Emoji : "🇮🇹" },
129- "no" : {Code : "no" , Name : "Norwegian" , NativeName : "Norsk" , Region : "Europe" , Direction : "ltr" , Emoji : "🇳🇴" },
130- "cs" : {Code : "cs" , Name : "Czech" , NativeName : "Čeština" , Region : "Europe" , Direction : "ltr" , Emoji : "🇨🇿" },
131- "sk" : {Code : "sk" , Name : "Slovak" , NativeName : "Slovenčina" , Region : "Europe" , Direction : "ltr" , Emoji : "🇸🇰" },
132145 "ja" : {Code : "ja" , Name : "Japanese" , NativeName : "日本語" , Region : "Asia" , Direction : "ltr" , Emoji : "🇯🇵" },
133- "fr" : {Code : "fr" , Name : "French" , NativeName : "Français" , Region : "Europe" , Direction : "ltr" , Emoji : "🇫🇷" },
134- "fr-CA" : {Code : "fr-CA" , Name : "French (Canada)" , NativeName : "Français (Canada)" , Region : "Americas" , Direction : "ltr" , Emoji : "🇨🇦" },
146+ "ko" : {Code : "ko" , Name : "Korean" , NativeName : "한국어" , Region : "Asia" , Direction : "ltr" , Emoji : "🇰🇷" },
147+ "ms" : {Code : "ms" , Name : "Malay" , NativeName : "Bahasa Melayu" , Region : "Asia" , Direction : "ltr" , Emoji : "🇲🇾" },
148+ "no" : {Code : "no" , Name : "Norwegian" , NativeName : "Norsk" , Region : "Europe" , Direction : "ltr" , Emoji : "🇳🇴" },
135149 "pl" : {Code : "pl" , Name : "Polish" , NativeName : "Polski" , Region : "Europe" , Direction : "ltr" , Emoji : "🇵🇱" },
136- "th" : {Code : "th" , Name : "Thai" , NativeName : "ไทย" , Region : "Asia" , Direction : "ltr" , Emoji : "🇹🇭" },
137- "sv" : {Code : "sv" , Name : "Swedish" , NativeName : "Svenska" , Region : "Europe" , Direction : "ltr" , Emoji : "🇸🇪" },
138- "zh-Hans" : {Code : "zh-Hans" , Name : "Chinese (Simplified)" , NativeName : "简体中文" , Region : "Asia" , Direction : "ltr" , Emoji : "🇨🇳" },
139- "zh-Hant" : {Code : "zh-Hant" , Name : "Chinese (Traditional)" , NativeName : "繁體中文" , Region : "Asia" , Direction : "ltr" , Emoji : "🇹🇼" },
140- "ro" : {Code : "ro" , Name : "Romanian" , NativeName : "Română" , Region : "Europe" , Direction : "ltr" , Emoji : "🇷🇴" },
141- "fi" : {Code : "fi" , Name : "Finnish" , NativeName : "Suomi" , Region : "Europe" , Direction : "ltr" , Emoji : "🇫🇮" },
142- "en-US" : {Code : "en-US" , Name : "English (America)" , NativeName : "English (America)" , Region : "Americas" , Direction : "ltr" , Emoji : "🇺🇸" },
143- "en-CA" : {Code : "en-CA" , Name : "English (Canada)" , NativeName : "English (Canada)" , Region : "Americas" , Direction : "ltr" , Emoji : "🇨🇦" },
144- "en-AU" : {Code : "en-AU" , Name : "English (Australia)" , NativeName : "English (Australia)" , Region : "Oceania" , Direction : "ltr" , Emoji : "🇦🇺" },
145- "en-GB" : {Code : "en-GB" , Name : "English (United Kingdom)" , NativeName : "English (United Kingdom)" , Region : "Europe" , Direction : "ltr" , Emoji : "🇬🇧" },
146- "nl" : {Code : "nl" , Name : "Dutch" , NativeName : "Nederlands" , Region : "Europe" , Direction : "ltr" , Emoji : "🇳🇱" },
147150 "pt-BR" : {Code : "pt-BR" , Name : "Portuguese (Brazil)" , NativeName : "Português (Brasil)" , Region : "Americas" , Direction : "ltr" , Emoji : "🇧🇷" },
148151 "pt-PT" : {Code : "pt-PT" , Name : "Portuguese (Portugal)" , NativeName : "Português (Portugal)" , Region : "Europe" , Direction : "ltr" , Emoji : "🇵🇹" },
152+ "ro" : {Code : "ro" , Name : "Romanian" , NativeName : "Română" , Region : "Europe" , Direction : "ltr" , Emoji : "🇷🇴" },
153+ "ru" : {Code : "ru" , Name : "Russian" , NativeName : "Русский" , Region : "Europe" , Direction : "ltr" , Emoji : "🇷🇺" },
154+ "sk" : {Code : "sk" , Name : "Slovak" , NativeName : "Slovenčina" , Region : "Europe" , Direction : "ltr" , Emoji : "🇸🇰" },
149155 "es-MX" : {Code : "es-MX" , Name : "Spanish (Mexico)" , NativeName : "Español (México)" , Region : "Americas" , Direction : "ltr" , Emoji : "🇲🇽" },
150156 "es-ES" : {Code : "es-ES" , Name : "Spanish (Spain)" , NativeName : "Español (España)" , Region : "Europe" , Direction : "ltr" , Emoji : "🇪🇸" },
157+ "sv" : {Code : "sv" , Name : "Swedish" , NativeName : "Svenska" , Region : "Europe" , Direction : "ltr" , Emoji : "🇸🇪" },
158+ "th" : {Code : "th" , Name : "Thai" , NativeName : "ไทย" , Region : "Asia" , Direction : "ltr" , Emoji : "🇹🇭" },
159+ "tr" : {Code : "tr" , Name : "Turkish" , NativeName : "Türkçe" , Region : "Asia" , Direction : "ltr" , Emoji : "🇹🇷" },
160+ "uk" : {Code : "uk" , Name : "Ukrainian" , NativeName : "Українська" , Region : "Europe" , Direction : "ltr" , Emoji : "🇺🇦" },
151161 "vi" : {Code : "vi" , Name : "Vietnamese" , NativeName : "Tiếng Việt" , Region : "Asia" , Direction : "ltr" , Emoji : "🇻🇳" },
152- "ar" : {Code : "ar" , Name : "Arabic" , NativeName : "العربية" , Region : "Middle East" , Direction : "rtl" , Emoji : "🇸🇦" },
153- "ko" : {Code : "ko" , Name : "Korean" , NativeName : "한국어" , Region : "Asia" , Direction : "ltr" , Emoji : "🇰🇷" },
154- "ms" : {Code : "ms" , Name : "Malay" , NativeName : "Bahasa Melayu" , Region : "Asia" , Direction : "ltr" , Emoji : "🇲🇾" },
155162}
156163
157164// IsSupportedLanguage checks if a language code is allowed
@@ -200,4 +207,4 @@ func GetLanguageEmoji(code string) string {
200207 return lang .Emoji
201208 }
202209 return "🌐"
203- }
210+ }
0 commit comments