自訂翻譯
From LimeSurvey Manual
簡介
自 LimeSurvey 5.4.0 起,您可以直接存取資料庫,為所有內建語言中的所有字串設定自己的翻譯。
如果現有翻譯不符合您的業務需求,可以使用此系統。
此方式應僅限於特定情況使用,因為 LimeSurvey 核心中的文字若有修改,將需要再次修改您的資料庫。
此外,您也可以使用此方法來翻譯問卷佈景主題專用的字串。
資料庫翻譯的運作方式
對於資料庫翻譯,LimeSurvey 採用的方法是受 Yii 框架的 CDbMessageSource 所啟發。
- 在 SourceMessage 資料表 lime_source_message->message 中尋找該字串,並取得 id:lime_source_message->id
- 若存在,則在 Message 資料表中,以目前的 id lime_message->id 及目前的語言 lime_message->language,尋找相關的翻譯 lime_message->translation
LimeSurvey 會從 po 檔建立翻譯陣列(如何更新此檔案請參閱 翻譯 LimeSurvey),然後再與資料庫中的所有翻譯合併。
之後,只要資料庫中存在翻譯,一律會傳回資料庫中的翻譯。
英文和法文「送出」按鈕的範例
您希望在所有問卷(使用特定佈景主題)中,將送出按鈕顯示為 _Validate_ 而不是 _Submit_。如果您只是更新佈景主題,並將 gT('Submit') 替換為 gT('Validate'),則所有語言都會一律顯示 _Validate_。
適用於所有問卷與所有佈景主題
- 建立來源訊息
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Submit'); - 檢查 ID(如果是第一筆,ID 即為 1),並在下一個指令中使用
- 建立相關的翻譯:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'en', 'Validate'), ('1', 'fr', 'Valider');
請勿將字串替換為空字串,否則翻譯會退回為原始的英文句子。您至少必須包含一個空格。
使用您自己的佈景主題(建議的解決方案)
此方法使用您自己的範本,同時也會更新所有其他語言的預設字串。
- 在佈景主題編輯器中選擇 Navigation 部分
- 搜尋
Template:GT("Submit")(位於 navigator.twig 中) - 替換為
Template:GT("Validate") - 建立來源訊息
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Validate'); - 檢查 ID(如果是第一筆,ID 即為 1),並在下一個指令中使用
- 建立相關的翻譯:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'fr', 'Valider');
請注意
lime_source_message 中的 category 欄位必須是空字串(''),而不是 NULL。如果類別不完全相符,gT() 將找不到來源訊息,您的翻譯也就不會被套用。在新增佈景主題專用字串的翻譯時,這一點尤其重要。