tarasfrompir

<<< Back

Использование "международной" кодировки

Описание способа получения расширеного кода языка - для использования в МАЖОРДОМО

Данная статья была написана по моим старым запискам, в которых очень часто встречается необходимость использования полного кода языка в данном проекте..
Для передачи на терминалы, которые самостоятельно могут генерировать речь...
При генерации речи с онлайн сервисов...

Для использования в модуле PHP_MORPHY.
и т.д.
Периодически в коде самого мажордомо да и некоторых терминалов в частности Хромгейт используется такая конструкция

    if (SETTINGS_SITE_LANGUAGE == 'ru') {
        $lang = 'ru_RU';
    } else if (SETTINGS_SITE_LANGUAGE == 'ua') {
        $lang = 'uk_UA';
    } else {
        $lang = 'en_EN';
    }

Вот как по мне она неудачная . Я не против такой конструкции, Просто тут до многоязычности както далековато.

ИСПРАВЛЕНО
За ночь было передумано многое - и найдено упрощение всего этого безобразия, поэтому этот вариант № 2 будет сверху
Упрощение заключается в том что дабы не грузить в память еще один массив, и причем такой массив в системе уже есть - это перевод системы на разную локализацию.. Поэтому выход очень простой.
Вариант 2

  1. В файле локализации (в моем случае это ua.php) добавить вот такую строку -
    'SETTINGS_SITE_LANGUAGE_CODE'=>'uk_UA',
    код для языка берем отсюда - https://cloud.google.com/speech-to-text/docs/langu...

  2. В файле load_settings.php необходимо изменить это
    // language selection by settings
    if (SETTINGS_SITE_LANGUAGE && file_exists(ROOT . 'languages/' . SETTINGS_SITE_LANGUAGE . '.php')) {
    include_once(ROOT . 'languages/' . SETTINGS_SITE_LANGUAGE . '.php');
    }
    include_once(ROOT . 'languages/default.php');

    на вот это

    // language selection by settings
    if (SETTINGS_SITE_LANGUAGE && file_exists(ROOT . 'languages/' . SETTINGS_SITE_LANGUAGE . '.php')) {
    include_once(ROOT . 'languages/' . SETTINGS_SITE_LANGUAGE . '.php');
    Define('SETTINGS_SITE_LANGUAGE_CODE', LANG_SETTINGS_SITE_LANGUAGE_CODE);
    } else {
    include_once(ROOT . 'languages/default.php');
    Define('SETTINGS_SITE_LANGUAGE_CODE', 'en_GB');
    }

    Ну и все

