- Статус
- Решено
Обзор проблемы
Когда Вы меняете локаль языка, например, для немецкого с de_DE на de_DE_formal, Вы можете заметить, что перевод строк перестал отображаться.
Эта проблема возникает из-за того, что WPML больше не может найти MO-файлы с соответствующей локалью языка. В нашем примере он будет искать some-domain-de_DE_formal.mo, но такого файла не существует. Вместо этого в WPML есть только запись о some-domain-de_DE.mo.
Обходное решение
Чтобы решить эту проблему, Вам нужно выполнить два действия:
1. Если у Вас есть строки, переведенные на странице WPML -> Перевод строк, перейдите на страницу WPML -> Поддержка -> Поиск и устранение неисправностей и нажмите кнопку Show custom MO Files Pre-generation dialog box. В появившемся диалоговом окне нажмите синюю кнопку, чтобы повторно сгенерировать пользовательские MO-файлы.
2. Скорее всего, первый шаг не восстановит все отсутствующие строки. Это связано с тем, что некоторые значения могут браться из отсутствующих исходных MO-файлов, предоставляемых другими плагинами или темами оформления. Чтобы решить эту проблему, Вам необходимо найти отсутствующие MO-файлы и создать их копии, используя новые имена с новым кодом языка.
В нашем примере, если строка обычно загружается из файла woocommerce-de_DE.mo, мы должны найти этот файл и создать его копию, используя имя, соответствующее текущей локали: woocommerce-de_DE_formal.mo. Вам необходимо скопировать все отсутствующие файлы, которые используются Вашим сайтом.
Типичные расположения, где можно найти эти MO-файлы:
- ../wp-content/languages/
- ../wp-content/plugins/plugin-in-question/
- ../wp-content/plugins/plugin-in-question/languages/
Наконец, Вы также можете найти конкретные пути в таблице wp_icl_mo_files_domains в Вашей базе данных.