Override legacy language codes for indonesian, hebrew, and yiddish (#4461)

* Manually override incorrect 'in' to 'id' lang code

* Fix additional legacy language code issues
zio/stable
Paul Frazee 2024-06-10 11:37:14 -07:00 committed by GitHub
parent 620ab88713
commit 59f49bef68
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 2 deletions

View File

@ -116,7 +116,7 @@ export function sanitizeAppLanguageSetting(appLanguage: string): AppLanguage {
const langs = appLanguage.split(',').filter(Boolean)
for (const lang of langs) {
switch (lang) {
switch (fixLegacyLanguageCode(lang)) {
case 'en':
return AppLanguage.en
case 'ca':
@ -157,3 +157,20 @@ export function sanitizeAppLanguageSetting(appLanguage: string): AppLanguage {
}
return AppLanguage.en
}
export function fixLegacyLanguageCode(code: string | null): string | null {
// handle some legacy code conversions, see https://xml.coverpages.org/iso639a.html
if (code === 'in') {
// indonesian
return 'id'
}
if (code === 'iw') {
// hebrew
return 'he'
}
if (code === 'ji') {
// yiddish
return 'yi'
}
return code
}

View File

@ -2,6 +2,7 @@ import {Platform} from 'react-native'
import {isReducedMotion} from 'react-native-reanimated'
import {getLocales} from 'expo-localization'
import {fixLegacyLanguageCode} from '#/locale/helpers'
import {dedupArray} from 'lib/functions'
export const isIOS = Platform.OS === 'ios'
@ -17,7 +18,7 @@ export const isMobileWeb =
export const deviceLocales = dedupArray(
getLocales?.()
.map?.(locale => locale.languageCode)
.map?.(locale => fixLegacyLanguageCode(locale.languageCode))
.filter(code => typeof code === 'string'),
) as string[]