Вариант № 1
Для этого я поколупался в коде и написал такую инструкцию...

  1. Необходимо в корне сервера создать файл languages.php с возможными вариантами кодировок языков
    <?php
    $lang_array=array(
    'sq'=>array('FULL_FORMAT'=>'sq-AL','FULL_NAME'=>'Албанский','DEC_CODE'=>'1052'),
    'am'=>array('FULL_FORMAT'=>'am-ET','FULL_NAME'=>'Амхарский','DEC_CODE'=>'1118'),
    'en'=>array('FULL_FORMAT'=>'en-US','FULL_NAME'=>'Английский','DEC_CODE'=>'1033'),
    'ar'=>array('FULL_FORMAT'=>'ar-DZ','FULL_NAME'=>'Арабский','DEC_CODE'=>'5121'),
    'hy'=>array('FULL_FORMAT'=>'hy-AM','FULL_NAME'=>'Армянский','DEC_CODE'=>'1067'),
    'as'=>array('FULL_FORMAT'=>'as-IN','FULL_NAME'=>'Ассамский','DEC_CODE'=>'1101'),
    'af'=>array('FULL_FORMAT'=>'af-ZA','FULL_NAME'=>'Африкаанс','DEC_CODE'=>'1078'),
    'eu'=>array('FULL_FORMAT'=>'eu-ES','FULL_NAME'=>'Баскский','DEC_CODE'=>'1069'),
    'ba'=>array('FULL_FORMAT'=>'ba-RU','FULL_NAME'=>'Башкирский','DEC_CODE'=>'1133'),
    'be'=>array('FULL_FORMAT'=>'be-BY','FULL_NAME'=>'Белорусский','DEC_CODE'=>'1059'),
    'bn'=>array('FULL_FORMAT'=>'bn-BD','FULL_NAME'=>'Бенгальский','DEC_CODE'=>'2117'),
    'bn'=>array('FULL_FORMAT'=>'bn-IN','FULL_NAME'=>'Бенгальский','DEC_CODE'=>'1093'),
    'bg'=>array('FULL_FORMAT'=>'bg-BG','FULL_NAME'=>'Болгарский','DEC_CODE'=>'1026'),
    'br'=>array('FULL_FORMAT'=>'br-FR','FULL_NAME'=>'Бретонский','DEC_CODE'=>'1150'),
    'cy'=>array('FULL_FORMAT'=>'cy-GB','FULL_NAME'=>'Валлийский','DEC_CODE'=>'1106'),
    'hu'=>array('FULL_FORMAT'=>'hu-HU','FULL_NAME'=>'Венгерский','DEC_CODE'=>'1038'),
    'wo'=>array('FULL_FORMAT'=>'wo-SN','FULL_NAME'=>'Волоф','DEC_CODE'=>'1160'),
    'vi'=>array('FULL_FORMAT'=>'vi-VN','FULL_NAME'=>'Вьетнамский','DEC_CODE'=>'1066'),
    'gl'=>array('FULL_FORMAT'=>'gl-ES','FULL_NAME'=>'Галисийский','DEC_CODE'=>'1110'),
    'kl'=>array('FULL_FORMAT'=>'kl-GL','FULL_NAME'=>'Гренландский','DEC_CODE'=>'1135'),
    'ka'=>array('FULL_FORMAT'=>'ka-GE','FULL_NAME'=>'Грузинский','DEC_CODE'=>'1079'),
    'gu'=>array('FULL_FORMAT'=>'gu-IN','FULL_NAME'=>'Гуджарати','DEC_CODE'=>'1095'),
    'da'=>array('FULL_FORMAT'=>'da-DK','FULL_NAME'=>'Датский','DEC_CODE'=>'1030'),
    'he'=>array('FULL_FORMAT'=>'he-IL','FULL_NAME'=>'Иврит','DEC_CODE'=>'1037'),
    'ig'=>array('FULL_FORMAT'=>'ig-NG','FULL_NAME'=>'Игбо','DEC_CODE'=>'1136'),
    'id'=>array('FULL_FORMAT'=>'id-ID','FULL_NAME'=>'Индонезийский','DEC_CODE'=>'1057'),
    'iu'=>array('FULL_FORMAT'=>'iu-Latn-CA','FULL_NAME'=>'Инуктитут','DEC_CODE'=>'2141'),
    'yo'=>array('FULL_FORMAT'=>'yo-NG','FULL_NAME'=>'Йоруба','DEC_CODE'=>'1130'),
    'ga'=>array('FULL_FORMAT'=>'ga-IE','FULL_NAME'=>'Ирландский','DEC_CODE'=>'2108'),
    'is'=>array('FULL_FORMAT'=>'is-IS','FULL_NAME'=>'Исландский','DEC_CODE'=>'1039'),
    'es'=>array('FULL_FORMAT'=>'es-ES','FULL_NAME'=>'Испанский','DEC_CODE'=>'3082'),
    'it'=>array('FULL_FORMAT'=>'it-IT','FULL_NAME'=>'Итальянский','DEC_CODE'=>'1040'),
    'kk'=>array('FULL_FORMAT'=>'kk-KZ','FULL_NAME'=>'Казахский','DEC_CODE'=>'1087'),
    'kn'=>array('FULL_FORMAT'=>'kn-IN','FULL_NAME'=>'Каннада','DEC_CODE'=>'1099'),
    'ca'=>array('FULL_FORMAT'=>'ca-ES','FULL_NAME'=>'Каталанский','DEC_CODE'=>'1027'),
    'qu'=>array('FULL_FORMAT'=>'quz-BO','FULL_NAME'=>'Кечуа','DEC_CODE'=>'1131'),
    'ky'=>array('FULL_FORMAT'=>'ky-KG','FULL_NAME'=>'Киргизский','DEC_CODE'=>'1088'),
    'zh'=>array('FULL_FORMAT'=>'zh-CHT','FULL_NAME'=>'Китайский','DEC_CODE'=>'31748'),
    'ko'=>array('FULL_FORMAT'=>'ko-KR','FULL_NAME'=>'Корейский','DEC_CODE'=>'1042'),
    'km'=>array('FULL_FORMAT'=>'km-KH','FULL_NAME'=>'Кхмерский','DEC_CODE'=>'1107'),
    'lo'=>array('FULL_FORMAT'=>'lo-LA','FULL_NAME'=>'Лаосский','DEC_CODE'=>'1108'),
    'lv'=>array('FULL_FORMAT'=>'lv-LV','FULL_NAME'=>'Латышский','DEC_CODE'=>'1062'),
    'lt'=>array('FULL_FORMAT'=>'lt-LT','FULL_NAME'=>'Литовский','DEC_CODE'=>'1063'),
    'lb'=>array('FULL_FORMAT'=>'lb-LU','FULL_NAME'=>'Люксембургский','DEC_CODE'=>'1134'),
    'mk'=>array('FULL_FORMAT'=>'mk-MK','FULL_NAME'=>'Македонский','DEC_CODE'=>'1071'),
    'ms'=>array('FULL_FORMAT'=>'ms-MY','FULL_NAME'=>'Малайский','DEC_CODE'=>'1086'),
    'ml'=>array('FULL_FORMAT'=>'ml-IN','FULL_NAME'=>'Малаялам','DEC_CODE'=>'1100'),
    'mt'=>array('FULL_FORMAT'=>'mt-MT','FULL_NAME'=>'Мальтийский','DEC_CODE'=>'1082'),
    'mi'=>array('FULL_FORMAT'=>'mi-NZ','FULL_NAME'=>'Маори','DEC_CODE'=>'1153'),
    'mr'=>array('FULL_FORMAT'=>'mr-IN','FULL_NAME'=>'Маратхи','DEC_CODE'=>'1102'),
    'mn'=>array('FULL_FORMAT'=>'mn-MN','FULL_NAME'=>'монгольский','DEC_CODE'=>'1104'),
    'de'=>array('FULL_FORMAT'=>'de-DE','FULL_NAME'=>'Немецкий','DEC_CODE'=>'1031'),
    'ne'=>array('FULL_FORMAT'=>'ne-NP','FULL_NAME'=>'Непальский','DEC_CODE'=>'1121'),
    'or'=>array('FULL_FORMAT'=>'or-IN','FULL_NAME'=>'Ория','DEC_CODE'=>'1096'),
    'pa'=>array('FULL_FORMAT'=>'pa-IN','FULL_NAME'=>'Пенджабский','DEC_CODE'=>'1094'),
    'pl'=>array('FULL_FORMAT'=>'pl-PL','FULL_NAME'=>'Польский','DEC_CODE'=>'1045'),
    'pt'=>array('FULL_FORMAT'=>'pt-PT','FULL_NAME'=>'Португальский','DEC_CODE'=>'2070'),
    'ps'=>array('FULL_FORMAT'=>'ps-AF','FULL_NAME'=>'Пушту','DEC_CODE'=>'1123'),
    'rm'=>array('FULL_FORMAT'=>'rm-CH','FULL_NAME'=>'Ретороманский','DEC_CODE'=>'1047'),
    'ro'=>array('FULL_FORMAT'=>'ro-RO','FULL_NAME'=>'Румынский','DEC_CODE'=>'1048'),
    'ru'=>array('FULL_FORMAT'=>'ru-RU','FULL_NAME'=>'Русский','DEC_CODE'=>'1049'),
    'sa'=>array('FULL_FORMAT'=>'sa-IN','FULL_NAME'=>'Санскрит','DEC_CODE'=>'1103'),
    'si'=>array('FULL_FORMAT'=>'si-LK','FULL_NAME'=>'Сингальский','DEC_CODE'=>'1115'),
    'sd'=>array('FULL_FORMAT'=>'sd-Arab-PK','FULL_NAME'=>'Синдхи','DEC_CODE'=>'2137'),
    'sk'=>array('FULL_FORMAT'=>'sk-SK','FULL_NAME'=>'Словацкий','DEC_CODE'=>'1051'),
    'sl'=>array('FULL_FORMAT'=>'sl-SI','FULL_NAME'=>'Словенский','DEC_CODE'=>'1060'),
    'sw'=>array('FULL_FORMAT'=>'sw-KE','FULL_NAME'=>'Суахили','DEC_CODE'=>'1089'),
    'tg'=>array('FULL_FORMAT'=>'tg-Cyrl-TJ','FULL_NAME'=>'Таджикский','DEC_CODE'=>'1064'),
    'th'=>array('FULL_FORMAT'=>'th-TH','FULL_NAME'=>'Тайский','DEC_CODE'=>'1054'),
    'ta'=>array('FULL_FORMAT'=>'ta-IN','FULL_NAME'=>'Тамильский','DEC_CODE'=>'1097'),
    'tt'=>array('FULL_FORMAT'=>'tt-RU','FULL_NAME'=>'Татарский','DEC_CODE'=>'1092'),
    'te'=>array('FULL_FORMAT'=>'te-IN','FULL_NAME'=>'Телугу','DEC_CODE'=>'1098'),
    'bo'=>array('FULL_FORMAT'=>'bo-CN','FULL_NAME'=>'Тибетский','DEC_CODE'=>'1105'),
    'ti'=>array('FULL_FORMAT'=>'ti-ET','FULL_NAME'=>'Тигринья','DEC_CODE'=>'1139'),
    'tn'=>array('FULL_FORMAT'=>'tn-ZA','FULL_NAME'=>'Тсвана','DEC_CODE'=>'1074'),
    'tr'=>array('FULL_FORMAT'=>'tr-TR','FULL_NAME'=>'Турецкий','DEC_CODE'=>'1055'),
    'tk'=>array('FULL_FORMAT'=>'tk-TM','FULL_NAME'=>'Туркменский','DEC_CODE'=>'1090'),
    'uz'=>array('FULL_FORMAT'=>'uz-Cyrl-UZ','FULL_NAME'=>'Узбекский','DEC_CODE'=>'2115'),
    'ug'=>array('FULL_FORMAT'=>'ug-CN','FULL_NAME'=>'Уйгурский','DEC_CODE'=>'1152'),
    'ua'=>array('FULL_FORMAT'=>'uk-UA','FULL_NAME'=>'Украинский','DEC_CODE'=>'1058'),
    'ur'=>array('FULL_FORMAT'=>'ur-PK','FULL_NAME'=>'Урду','DEC_CODE'=>'1056'),
    'fo'=>array('FULL_FORMAT'=>'fo-FO','FULL_NAME'=>'Фарерский','DEC_CODE'=>'1080'),
    'fl'=>array('FULL_FORMAT'=>'fil-PH','FULL_NAME'=>'Филиппинский','DEC_CODE'=>'1124'),
    'fr'=>array('FULL_FORMAT'=>'fr-FR','FULL_NAME'=>'Французский','DEC_CODE'=>'1036'),
    'fy'=>array('FULL_FORMAT'=>'fy-NL','FULL_NAME'=>'Фризский','DEC_CODE'=>'1122'),
    'ha'=>array('FULL_FORMAT'=>'ha-Latn-NG','FULL_NAME'=>'Хауса','DEC_CODE'=>'1128'),
    'hi'=>array('FULL_FORMAT'=>'hi-IN','FULL_NAME'=>'Хинди','DEC_CODE'=>'1081'),
    'hr'=>array('FULL_FORMAT'=>'hr-HR','FULL_NAME'=>'Хорватский','DEC_CODE'=>'1050'),
    'cs'=>array('FULL_FORMAT'=>'cs-CZ','FULL_NAME'=>'Чешский','DEC_CODE'=>'1029'),
    'sv'=>array('FULL_FORMAT'=>'sv-SE','FULL_NAME'=>'Шведский','DEC_CODE'=>'1053'),
    'et'=>array('FULL_FORMAT'=>'et-EE','FULL_NAME'=>'Эстонский','DEC_CODE'=>'1061'),
    'ja'=>array('FULL_FORMAT'=>'ja-JP','FULL_NAME'=>'Японский','DEC_CODE'=>'1041'),
    );
  2. в файл load_settings.php
    вставить вместо
    if ($_GET['lang']) {
    Define("SETTINGS_SITE_LANGUAGE", $_GET['lang']);
    $_SESSION['lang'] = SETTINGS_SITE_LANGUAGE;
    } elseif ($_SESSION['lang']) {
    Define("SETTINGS_SITE_LANGUAGE", $_SESSION['lang']);
    }
    for ($i = 0; $i < $total; $i++)
    Define('SETTINGS_' . $settings[$i]['NAME'], $settings[$i]['VALUE']);
    if (!defined('SETTINGS_SITE_LANGUAGE')) {
    Define('SETTINGS_SITE_LANGUAGE', 'en');
    }
