跳转至

文本和翻译

MRBS 将应用程序词汇、站点专用文本、帮助页面和本 MkDocs 手册分开管理。请在合适的层级进行修改,以免增加升级难度。

任务 正确的位置
重命名一次安装的标签 $vocab_override 在 config.inc.php
添加或改进MRBS UI语言 web/lang/lang.<language>
翻译或自定义应用程序内帮助页面 web/site_faq/site_faq_<language>.html
翻译本手册 docs/以下的语言后缀文件

覆盖一个网站的措辞

请勿仅仅为了重命名“Room”或更改网站标题而编辑已提供的语言文件。在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. 不要使用除 &nbsp; 之外的 HTML 实体;直接写入UTF-8字符。
  5. 保留替换标记和有意标记。
  6. 验证 PHP 语法。
php -l web/lang/lang.xx

MRBS 首先加载英语参考,然后加载所选语言,因此丢失的标记会回退为英语。

检查完整性

checklang.php 将语言文件与lang.en 进行比较。对于开发实例,请将其放置或保留在MRBSWeb目录中并打开:

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' 之类的旧值,但已弃用。该设置独立于浏览器语言,因此请测试所选的常见问题解答是否与目标受众相匹配。升级期间必须记录并重新应用或合并对已发送的常见问题解答文件的本地编辑。

翻译本手册

文档网站使用后缀文件:

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 应用程序 UI 或其帮助页面。

升级安全的工作流程

  1. 将仅限站点的措辞放入$vocab_override。
  2. 保留本地维护的语言和常见问题解答文件的列表。
  3. 将新的 lang.en 与之前的版本进行比较,以了解添加或更改的令牌。
  4. 在每个更改的语言文件上运行 php -l。
  5. 在受限开发实例上运行 checklang.php。
  6. 单独查看常见问题解答更改。
  7. 在部署之前测试所有活动语言。

验证清单

  • 浏览器检测并强制默认选择期望的语言。
  • 缺失的标记会回退为可理解的英语。
  • 导航、表单、错误、批准和管理页面正确呈现。
  • %s、%d 和位置标记接收正确的值。
  • 日期、时间、工作日和时区使用预期的区域设置。
  • 电子邮件主题和正文、报告、导出和命令行作业使用预期语言。
  • 自定义字段、预订类型、占位符和验证消息均已翻译。
  • 帮助页面使用预期的 site_faq 文件。
  • 日志不包含持久语言调试或敏感表单值。