Как работают переводы стандартных файлов CMS-Social
Давайте разберем для начала, как работает перевод ядра и стандартных модулей Social. Как известно, в системе старых версий уже была функция __($string), именно она начинает свой путь для возможности создания переводов текста.
В аргументах __($arg1, $arg2.., ,), первым передаётся строка самого текста, вторым и последующими аргументами, можно передавать замену динамической части текста, первого аргумента.
Вся конструкция __() работает в связке с функцией sprintf(), поэтому форматирование строк осуществляется в соответствии с документацией sprintf().
Пример работы функции перевода системных файлов (с англ. языком)
echo __('Привет'); // Hello
echo __('Привет %s', 'Admin'); // Hello Admin
echo __('Привет %s', 'Test'); // Hello Test
echo __('У вас %s% рейтинга, и %s баллов', 25, 115); // You have 25% rating, and 115 points
Внимание! Использование функции __() плагинах и шаблонах, крайне не рекомендуется!
Как переводить темы и плагины
Для перевода плагинов, используйте функцию __p($string, $slug) она очень похожа на __(), но с тем отличием что во втором аргументе, необходимо использовать название папки плагина, а уже в последующих аргументах замену динамической строки.
Пример работы мультиязычности в плагинах (с англ. языком)
$plugin_path = ROOTPATH . '/sys/plugins/main-plugin';
$slug = 'main-plugin';
echo __p('Привет', $slug); // Hello
echo __p('Привет %s', $slug, 'Admin'); // Hello Admin
echo __p('Привет %s', $slug, 'Test'); // Hello Test
echo __p('У вас %s% рейтинга, и %s баллов', $slug, 25, 115);
// You have 25% rating, and 115 points
Для тем оформления, используется аналогичная функция __t($string, $slug), только в этом случае, второй аргумент должен соответствовать названию папки темы. К примеру если тема лежит по адресу ./style/themes/nineteen, то вторым параметром должно идти слово nineteen.
Пример работы мультиязычности в темах оформления (с англ. языком)
$theme_path = ROOTPATH . '/sys/plugins/nineteen';
$slug = 'nineteen';
echo __t('Привет', $slug); // Hello
echo __t('Привет %s', $slug, 'Admin'); // Hello Admin
echo __t('Привет %s', $slug, 'Test'); // Hello Test
echo __t('У вас %s% рейтинга, и %s баллов', $slug, 25, 115);
// You have 25% rating, and 115 points
Ps.: Статья будет дополнена..