WordPresas — добавить переводы строк в существующий .po

#wordpress #language-translation #poedit

#wordpress #язык-перевод #poedit

Вопрос:

Я использую тему, в которой частичный перевод на итальянский. С помощью редактора я добавил новые строки и сгенерировал файл .mo с помощью Poedit. Я сомневаюсь в том, когда я загружу обновление и когда мои переводы, вероятно, будут перезаписаны.

Есть ли способ избежать необходимости повторной синхронизации новых переводов (код использует домены в функциях _e())?

Ответ №1:

Вы можете поместить свои «пользовательские» файлы .po и .mo в /wp-content/languages/plugins , и это переопределит оригинальные файлы .po .mo плагина. Таким образом, даже если вы обновите плагин, будут использоваться ваши пользовательские файлы перевода.

Например, если вы переведете плагин Akismet на итальянский, ваши файлы в /wp-content/languages/plugins будут

 akismet-it_IT.mo
akismet-it_IT.po
 

Редактировать:

Кроме того, вы можете добавить этот код в дочернюю тему functions.php для того, чтобы сделать перевод строк. Вы можете добавить этот код столько, сколько хотите перевести слов. Я добавил две строки (hello2 и hello3) в конце в качестве примера.

 // Translate Text
add_filter('gettext', 'translate_text'); 
add_filter('ngettext', 'translate_text');

function translate_text($translated) { 
$translated = str_ireplace('Hello', 'Ciao', $translated); 
$translated = str_ireplace('Hello2', 'Ciao2', $translated); 
$translated = str_ireplace('Hello3', 'Ciao3', $translated);  

return $translated; 
}
 

Комментарии:

1. Спасибо @ozgur, а как насчет возможности объединения исходного (и частичного) .po только с моими новыми и добавленными строками?

2. Я думал, вы уже объединили их. Вы должны иметь возможность объединить их с помощью poedit

3. Да, но если новая версия плагина поставляется с, возможно, новыми строками, возможно, некоторые переведены, а некоторые нет, должен ли я синхронизировать вручную?

4. Мое решение только переопределяет файл .po плагина вашим пользовательским файлом .po. WordPress не будет объединять обновленные строки плагина с вашими пользовательскими. Однако вы можете вручную добавить новые строки в свой файл .po.

5. @Zeno Я добавил альтернативное решение для перевода строк, которое вы можете сделать из своего functions.php . Вы можете использовать его, если у вас есть только несколько переводов.