カスタム翻訳
From LimeSurvey Manual
はじめに
LimeSurvey 5.4.0以降では、データベースへの直接アクセスによって全言語のあらゆる文字列を独自に翻訳することができます。
既存の翻訳がビジネスニーズに適合しない場合にこのしくみを使用することができます。
LimeSurveyの中核部分のテキストを変更すると、データベースを変更する必要があるため、特定の場合にのみ使用してください。
さらに、このしくみを使用すれば、アンケートテーマ固有の文字列を翻訳することもできます。
データベース翻訳のしくみ
データベースの翻訳は、LimeSurveyはYiiフレームワークのCDbMessageSourceから着想を得た方法を使用しています。
- SourceMessageテーブルのlime_source_message->messageで文字列を検索し、lime_source_message->idからidを取得します。
- 存在する場合、対象のid lime_message->idを持つ言語lime_message->languageのMessageテーブルの関連する翻訳 lime_message->translationを検索します。
LimeSurveyは、poファイルから翻訳の配列を作成し(このファイルの更新方法についてはLimeSurveyの翻訳を参照してください)、その後、データベースのすべての翻訳とマージします。
データベースに翻訳がある場合、常にその翻訳が返されます。
「送信」ボタンの例(英語とフランス語)
(特定のテーマと共に)すべてのアンケートの送信ボタンについて、_Submit_ではなく_Validate_を表示したいとします。テーマを更新し、gT('Submit')をgT('Validate')に置き換えると、すべての言語で常に_Validate_が表示されます。
すべてのテーマのすべてのアンケート
- ソースメッセージ
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, NULL, 'Submit');を作成する。 - 以下の手順で使用するため、IDを確認する(もし1番の場合:IDは1)
- 関連する翻訳を作成する:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'en', 'Validate'), ('1', 'fr', 'Valider');
独自のテーマの使用(推奨)
この方法は、独自のテンプレートを使用した解決方法であり、他のすべての言語の既定文字列も更新されます。
- テーマエディターのナビゲーションパートを選択する
Template:GT("Submit")を検索する(navigator.twig内)Template:GT("Validate")に置き換える- ソースメッセージを作成する:
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, NULL, 'Validate'); - 以下の手順で使用するため、IDを確認する(もし1番の場合:IDは1)
- 関連する翻訳を作成する:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'fr', 'Valider');
Please Note
The category field in lime_source_message must be an empty string (``), not NULL. If the category does not match exactly, gT() will not find the source message, and your translation will not be applied. This is especially important when adding translations for theme-specific strings.