Как работает система мультиязычности в CMS-Social

Как работают переводы стандартных файлов 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.: Статья будет дополнена..