跳轉至

文字和翻譯

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 檔案。
  • 日誌不包含持久性語言偵錯或敏感表單值。