http://wordpress.org/extend/plugins/bbpress/ bbpress 'языковая папка (wp-content / plugins / bbpress / bbp-languages) имеет это предупреждение:
/**
* Do not put custom translations here. They will be deleted on bbPress updates.
*
* Keep custom bbPress translations in /wp-content/languages/
*/
На самом деле это не новая проблема, и да, они правы. Это большая проблема, если вы используете плагины WordPress с неанглийским языком.
В основном я перевел bbpress и создал .po и .mo файлы. Файлы работают, если я помещаю их в их обычную папку wp-content / plugins / bbpress / bbp-languages. Но, как указано выше, предупреждение говорит, что удалит при обновлении. Но проблема в том, что перевод не работает, если я помещаю их в папку wp-content / languages /, как это предлагается в bbpress.
Я думаю, что должен быть крюк или что-то, что я могу активировать, но каково лучшее решение для этого? Просто я хочу сохранить языковые файлы плагина в wp-content / languages /
источник
Ответы:
Вы должны заменить вызов языкового файла BBpress.
Хорошее место для этого - файл для конкретного языка в вашем общем каталоге языков. Для турецкого это, вероятно, будет файл с именем
tr_TR.php
. Он будет загружен автоматически и только в том случае, если он соответствует языку вашего блога. Это не будет перезаписано.BBPress не использует функцию
load_plugin_textdomain
, он используетload_textdomain
вместо этого. Здесь вы можете найти фильтр:Так что в вашем языке php файл просто добавьте фильтр, чтобы изменить путь:
источник
WP_LANG_DIR
) плюс ваш mo-файл.load_plugin_textdomain()
звонки во время действия «init», иначе мы не сможем подключиться к фильтру «load_textdomain_mofile». Уже будет слишком поздно.Что вам нужно сделать, это создать простой плагин, который будет управлять text_domain установленных плагинов. Если вы не хотите иметь глобальное решение, вы можете добавить код в файл functions.php в своей теме.
Идея состоит в том, чтобы проинструктировать WordPress о том, где найти переводы. Внутренне во всех плагинах это делается с помощью чего-то похожего на
это функция, которую вы будете использовать. Как вы можете видеть здесь , последний аргумент используется для установки относительного пути к плагину, где находятся файлы перевода.
Вы можете делать то, что вы хотите, поместив одну строку для каждого плагина, который вы хотите изменить в своей языковой папке следующим образом.
Это заставит WordPress загружать ваши пользовательские файлы переводов из папки рядом с
plugins
папкой, в которой есть папка с именамиbbpress
файлов перевода, с ТОЧНЫМ именованием, которое использует каждый плагин.Ваш метод, который инструктирует textdomains для всех плагинов, должен работать в
init
фазе следующим образом(Не забудьте пометить это как ответ, если вы нашли это полезным)
источник
Чтобы это работало, вам нужно уже иметь файлы перевода WordPress в WP_LANG_DIR и установить глобальный языковой стандарт на этот язык. Если вы включаете переводы только для bbPress без изменения языкового стандарта или наличия основных файлов перевода WordPress, ничего не будет переведено, несмотря на то, что вы их загружаете.
Если вы хотите переопределить локаль только для bbPress, вам нужно добавить фильтр в 'bbpress_locale', который позволит вам переопределить mo-файл bbPress.
Хотя верно, что bbPress 2.0 использует функцию load_textdomain (), load_plugin_textdomain () в любом случае является просто оболочкой для load_textdomain (). Метод bbPress 2.0 более надежен и допускает глобальное размещение файлов перевода, поэтому вы не потеряете их при обновлении плагина.
источник
В моем случае создание постоянного пользовательского перевода для плагина требует следующих шагов (примеры перевода плагина ACF):
wp-content/languages/plugins/
каталог.po
изlang/
папки плагина (или любого другого с переводами) в созданныйwp-content/languages/plugins/
(например, изlang/acf-pl_PL.po
вwp-content/languages/plugins/acf-pl_PL.po
).po
файлов, а затем создать.mo
и сохранить вwp-content/languages/plugins/
(напримерwp-content/languages/plugins/acf-pl_PL.mo
)Таким образом, перевод должен быть сохранен даже после обновления плагина.
Я не уверен, что эта стратегия будет работать для всех плагинов, но это, безусловно, стоит попробовать.
источник