Перейти к содержанию

Текст и переводы

MRBS хранит отдельно словарь интерфейса, тексты конкретного сайта, страницы справки и это руководство MkDocs. Выбирайте подходящий уровень изменений, чтобы не усложнять обновления.

Задача Правильное местоположение
Переименование метки для одной установки $vocab_override в config.inc.php
Добавить или улучшить перевод интерфейса MRBS web/lang/lang.<language>
Переведите или настройте страницу справки в приложении. web/site_faq/site_faq_<language>.html
Перевести это руководство Файл с языковым суффиксом ниже docs/

Переопределить формулировку для одного сайта

Не редактируйте поставляемый языковой файл только для того, чтобы переименовать «Комнату» или изменить название сайта. Найдите токен в web/lang/lang.en, затем переопределите его:

$vocab_override['en']['mrbs'] = 'Resource Booking';
$vocab_override['de']['mrbs'] = 'Ressourcenbuchung';
$vocab_override['fr']['mrbs'] = 'Réservation de ressources';
$vocab_override['es']['mrbs'] = 'Reserva de recursos';

Порядок индекса всегда следующий: язык, затем токен: $vocab_override[LANG][TOKEN].

Полезные токены, определяемые сайтом, включают в себя:

$vocab_override['en']['room.coffee_machine'] = 'Coffee machine';
$vocab_override['en']['entry.catering'] = 'Catering';
$vocab_override['en']['entry.description.placeholder'] =
    'Add information for the room team';
$vocab_override['en']['users.zip_code.oninvalid'] =
    'Enter a valid ZIP code';
$vocab_override['en']['type.C'] = 'Customer booking';

Токены настраиваемых полей описаны в разделе Пользовательские поля. В описаниях типов бронирования используется код type.X, где X — настроенный код типа.

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

Сохранять маркеры замещения

Языковые строки могут содержать маркеры printf, такие как %s, %d, или позиционные формы, такие как %1$d. Сохраните каждый маркер и его тип. Перевод может изменить порядок аргументов только с помощью позиционной формы.

Также сохраняйте намеренно фрагменты HTML, семантику пунктуации и окружающие пробелы. Тестовые строки со счетчиками нуля, единицы и многих, где это применимо.

Выберите язык выполнения

По умолчанию MRBS выбирает язык в браузере:

$disable_automatic_language_changing = false;

Чтобы принудительно использовать один язык:

$disable_automatic_language_changing = true;
$default_language_tokens = 'de';

Токен должен соответствовать доступному файлу web/lang/lang.*. Выбор локали для дат и времени можно переопределить отдельно:

$override_locale = 'de-DE';
$cli_language = 'de';

$override_locale также должен поддерживаться операционной системой сервера. $cli_language команды управления, выполняемые вне браузера. Для диагностики $language_debug = true записывает информацию о языке и локали в журнал ошибок; отключите его снова после устранения неполадок.

Добавить или сохранить язык приложения

Английский файл является эталонным и резервным. Чтобы создать язык, обнаруженный токен которого равен xx:

cp web/lang/lang.en web/lang/lang.xx

Тогда:

  1. Сохраните начальную строку PHP и каждый ключ $vocab.
  2. Переводите строковые значения, а не имена токенов.
  3. Сохраните файл как UTF-8.
  4. Не используйте объекты HTML, кроме &nbsp;; писать символы UTF-8 напрямую.
  5. Сохраняйте маркеры замены и намеренную разметку.
  6. Проверьте синтаксис PHP.
php -l web/lang/lang.xx

MRBS сначала загружается ссылка на английский язык, а затем выбранный язык, поэтому недостающие токены возвращаются к английскому языку.

Проверить комплектность

checklang.php сравнивает языковые файлы с lang.en. Для экземпляра разработки поместите или сохраните его в веб-каталоге MRBS и откройте:

https://example.invalid/mrbs/checklang.php?lang[]=xx

Без выбора языка предлагает все установленные языковые файлы. Дополнительная функция обновления записывает файлы и поэтому требует доступа для записи; избегайте этого при производстве и просмотрите внесенные изменения. Ограничьте или удалите эту утилиту разработки из общедоступного развертывания после завершения проверки.

Проверка синтаксиса и checklang.php выявляют разные проблемы: используйте обе.

Перевести страницу справки в приложении

Текст справки не исходит от $vocab. Он хранится отдельно:

web/site_faq/site_faq.html
web/site_faq/site_faq_de.html
web/site_faq/site_faq_fr.html
web/site_faq/site_faq_es.html

Выберите суффикс без подчеркивания:

$faqfilelang = 'de';

Старые значения, такие как '_de', принимаются для совместимости, но считаются устаревшими. Эта настройка не зависит от языка браузера, поэтому проверьте, соответствует ли выбранный FAQ целевой аудитории. Локальные изменения в поставляемых файлах часто задаваемых вопросов необходимо записать и повторно применить или объединить во время обновления.

Перевести это руководство

На сайте документации используются суффиксные файлы:

docs/admin-guide/custom-fields.md
docs/admin-guide/custom-fields.de.md
docs/admin-guide/custom-fields.fr.md
docs/admin-guide/custom-fields.es.md

Английский является запасным вариантом документации. Эти файлы не влияют на пользовательский интерфейс приложения MRBS или его страницу справки.

Безопасный рабочий процесс

  1. Введите формулировку, предназначенную только для сайта, в $vocab_override.
  2. Сохраняйте список локально поддерживаемых языков и файлов часто задаваемых вопросов.
  3. Сравните новую версию lang.en с предыдущей версией на наличие добавленных или измененных токенов.
  4. Запустите php -l для каждого измененного языкового файла.
  5. Запустите checklang.php на экземпляре с ограниченным доступом к разработке.
  6. Просмотрите изменения в FAQ отдельно.
  7. Перед развертыванием протестируйте все активные языки.

Контрольный список проверки

  • Обнаружение браузера и принудительное использование по умолчанию выбора ожидаемого языка.
  • Отсутствующие токены возвращаются к понятному английскому языку.
  • Страницы навигации, форм, ошибок, утверждений и администрирования отображаются правильно.
  • %s, %d, а позиционные маркеры получают правильные значения.
  • Даты, время, дни недели и часовые пояса используют предполагаемый языковой стандарт.
  • Темы и тексты сообщений электронной почты, отчеты, экспорт и задания командной строки используют предполагаемый язык.
  • Пользовательские поля, типы резервирования, заполнители и сообщения проверки переводятся.
  • На странице справки используется ожидаемый файл site_faq.
  • Журналы не содержат постоянной языковой отладки или значений конфиденциальных форм.