Как перевести плагины
Перевод плагинов и шаблонов Osclass. i18n является аббревиатурой internationalization. Вы можете получить дополнительную информацию из Википедии. OSClass использует библиотеки GNU Gettext.
Для того, чтобы переводимые строки выводились в приложении, необходимо обернуть исходную строку:
($text) — ищет версию для перевода $text и возвращает результат, а именно:(«Hello») ; _e($text) — ищет переведенную версию $text и выводит результат на экран
(same as echo __($text))
_e("Hello") ;
Однако, для того, чтобы сделать строку перевода для плагина или шаблона, вы должны добавить дополнительный параметр в функцию:
__($text, $domain) и _e($text, $domain). Переменная $domain будет выводить название плагина или темы. В случае основным шаблоном modern, он будет выглядеть так: __("Hello", "modern") and _e("Hello", "modern").
Если вы хотите добавить переменные в строки, следующий код не будет работать:
__e("Hello $name", "modern") ;
Строка для перевода, взята из источников, так что в переводе увидите: Hello $name. Тем не менее, _e будет вызван с аргументом, как Hello Juan и Gettext не найдет подходящий перевод и будет возвращать аргумент: Hello Juan. Решение заключается в использовании Printf. Вот правильное решение:
printf(__("Hello %s", "modern"), $name) ;
Практические советы
Целые фразы: в большинстве языков порядок слов отличается. Разделитель в строках: не включают в себя целые страницы текста в одной строке. Используйте sprintf и printf:
sprintf(__('Replace %s with %s', 'modern'), $a, $b) ;
или
__('Replace ') . $a . __(' with ') . $b ;
Создание файлов .PO
Это файл, который отвечает за перевод строк. Путей создания POT файла множество, мы используем для редактирования и создания программу POedit. Эта статья объясняет, как создать .PO файл. После окончания перевода, вы должны поместить в нужное место файл .mo:
Темы: {theme folder}/languages/{locale}/theme.mo Плагины: {plugin folder}/languages/{locale}/messages.mo
{locale} используется ISO код языков, а именно: ru_RU, en_US, es_ES, de_DE, fr_FR, es_AR и т.д.
Напоследок, если вы хотите заменить флэш-сообщения, вы должны скопировать файл изменить перевод при помощи POedit в файле .ро (он генерирует файл .mo).