Могли бы вы мне помочь разобраться в проблеме?
Не совсем про вашу проблему, но похоже. Быть может это поможет
Немного больше деталей:
— Я работаю в Child теме
— Сама функция переключения на русский язык заработала (в functions.php добавлено пару строк)
— Перевожу тексты в POEDIT, сами переводы отображатся корректно и там, где надо, а вот формы множественного страдают. Вордпресс как будто продолжает воспринимать наличие только двух форм, как в стандартном английском, — единственное и множественно, а не так, как нужно — единственное, множественное 1-ой вариант, множественное 2-ой вариант. Хотя я переключилась в опциях на «русский» и он мне уставил строчку nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);
- Все языковые файлы, которые ты делаешь, должны лежать в папке languages в папке с темой (ну, дочерней темой в данном случае). Т. е.
wp-content/themes/my-child-theme/languages/*.mo
- Языковые файлы
.mo
должны иметь названия вида ru_RU.mo
для русского языка.
- Чтобы переводы заработали надо подключить их. Делается примерно так:
function selena_setup () {
load_theme_textdomain ('selena', get_stylesheet_directory () . '/languages');
// обычно используется get_template_directory, но тут дочерняя тема, значит, по идее, get_stylesheet_directory, я не тестировал сам
}
add_action ('after_setup_theme', 'selena_setup');
- Я не очень разбираюсь в строчках вида
nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);
, но, судя по всему, она не совсем правильная, потому что у меня стоит последний Poedit и он предлагает другой вариант для русского. Там по умолчанию в новой версии предлагается сразу корректный вариант.
- В местах, где нужны корректные переводы надо убедиться, что в шаблонах стоит текстовый домен дочерней темы, а не родительской. Т. е. надо переписать все шаблоны — это не очень хороший вариант, поэтому лучше будет подумать как удалить из родительской темы что-то вроде
add_action ('after_setup_theme', 'selena_setup');
и написать свою функцию, которая будет подключать свои файлы перевода.
Пишите еще, если надо более точно что-то донести 🙂