Как установить перевод по умолчанию для плагина WordPress?

Ссылка скопирована
1 ответ

В плагине все ключи для переводов через ___() написаны на русском языке.
Сделал перевод на английский - всё работает.
Хотелось бы, чтобы английский был стандартным: если язык сайта испанский, чтобы отображался английский, а не русский, так же с любыми другими языками, для которых нет переводов.
Возможно ли реализовать это в рамках плагина? Но без смены языка оригинальных строк для перевода, которые написаны в шаблонах и скриптах.

Вкратце:
- Оставить оригинальные строки на русском (не менять исходный код шаблонов)
- Показывать пользователю английский язык, если для его языка нет файла перевода

Дополнительно:

Ответы:

Хотелось бы, чтобы английский был стандартным:

Стандартный - это тот что прописан в коде. Т.е. хочешь чтобы по умолчанию был англ - пиши по анг в коде и делай русский лангпак.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Сергей Миронов Ответ

В WordPress стандартная логика переводов такая: если для текущей локали нет перевода, показывается исходная строка из кода. Если исходные строки в плагине написаны на русском, то при испанском языке без испанского файла пользователь увидит русский. Автоматического fallback на английский «между локалями» WordPress по умолчанию не делает.

Технически это можно обойти фильтром gettext, но это не самый чистый путь. Лучше постепенно перевести исходные строки плагина на английский, а русский держать в ru_RU.po/mo. Это стандарт для публичных плагинов и тем.

Если код менять нельзя, можно сделать fallback-файл вручную: при загрузке текстового домена проверять текущую локаль и, если нужного перевода нет, подгружать английский .mo. Но это потребует аккуратной проверки, потому что load_textdomain() не всегда удобно переопределять после загрузки.

Более практичный вариант для внутреннего проекта:

  • оставить русский как есть для текущего сайта;
  • для мультиязычного сайта вынести строки в английский в коде;
  • сделать русский и другие языки через po/mo;
  • не пытаться подменять все строки фильтром gettext, если плагин большой.

Фильтр gettext допустим только для точечных строк, например одной кнопки или сообщения. Для всего плагина он будет медленнее, сложнее в поддержке и может неожиданно затронуть строки WordPress или других плагинов, если неправильно проверять text domain.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно