問題の説明
何を試しても、言語スイッチャーを使用すると、Ubercart カタログ ブロックで言語を変更できません。この動作は、次の場所で自分でテストできます。
holistichorsecare.com/zh/products/aromadog-arf-ritis-pain-relief-1oz
言語のコンテキスト (英語または中国語、「en」または「zh-hant」) に関係なく、ページの左マージンにあるショッピング カート ブロックには、すべての状況で次のテキストが表示されます。
ショッピングカート
ショッピングカートに商品がありません。
0 アイテム 合計: HK$ 0.00
さあ、試してみてください。ページを読み込んで、ページ ヘッダーに表示される [英語] または [中国語] をクリックします。ショッピング カート ブロックは言語を変更しません。
ローカリゼーション ファイルがインストールされました - 思うに...
管理フロント エンドを使用して次のローカライズ文字列パッケージをインストールしましたが、正しく読み込まれているようです。
- ubercart-6.x-2.13.zh-hant.po
- uc_ajax_cart-6.x-1.0.zh-hant.po
モジュール コードのチェックアウト
調べる:
holistichorsecare.com/www/content/sites/all/modules/ubercart/uc_cart/translations/zh-hant
1926 行あたりに次のエントリが表示されます。
msgstr "ショッピングカートに商品がありません。" msgstr "ä½ (妳)ç è³¼ç©è»è£¡æ²æä»»ä½åå."
(文字化けしたテキストは、シェルで分割されたマルチバイト文字です)
調べる
holistichorsecare.com/www/content/sites/all/modules/ubercart/uc_cart/cart.module
行 706 あたりに次の呼び出しが表示されます。
$output = '<p class="uc-cart-empty">'. t('There are no products in your shopping cart.') .'</p>';
そのため、文字列を変換するために t() への呼び出しがあるように見えますが、代替手段を提供するシステムからは何も来ていません。
Ubercart のショッピング カート ブロック (ajax カート) のローカリゼーション/翻訳を有効にするために、管理フロント エンドのどこに行く必要があるか教えてください。
翻訳をオンにするチェック ボックスをどこかで見逃したか、ショッピング カート ブロックの文字列を翻訳するように Drupal/Ubercart に通知する必要があると思いますが、どこに行ってどのようにすればよいかわかりません。これ。
PS: トラブルシューティング コードで i18n_get_lang() を呼び出すと、正しい答え (つまり、「en」または「zh-hant」) が返されたので、システムはそれがどの言語コンテキストにあるかを認識します。
ありがとうございました。
アップデート - 成功!
zh-hant 文字列をBuilt in Interfaceにインポートすることで、これを機能させることができました。
これが私がそれをした方法です:
1)サイト構築 » ブロックに移動し、ショッピング カートブロックの言語設定がすべての言語に設定されていることを確認しました
2)サイト構成 » 言語 » 構成 » 言語ネゴシエーションに移動し、言語ネゴシエーション設定を言語フォールバックのあるパスプレフィックスに設定しました
3)サイト構築 » 翻訳インターフェイスに移動し、[インポート]タブを選択しました
4) [インポート] タブで[ファイルを選択] ボタンをクリックし、中国語の定義が多数含まれているubercart-6.x-2.13.zh-hant.po を選択しました。この定義ファイルはlocalize.drupal.org/translate/languages/zh-hantから取得しました
5)組み込みインターフェイスを選択し、既存の文字列が保持され、新しい文字列のみが追加されます
6) 次に、[インポート] をクリックしました
検証
インポートが完了したら、 [概要] タブをクリックして結果を確認しました。
中国語、繁体字 4242/9881 (42.93%) 0/19 (0%) 0/16 (0%) 0/49 (0%) 0/37 (0%) 0/15 (0%) 1518/1518 (100 %) 2/3 (66.67%)
どうやら、このインポートは4242 個の定義をDrupal システムのビルトイン インターフェイスセクションにロードしたようです。これらの文字列は、ストア管理エリアの近くにはありません。これは私には少し謎ですが、うまくいきました.
結論
上記の手順を完了すると、言語スイッチャーで選択した言語に応じて、ショッピング カート ブロックが中国語または英語で正しく表示されるようになりました。
最後のコメントと質問
考え直してみると、結局のところ、これは直感に反するものではないかもしれません。結局のところ、BLOCK は Drupal システムの一般的なインターフェイスの一部であり、特にチェックアウト プロセスの一部ではありません。
多分私はこれについて間違っています...誰かが確認または修正できますか?