Ctrl K
ComunidadGuías…

src/services/i18n.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import countryCodeToFlagEmoji from 'country-code-to-flag-emoji'
import { toast } from 'vue-sonner'
import { getSelectedLanguage, i18n, loadLanguageAsync, normalizeLanguage, RemoteLanguageError } from '../modules/i18n'

const countryCodes: Record<string, string> = {
  'en': 'US',
  'hi': 'IN',
  'ja': 'JP',
  'ko': 'KR',
  'pt-br': 'BR',
  'vi': 'VN',
  'zh-cn': 'CN',
}

export function getEmoji(locale: string) {
  return countryCodeToFlagEmoji((countryCodes[locale] ?? locale).toUpperCase())
}

export async function changeLanguage(lang: string) {
  const currentLanguage = getSelectedLanguage()
  const nextLanguage = normalizeLanguage(lang)

  if (currentLanguage === nextLanguage)
    return currentLanguage

  try {
    await loadLanguageAsync(nextLanguage)
    return nextLanguage
  }
  catch (error) {
    if (error instanceof RemoteLanguageError && error.reason === 'pending')
      toast.info(i18n.global.t('translation-not-ready'))
    else
      toast.error(i18n.global.t('translation-unavailable'))

    return currentLanguage
  }
}