слетает перевод плагина

123 4
L
На сайте с 01.02.2011
Offline
163
1570

поместил ру версии po mo в папку languages у плагина и все робит.

но иногда файлы просто исчезают, при том что плагин не обновляется кликом.

что с этим можно сделать? можно ли как с вукомрц в теме сайта - какие то файлы "вынести", чтобы они применялись, но не затрагивались при обновлении?

Gerga
На сайте с 02.08.2015
Offline
94
#1
Linblack:
в папку languages у плагина и все робит.

эта папка может обновляться без полного обновления плагина.

Linblack:
что с этим можно сделать?

можно указать другую папку для перевода функциями load_plugin_textdomain / load_theme_textdomain / load_textdomain

https://wp-kama.ru/function/load_plugin_textdomain

https://wp-kama.ru/function/load_theme_textdomain

https://wp-kama.ru/function/load_textdomain

---------- Добавлено 24.08.2019 в 16:14 ----------

Ну а вообще, плагин https://wordpress.org/plugins/loco-translate/ хорош для перевода

L
На сайте с 01.02.2011
Offline
163
#2
Gerga:
эта папка может обновляться без полного обновления плагина.


можно указать другую папку для перевода функциями load_plugin_textdomain / load_theme_textdomain / load_textdomain

https://wp-kama.ru/function/load_plugin_textdomain

https://wp-kama.ru/function/load_theme_textdomain

https://wp-kama.ru/function/load_textdomain

---------- Добавлено 24.08.2019 в 16:14 ----------

Ну а вообще, плагин https://wordpress.org/plugins/loco-translate/ хорош для перевода

плагин тексдомейн читаю - #1.2

т.е. мне куда этот код писать? тут в корне плагина 2 файла - индекс пхп и плагиннеймп пхп.

и я так понимаю - я прописываю код из 1.2 в один из этих пхп файлов и кидаю в корень файлы po mo?

при этом "__FILE__ " меняю на полное имя перевода. и нужно указать только mo?

если все так - то при обновлении плагина - эта система не может снова слететь? если файл пхп из корня папки - будет изменен?

Gerga
На сайте с 02.08.2015
Offline
94
#3
Linblack:
т.е. мне куда этот код писать?

можете создать плагин и в него определить :


/**
* Функция загрузки плагина
* вызывается при событии plugins_loaded
*
* https://codex.wordpress.org/Plugin_API/Action_Reference/plugins_loaded
**/
function wc_change_mo_init(){
load_textdomain(
'woocommerce',
WP_LANG_DIR . '/custom/woocommerce-ru_RU.mo'
);
}

add_action( 'plugins_loaded', 'wc_change_mo_init' );

По пути "/wp-content/languages/custom/woocommerce-ru_RU.mo" должен находиться .mo файл.

Или используйте плагин https://wordpress.org/plugins/loco-translate/ так будет удобнее.

---------- Добавлено 24.08.2019 в 18:29 ----------

http://joxi.ru/1A5oWqVTD69x8m

http://joxi.ru/a2XXO1vtwkN9q2

---------- Добавлено 24.08.2019 в 18:30 ----------

И редактируйте.

totamon
На сайте с 12.05.2007
Offline
437
#4
Linblack:
чтобы они применялись, но не затрагивались при обновлении?

думаю в папке \wp-content\languages\plugins\ они не будут удаляться, пример формата имени файлов all-in-one-seo-pack-ru_RU.mo

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
Gerga
На сайте с 02.08.2015
Offline
94
#5
totamon:
думаю в папке \wp-content\languages\plugins\ они не будут удаляться, пример формата имени файлов all-in-one-seo-pack-ru_RU.mo

Я вот тоже не уверен насчет сохранности в этой папке, смотрю "/wp-content/languages/plugins" уже забита файлами перевода. Т.е. WP туда пишет.

Gerga
На сайте с 02.08.2015
Offline
94
#6

Теперь я могу с уверенностью сказать, что папка "/wp-content/languages/plugins" не сохранит файлы перевода.

WP, при автоматическом обновлении перевода плагина, перезапишет пользовательские файлы перевода.

В ходе этого выяснения, я нашел фильтр load_textdomain_mofile, если плагин loco-translate не подходит, то через этот фильтр тоже можно указать .mo файл.

Пример:


/**
* Функция смены .mo файла
* применяется к фильтру load_textdomain_mofile
*
* https://developer.wordpress.org/reference/hooks/load_textdomain_mofile/
*/
function filter_load_textdomain_mofile($mofile, $domain) {
if ('woocommerce' == $domain) {
$mofile = WP_LANG_DIR . '/custom/woocommerce-ru_RU.mo';
}

return $mofile;
}

