Internationalization
Drupal コアの多言語機能を拡張し、実用的な多言語サイトを構築するためのモジュールの包括的なコレクション。
i18n
概要
Internationalization (i18n) モジュールは、Drupal 7 のコア多言語サポートを大幅に拡張する機能豊富なパッケージです。翻訳可能なタクソノミー用語、多言語変数、言語表示制御付きの翻訳可能ブロック、言語によるコンテンツフィルタリング、メニュー翻訳、フィールドプロパティ翻訳などの機能を含む、真に多言語なウェブサイトを構築するための完全なフレームワークを提供します。
このモジュールは、他の多言語モジュールのための API 基盤として機能するとともに、さまざまな国際化設定を構成するための管理インターフェースを提供します。翻訳されたコンテンツをリンクするための翻訳セット、ユーザー定義文字列の文字列翻訳、現在の言語に基づいてコンテンツをフィルタリングするコンテンツ選択モードなどの概念を導入しています。
パッケージはベースモジュールと多数のサブモジュールで構成されており、それぞれが特定の多言語ニーズに対応しています。サイト構築者は必要なサブモジュールのみを有効にできるため、シンプルなローカライズサイトから複雑な多言語コンテンツ管理システムまで、さまざまな多言語シナリオに柔軟に対応できます。
Features
- 4つのモードによるタクソノミー翻訳:言語非依存、言語固有、ローカライズ可能な用語、混合言語ボキャブラリ
- 現在のページ言語に基づいて値を切り替える多言語変数(サイト名、スローガン、フロントページなど)
- ブロックの言語表示制御とオプションのブロックタイトル/コンテンツ翻訳
- 現在の言語でノードとタクソノミー用語をフィルタリングするコンテンツ言語選択
- 翻訳可能なメニュー項目と言語固有メニューをサポートするメニュー翻訳
- さまざまなオブジェクトタイプの関連翻訳をリンクするための翻訳セット API
- フィールドラベル、ノードタイプ名、説明などのユーザー定義文字列を翻訳するための文字列翻訳システム
- ラベル、ヘルプテキスト、デフォルト値、リストオプションを含むフィールドプロパティ翻訳
- ノード翻訳間でのフィールドとタクソノミーの同期
- 言語固有の URL マッピングを作成するためのパス翻訳
- 現在の言語デフォルト、言語必須、言語ロック設定を含むコンテンツタイプの拡張言語オプション
- 正しいパスへの翻訳を指す言語スイッチャーリンクの強化
- ユーザーメール翻訳機能
- フォーラム名とコンテナを翻訳するためのフォーラム多言語設定
- 現在表示中のコンテンツに基づくコンテキスト言語検出
Use Cases
複数言語版を持つ企業ウェブサイト
企業がウェブサイトを英語、フランス語、ドイツ語で必要としています。i18n、コンテンツ翻訳制御用の i18n_node、翻訳されたメニュー用の i18n_menu、翻訳されたサイト名とスローガン用の i18n_variable、言語固有のブロックを表示し他を非表示にする i18n_block を有効にします。
翻訳された商品カテゴリを持つ Eコマースサイト
オンラインストアが商品カテゴリにタクソノミーを使用しています。i18n_taxonomy を「ローカライズ」モードで有効にして、翻訳インターフェースを通じてカテゴリ名と説明を翻訳しながら、言語間で同じ用語構造を維持します。
地域固有のコンテンツを持つ多言語ブログ
ブログで一部の投稿をすべての言語で利用可能にしつつ、他は地域固有にしたい場合。i18n_select を有効にして言語でコンテンツをフィルタリングし、翻訳ワークフロー用の i18n_node を使用し、地域タグ付け用に言語を持つタクソノミー用語を使用します。
翻訳されたフォーラムを持つコミュニティサイト
コミュニティプラットフォームが複数言語でフォーラムを必要としています。i18n_forum と i18n_taxonomy を有効にして、フォーラム名とコンテナを翻訳し、ユーザーが好みの言語でフォーラムを見られるようにします。
厳格な翻訳要件を持つ政府ポータル
政府サイトがすべてのコンテンツフィールドを翻訳間で同期させる必要があります。i18n_sync を有効にして、編集者が翻訳を作成する際に公開日、添付ファイル、特定のタクソノミー用語などのフィールドを同期させます。
共有コンテンツとローカライズ設定を持つマルチサイト
組織が共有コンテンツを持ちながらローカライズされた設定を持つ異なる国向けのサイトを運営しています。i18n_variable を使用して、コンテンツ構造を共有しながら国固有のサイト名、連絡先情報、エラーページを持たせます。
Tips
- 必要なサブモジュールのみから始めてください - パッケージは設計上モジュラーです
- コンテンツを追加する前に言語とデフォルト言語を正しく設定してください
- 言語間で同じ用語構造を維持しながら翻訳された名前が必要な場合は、タクソノミーに「ローカライズ」モードを使用してください
- 言語ごとに完全に異なる用語セットが必要な場合は、タクソノミーに「翻訳」モードを使用してください
- リスティングが現在の言語のコンテンツのみを表示するように i18n_select を有効にしてください
- 特にエイリアスされたパスで言語スイッチャーの動作を徹底的にテストしてください
- ノード翻訳とエンティティ翻訳アプローチを選択する際に翻訳ワークフローのニーズを考慮してください
- 複雑な多言語要件については、http://drupal.org/node/133977 のハンドブックを読んでください
- 翻訳可能な文字列を提供する新しいモジュールを有効にした後は「文字列をリフレッシュ」機能を使用してください
- i18n_sync を使用する場合は、意図した違いを上書きしないように、どのフィールドを同期するかを慎重に選択してください
Technical Details
Admin Pages 6
/admin/config/regional/i18n
拡張多言語オプションのメイン設定ページ。ローカルタスクタブを通じてさまざまな i18n 設定にアクセスできます。
/admin/config/regional/i18n/node
翻訳時のインターフェース切り替えや翻訳リンクの表示を含む、多言語ノードの拡張オプションを設定します。
/admin/config/regional/i18n/strings
文字列翻訳に許可されるテキストフォーマットを設定します。一部のフォーマットは危険なコンテンツを許可する可能性があるため、セキュリティ上重要です。
/admin/config/regional/i18n/select
言語によるコンテンツフィルタリングを設定します。どのコンテンツタイプがフィルタリングされ、どのページで選択がアクティブになるかを制御します。
/admin/config/regional/i18n/variable
どのサイト変数を多言語にするかを選択します。これらの変数は言語ごとに異なる値を持ちます。
/admin/config/regional/translate/i18n_string
翻訳用のユーザー定義文字列を更新およびリフレッシュします。文字列リストを再構築したり、既存の翻訳をインポートするために使用します。
権限 3
Hooks 12
hook_i18n_object_info
i18n システムで処理されるオブジェクトタイプに関する情報を提供します。文字列プロパティ、翻訳セットサポート、管理パスを含むオブジェクトの翻訳方法を定義します。
hook_i18n_object_info_alter
他のモジュールが提供した i18n オブジェクト情報を変更します。
hook_i18n_translate_path
特定のパスの翻訳情報を提供します。言語スイッチャー用の翻訳されたパスを返します。
hook_i18n_translate_path_alter
他のモジュールが提供したパス翻訳を変更します。
hook_i18n_context_language
ページコンテンツに基づいて現在のコンテキスト言語を提供します。特定の操作に使用すべき言語を決定するために使用されます。
hook_i18n_string_info
文字列翻訳用のテキストグループをリストします。どの文字列グループが利用可能で、そのプロパティを定義します。
hook_i18n_string_list
テキストグループの翻訳可能な文字列のリストを提供します。
hook_i18n_string_list_TEXTGROUP_alter
特定のテキストグループの文字列リストを変更します。オブジェクトごとと完全なリストの両方で呼び出されます。
hook_i18n_string_objects
翻訳可能な文字列を収集するオブジェクトをリストします。hook_i18n_string_list の代替手段です。
hook_i18n_translation_set_info
翻訳セットと関連オブジェクトに関する情報を提供します。翻訳セットの保存と管理方法を定義します。
hook_i18n_sync_options
各エンティティタイプで同期するフィールドに関する情報を提供します。
hook_i18n_sync_translation
翻訳されたエンティティに対して追加の同期操作を実行します。
Troubleshooting 7
admin/config/regional/i18n/strings でソース言語が正しく設定されていることを確認してください。admin/config/regional/translate/i18n_string の「文字列をリフレッシュ」機能を使用して文字列リストを再構築してください。テキストフォーマットが翻訳に許可されているか確認してください。
文字列翻訳はソース言語を基準に保存されます。コンテンツ作成後にデフォルト言語を変更すると翻訳が壊れる可能性があります。文字列翻訳設定で正しいソース言語を設定し、翻訳作業開始後は変更しないでください。
Context モジュールは i18n_block と競合します。両方がブロックレンダリングを変更するためです。http://drupal.org/node/1343044 で問題を追跡してください。言語ベースのブロック表示には Context の代わりにブロック表示設定の使用を検討してください。
admin/config/regional/i18n/strings でテキストフォーマットを翻訳用に有効にしてください。フォーマットを有効にした後、文字列をリフレッシュして翻訳可能な文字列リストを更新してください。
ノードにリンクされたメニュー項目は、ノードの言語がページの言語と一致する場合にのみ表示されます。翻訳されたノードが存在し、メニュー項目が言語設定で適切に設定されているか、「ローカライズ」モードに設定されていることを確認してください。
i18n_select モジュールを有効にし、admin/config/regional/i18n/select でタクソノミーフィルタリングが有効になっているか確認してください。ボキャブラリ設定でボキャブラリが多言語モードに設定されていることを確認してください。
admin/config/regional/i18n/variable で変数が多言語として選択されていることを確認してください。Variable モジュールの variable_store と variable_realm サブモジュールが有効になっているか確認してください。言語 realm が適切に初期化されている必要があります。
Security Notes 4
- 文字列翻訳にテキストフォーマットを許可する際は注意してください - PHP Filter や Full HTML のようなフォーマットは翻訳者が悪意のあるコードを注入することを許可する可能性があります
- 「管理文字列を翻訳」権限は許容的な XSS フィルターを使用するため、非常に信頼できるユーザーにのみ付与してください
- 一括翻訳インポートを使用する場合はインポートソースを確認してください。フォーマットアクセスチェックをバイパスするためです
- 翻訳に許可されるフォーマットを変更した後は、潜在的に危険な文字列を翻訳インターフェースから削除するために文字列をリフレッシュしてください