Текст и переводы¶
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 выбирает язык в браузере:
Чтобы принудительно использовать один язык:
Токен должен соответствовать доступному файлу web/lang/lang.*. Выбор локали для дат и времени можно переопределить отдельно:
$override_locale также должен поддерживаться операционной системой сервера. $cli_language команды управления, выполняемые вне браузера. Для диагностики $language_debug = true записывает информацию о языке и локали в журнал ошибок; отключите его снова после устранения неполадок.
Добавить или сохранить язык приложения¶
Английский файл является эталонным и резервным. Чтобы создать язык, обнаруженный токен которого равен xx:
Тогда:
- Сохраните начальную строку PHP и каждый ключ
$vocab. - Переводите строковые значения, а не имена токенов.
- Сохраните файл как UTF-8.
- Не используйте объекты HTML, кроме
; писать символы UTF-8 напрямую. - Сохраняйте маркеры замены и намеренную разметку.
- Проверьте синтаксис PHP.
MRBS сначала загружается ссылка на английский язык, а затем выбранный язык, поэтому недостающие токены возвращаются к английскому языку.
Проверить комплектность¶
checklang.php сравнивает языковые файлы с lang.en. Для экземпляра разработки поместите или сохраните его в веб-каталоге MRBS и откройте:
Без выбора языка предлагает все установленные языковые файлы. Дополнительная функция обновления записывает файлы и поэтому требует доступа для записи; избегайте этого при производстве и просмотрите внесенные изменения. Ограничьте или удалите эту утилиту разработки из общедоступного развертывания после завершения проверки.
Проверка синтаксиса и 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
Выберите суффикс без подчеркивания:
Старые значения, такие как '_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 или его страницу справки.
Безопасный рабочий процесс¶
- Введите формулировку, предназначенную только для сайта, в
$vocab_override. - Сохраняйте список локально поддерживаемых языков и файлов часто задаваемых вопросов.
- Сравните новую версию
lang.enс предыдущей версией на наличие добавленных или измененных токенов. - Запустите
php -lдля каждого измененного языкового файла. - Запустите
checklang.phpна экземпляре с ограниченным доступом к разработке. - Просмотрите изменения в FAQ отдельно.
- Перед развертыванием протестируйте все активные языки.
Контрольный список проверки¶
- Обнаружение браузера и принудительное использование по умолчанию выбора ожидаемого языка.
- Отсутствующие токены возвращаются к понятному английскому языку.
- Страницы навигации, форм, ошибок, утверждений и администрирования отображаются правильно.
%s,%d, а позиционные маркеры получают правильные значения.- Даты, время, дни недели и часовые пояса используют предполагаемый языковой стандарт.
- Темы и тексты сообщений электронной почты, отчеты, экспорт и задания командной строки используют предполагаемый язык.
- Пользовательские поля, типы резервирования, заполнители и сообщения проверки переводятся.
- На странице справки используется ожидаемый файл
site_faq. - Журналы не содержат постоянной языковой отладки или значений конфиденциальных форм.