add_filter('load_textdomain_mofile', 'filter_load_textdomain_mofile', 10, 2);

Код можно добавить в functions.php вашей темы или создайте плагин, чтобы перевод не зависил от текущей темы.

Новое расположение .mo файла: "/wp-content/languages/custom/woocommerce-ru_RU.mo"

SeVlad
На сайте с 03.11.2008
Offline
1609
#7

Gerga, способ имеет право но жизнь, но я уточню: переводы плагов по умолчанию находятся в /wp-content/languages/plugins/textdomain. Т.е. если у ТС своё плаг с уникальным textdomain, то там ничего не перепишется и никакие custom не нужны.

Linblack,

Если речь об изменении нескольких строк плага из оф репо, то можно использовать https://ru.wordpress.org/plugins/say-what/ или https://wordpress.org/plugins/gettext-override-translations/

Или более радикальный способ с пом Loco Translate: https://ru.wordpress.org/support/reply/237536/ (как по мне он и проще)

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
L
На сайте с 01.02.2011
Offline
163
#8
SeVlad:
Gerga, способ имеет право но жизнь, но я уточню: переводы плагов по умолчанию находятся в /wp-content/languages/plugins/textdomain. Т.е. если у ТС своё плаг с уникальным textdomain, то там ничего не перепишется и никакие custom не нужны.

Linblack,
Если речь об изменении нескольких строк плага из оф репо, то можно использовать https://ru.wordpress.org/plugins/say-what/ или https://wordpress.org/plugins/gettext-override-translations/
Или более радикальный способ с пом Loco Translate: https://ru.wordpress.org/support/reply/237536/ (как по мне он и проще)

Gettext override translations - не работает.

Loco Translate - не находит нужных для перевода фраз в поиске.

Say What тоже не помог, хотя может тут сделал лажу:

Оригинал строки - Cart

Текстовый домен (textdomain) - Cart

Контекст - Корзина

Строка замены - Корзина

переводимый плагин XT Woo Floating Cart

---------- Добавлено 28.08.2019 в 16:16 ----------

Gerga:
Теперь я могу с уверенностью сказать, что папка "/wp-content/languages/plugins" не сохранит файлы перевода.

WP, при автоматическом обновлении перевода плагина, перезапишет пользовательские файлы перевода.

В ходе этого выяснения, я нашел фильтр load_textdomain_mofile, если плагин loco-translate не подходит, то через этот фильтр тоже можно указать .mo файл.

Пример:

/**
* Функция смены .mo файла
* применяется к фильтру load_textdomain_mofile
*
* https://developer.wordpress.org/reference/hooks/load_textdomain_mofile/
*/
function filter_load_textdomain_mofile($mofile, $domain) {
if ('woocommerce' == $domain) {
$mofile = WP_LANG_DIR . '/custom/woocommerce-ru_RU.mo';
}

return $mofile;
}

add_filter('load_textdomain_mofile', 'filter_load_textdomain_mofile', 10, 2);


Код можно добавить в functions.php вашей темы или создайте плагин, чтобы перевод не зависил от текущей темы.

Новое расположение .mo файла: "/wp-content/languages/custom/woocommerce-ru_RU.mo"

а как строка if должна выглядеть в случае с моим плагином? (XT Woo Floating Cart)

Gerga
На сайте с 02.08.2015
Offline
94
#9
Linblack:
а как строка if должна выглядеть в случае с моим плагином? (XT Woo Floating Cart)


/**
* Функция смены .mo файла
* применяется к фильтру load_textdomain_mofile
*
* https://developer.wordpress.org/reference/hooks/load_textdomain_mofile/
*/
function filter_load_textdomain_mofile($mofile, $domain) {
if ('woo-floating-cart' == $domain) {
$mofile = WP_LANG_DIR . '/custom/woo-floating-cart-ru_RU.mo';
}

return $mofile;
}
L
На сайте с 01.02.2011
Offline
163
#10
Gerga:

/**
* Функция смены .mo файла
* применяется к фильтру load_textdomain_mofile
*
* https://developer.wordpress.org/reference/hooks/load_textdomain_mofile/
*/
function filter_load_textdomain_mofile($mofile, $domain) {
if ('woo-floating-cart' == $domain) {
$mofile = WP_LANG_DIR . '/custom/woo-floating-cart-ru_RU.mo';
}

return $mofile;
}

не работает к сожалению.

пробовал вписывать - woo-floating-cart-lite (так папка называется)

тоже не работает. английский висеть продолжает

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий