Вроде некогда таким не интересовался, но время пришло. Задался целью добавить локализации своим творения, плагинам, для WorpPress.
Почитав, полистав различные запросы в поисковике решил написать свою статью, однако забуду, а этот вопрос скорее всего меня будет иногда трогать..

Так вот, для локализации плагинов решил не использовать сторонние программы, плагины, а сделать все сам.
На деле все просто и вдаваться в дебри не стану, а только самое основное опишу.

Дабы добавить нам свой языковый файл, нам необходимо в директории плагина добавить папку, где будут храниться файл локализации, обычно принято хранить такое в папке /language или сокращенно /lang.

Куда же без примеров. Допустим, мы имеем плагин по пути:

mysite_wordpress/wp-content/plugins/myPlugins

То файлы локализации я буду складывать в папку /lang, путь будет выглядеть:

mysite_wordpress/wp-content/plugins/myPlugins/lang

Все файлы локализации должны иметь название согласно требованиям нашего ВордПресса, список локализации можно подсмотреть туть —> https://i18n.svn.wordpress.org/
Сам файл локализации состоит из нами заданного названия (myPluginLa) и название локализации (ru_RU), к примеру файл для ру будет выглядеть так:

myPluginLa-ru_RU.po

Пример содержимого файла:

msgid ""
msgstr ""
"Project-Id-Version: KPI MANAGER v0.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-08-24 16:16+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: Amatikey Vaonvel \n"
"Language: ru_RU\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Poedit-SearchPath-0: ..\n"


msgid "Users"
msgstr "Пользователи"

msgid "Total managers"
msgstr "Всего руководителей"

Расписывать не стану. Вкратце по файлу, первая часть, это стандартный заголовок, после заголовка уже идет сам перевод, по принципу фраза (msgid) >>> перевод(msgstr);
После того как все успешно мы перевели, идем в нашу папку с языковыми файлами, в данном примере это папка:

mysite_wordpress/wp-content/plugins/myPlugins/lang

И прописываем команду для генерации файла .mo:

msgfmt myPluginLa-ru_RU.mo myPluginLa-ru_RU.po

После чего нам необходимо в нашем плагине подключить нашу папку с переводами. Заходим в главный файл плагина, к примеру myPlugins.php и добавляем туда код:

add_action( 'plugins_loaded', function(){
	load_plugin_textdomain( 'myPluginLa', false, dirname(plugin_basename(__FILE__)) . '/languages' ) );
});

После, в файлах плагина, где мы желаем видеть переводимый текст, к примеру Users, пишем так:

<h1><?php __('Users', 'myPluginLa') ?></h1>
  • — Users — строку которую нужно перевести;
  • — myPluginLa — в какой файл перевод смотреть, язык подтягивается автоматически;

Так для справки:
Файлы перевода бывают трех видов: .mo .po .pot. ПХП работает только с типом .mo, который генерируется на основе .po и .pot файлов.

  • .pot файл (Portable Object Template) — содержит исходные строки перевода, но не имеет самого перевода, своего рода шаблон. На основе шаблона создается .po файл, который уже будет содержать строку — перевод. Файл-шаблон не является обязательным файлом, .po файл можно и самостоятельно создать.
  • .po файл (Portable Object) — содержит исходные строки и в отличии от .pot имеет перевод этих строк. Сам .po файл по своей сущности является текстовым файлом, любой редактор в помощь, хоть и блокнот XD, есть и специальные программы которые работают с данным типом и автоматически создают .mo файл из .po, блокнот такими умениями не похвастается)))
  • .mo файл (Machine Object) — скомпилированный вариант PO файла. Бинарные данные, которые читает ВордПресс. Используется для перевода тем/плагинов, импортируется в GNU gettext.

Если вам моей заметки будет маловато, вот вам более расписанная информация по ссылке https://wp-kama.ru/handbook/codex/translations