Как установить перевод по умолчанию для плагина WordPress?
В плагине все ключи для переводов через ___() написаны на русском языке.
Сделал перевод на английский - всё работает.
Хотелось бы, чтобы английский был стандартным: если язык сайта испанский, чтобы отображался английский, а не русский, так же с любыми другими языками, для которых нет переводов.
Возможно ли реализовать это в рамках плагина? Но без смены языка оригинальных строк для перевода, которые написаны в шаблонах и скриптах.
Вкратце:
- Оставить оригинальные строки на русском (не менять исходный код шаблонов)
- Показывать пользователю английский язык, если для его языка нет файла перевода
Дополнительно:
Ответы:
Хотелось бы, чтобы английский был стандартным:
Стандартный - это тот что прописан в коде. Т.е. хочешь чтобы по умолчанию был англ - пиши по анг в коде и делай русский лангпак.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
В WordPress стандартная логика переводов такая: если для текущей локали нет перевода, показывается исходная строка из кода. Если исходные строки в плагине написаны на русском, то при испанском языке без испанского файла пользователь увидит русский. Автоматического fallback на английский «между локалями» WordPress по умолчанию не делает.
Технически это можно обойти фильтром
gettext, но это не самый чистый путь. Лучше постепенно перевести исходные строки плагина на английский, а русский держать вru_RU.po/mo. Это стандарт для публичных плагинов и тем.Если код менять нельзя, можно сделать fallback-файл вручную: при загрузке текстового домена проверять текущую локаль и, если нужного перевода нет, подгружать английский
.mo. Но это потребует аккуратной проверки, потому чтоload_textdomain()не всегда удобно переопределять после загрузки.Более практичный вариант для внутреннего проекта:
gettext, если плагин большой.Фильтр
gettextдопустим только для точечных строк, например одной кнопки или сообщения. Для всего плагина он будет медленнее, сложнее в поддержке и может неожиданно затронуть строки WordPress или других плагинов, если неправильно проверять text domain.