У меня установлено расширение php intl для нормализации строк и получения названий языков и стран для выбранного языка. У меня есть 2 поля выбора, одно из которых позволяет выбрать страну, в которой находится человек, и выбрать язык для сайта. Теперь я использовал функцию _ () для перевода сайта.
Теперь, когда я делаю ./locale -a, чтобы увидеть все поддерживаемые языки, и когда я сопоставляю это с локалями, поддерживаемыми расширением intl (intlcal_get_available_locales ()), есть много различий. Я пытался сопоставить их, и это вроде работает, но я не могу поверить, что это предпочтительный метод для этого.
Я борюсь с этим очень долго. Как я могу лучше всего решить это. Что я делаю неправильно? Есть ли лучший способ сделать локализацию и перевод.
Для каждой возможной страны в ISO 3166 я сопоставил локали из расширения intl. Для стран, которые не указаны в расширении intl, я сам их сопоставил. Например, код страны AQ я сопоставил с nb_NO. Я также попытался отобразить основной языковой стандарт для каждой страны, в которой имеется несколько языковых стандартов.
Следующие проблемы, с которыми я столкнулся:
Если я хочу поддерживать арабский язык (ar), существует nog ar_AR, поэтому я должен использовать, например, ar_AE для использования в setlocale, в противном случае я не могу установить там переводы для ar.
Локаль mn_MN поддерживается в setlocale, но не поддерживается в расширении intl.
Задача ещё не решена.
Других решений пока нет …