0

問題の説明

何を試しても、言語スイッチャーを使用すると、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 システムの一般的なインターフェイスの一部であり、特にチェックアウト プロセスの一部ではありません。

多分私はこれについて間違っています...誰かが確認または修正できますか?

g.

4

1 に答える 1

0

あなたが行った手順は正しいです。呼び出すコードはt()文字列の作成を作成し(通常はグループの下に)、文字列を検索するか、必要な文字列を含むファイルをそのグループにBuilt-in Interfaceインポートして手動で変換する必要があります。.po

慣れていない場合、動作が少し奇妙になるのはt()、呼び出し時にのみインターフェイス文字列を作成するため、最初に目的の言語でコンテンツを表示する必要があることです (たとえそれが壊れていたり、翻訳されていなくても)。これによりt()、データベースに文字列エントリを作成できるようになり、後でそれらを翻訳できるようになります。

l18n_updateなどのモジュールを使用して、インターフェイスの翻訳を自動的に最新の状態に保ち、アップストリームで行われた新しい変更の文字列をインポートすることをお勧めします。

于 2014-08-02T15:26:25.060 に答える