Closed Mikhail84 closed 8 years ago
Добрый день!
Ок, вопрос понятен. Сейчас в плагине нет возможности программно изменять файлы локализации, которые использует Лейка. Ранее мы никогда не сталкивались с такой потребностью.
В будущей версии мы добавим программный фильтр для имён/адресов файлов _.mo/_po.
Сейчас могу рекомендовать попробовать следующее:
load_plugin_textdomain('leyka', FALSE, get_template_directory().'/your-lang-subfolder/');
после того, как она отрабатывает в плагине. Например, повесить это на action-хук "init".Но результат, боюсь, не гарантирован. Пжлст, расскажите, что у вас получится.
Этот вариант не увенчался успехом. Следующий код добавил в functions.php дочерней темы
function leyka_link_custom_libraries() {
load_plugin_textdomain('leyka', false, get_stylesheet_directory_uri().'/languages/plugins/');
}
add_action('init', 'leyka_link_custom_libraries');
Вышли пока из положения модернизацией одного из виджетов Лейки.
Ок, спасибо за эксперимент. Мы добавили 2 фильтра для кастомизации папки с файлами локализации и mо-файла с переводом:
Они появятся в следующей версии плагина. Как вариант, вы можете уже сейчас взять текущий код из ветки dev.
Добрый день! Видел изменения, а не могли бы вы привести пример как правильно назначить путь с использованием введенных фильтров, пробовал в functions.php добавлять add_filter с возвратом нужного пути, но не увидел изменений из своего словаря, наверно что-то не так делаю.
Добрый день!
Мы провели новые тесты.
add_action('init', function(){
unload_textdomain('leyka'); // Выгрузка локализации "по умолчанию"
// Загрузка вашей кастомной локализации (нужно указать абс. адрес к mo-файлу):
load_textdomain('leyka', get_template_directory()."/lang/leyka-ru_RU.mo");
});
У нас на тестах это работает. Пожалуйста, сообщите о ваших результатах.
Как вариант, можно попробовать пункт №9 в этой статье: https://www.toptal.com/wordpress/top-wordpress-development-mistakes
Да, спасибо. Это тоже хороший вариант. Особенно для кейсов, когда нужно поменять небольшое кол-во формулировок.
Решение Ahaenor работает! Спасибо за помощь!
Ура) Мы рады помочь, обращайтесь.
Еще обозначился более явно нюанс, при переключении локалей не происходит автоматического переключении словарей плагина (или скорее "отключение" так как в комплекте словарь только русский), как вариант сделал так
add_action("init", function() {
add_filter("locale", function($language) {
if ($language == "ru_RU") {
load_textdomain("leyka");
} else {
unload_textdomain("leyka");
}
});
});
Ок. Как именно вы переключаете локали?
Лейка совместима с Polylang, в нём язык должен переключаться корректно.
Но мы не тестировали при физической смене локали сайта. Вы говорите об этой ситуации?
На сайте стоит плагин qTranslate X, переключение с помощье его виджета. Проверял после переключения функцией get_locale(), результат выдавала в соответствии с выбранным языком то есть "ru-RU" для русского и "en-US" для английского.
Возможно ли использовать измененные под конкретные нужды сайта файлы /wp-content/plugins/leyka/lang/leyka-ru_RU.mo /wp-content/plugins/leyka/lang/leyka-ru_RU.po
в дочерней теме, например, /wp-content/themes/twentysixteen-child
и где именно их разместить, чтобы плагин их увидел?