@include_once(ROOT . 'languages.php');

if ($_GET['lang']) {
    Define('SETTINGS_SITE_LANGUAGE', $_GET['lang']);
    Define('SETTINGS_SITE_LANGUAGE_CODE', $lang_array[SETTINGS_SITE_LANGUAGE]['FULL_FORMAT']);
    Define('SETTINGS_SITE_LANGUAGE_FULL', $lang_array[SETTINGS_SITE_LANGUAGE]['FULL_NAME']);

    $_SESSION['lang'] = SETTINGS_SITE_LANGUAGE;
} elseif ($_SESSION['lang']) {
    Define('SETTINGS_SITE_LANGUAGE', $_SESSION['lang']);
    Define('SETTINGS_SITE_LANGUAGE_CODE', $lang_array[SETTINGS_SITE_LANGUAGE]['FULL_FORMAT']);
    Define('SETTINGS_SITE_LANGUAGE_FULL', $lang_array[SETTINGS_SITE_LANGUAGE]['FULL_NAME']);}

for ($i = 0; $i < $total; $i++)
    Define('SETTINGS_' . $settings[$i]['NAME'], $settings[$i]['VALUE']);

if (!defined('SETTINGS_SITE_LANGUAGE')) {
    Define('SETTINGS_SITE_LANGUAGE', 'en');
    Define('SETTINGS_SITE_LANGUAGE_CODE', $lang_array['en']['FULL_FORMAT']);
    Define('SETTINGS_SITE_LANGUAGE_FULL', $lang_array['en']['FULL_NAME']);}
}

Нашел языки распознавания гугла надо бы пересмотреть

https://cloud.google.com/speech-to-text/docs/languages
майкрософт
https://docs.microsoft.com/ru-ru/azure/cognitive-services/speech/api-reference-rest/supportedlanguages

Discuss (8) (0)

See also:
2019-04-09 Ох вы ж эти терминалы.....
2019-03-19 Как-бы да если-бы... Я бы передавал температуру на термостат...
2018-11-14 Очередь сообщений в терминалах (через таймер) (УЖЕ в Альфе)

Пирятин, Украина

На форуме: tarasfrompir

Web-site URL:
http://netu_u_menya_sayta.world