0

私の他の質問のすぐ後に:

これらは、Zendフレームワークを使用するための翻訳を提供したい2つの言語です。ユーザーが英語を第一言語として使用したくないと判断した場合、代替言語を選択する機会が提供されます。

  • zh_Hans
  • zh_Hant

前のコードを次のコードで使用すると、次のようになります。

 require_once 'Zend/Locale.php';
 $locale = new Zend_Locale();
 $locale->setLocale('zh_Hans'); // for example

私が利用できる実際の言語はzhであり、zh_Hanszh_CNではありません。

だから今、翻訳にZendを使用することになると

 require_once 'Zend/Translate.php';
 $translate = new Zend_Translate(array('adapter' => 'array',
                  'content' => 'translations/zh_Hant.trans',
                  'locale' => $locale->getLanguage()
                  ));

失敗します... zhは言語ファイルとして存在しないためです。私が言っ$translateているように、これ$localeは言語であると予想されます...

  1. だから私は次のことを試みます:

    'locale' => $locale->getLanguage() . '_' . $locale->getRegion()

$ locale-> getRegion()が空であるため、これも失敗します...

質問:

  • Zendフレームワークを使用してリモートユーザーのロケールの言語を設定し、language _regionを使用できるようにする適切な方法は何ですかZend_Translate
    -私の他の質問を参照すると、zh_HKとzh_CNは正しくありません。zh_Hans/zh_Hantは
4

2 に答える 2

0

変換アダプタクラスを見ると、リージョンをサポートしているようにリモートで見えるものは何も見つかりません。実際、彼らは地域を取り除くためにより多くのことをします。リージョンをサポートするには、独自のアダプターを作成(拡張)する必要があります。

Zendクラスは独立したオブジェクトであり、魔法のように連携して機能することもありますが、それでも別個のエンティティです。Zend_Localeのリージョンは非常にサポートされていますが、翻訳でも実装されているわけではありません。ただし、将来的にはそうなる可能性があります。

于 2011-08-01T16:14:23.487 に答える
0

私のエレガントではないハック:

  $supported_langs = array(
    'en_US' => 'en_US',
    'en_GB' => 'en_GB',
    'zh_Hans' => 'zh_CN',
    'zh_Hant' => 'zh_HK',
    'es' = > 'es'
  );

  require_once 'Zend/Translate.php';
  $targetLanguage = $locale->getLanguage();
  if ($locale->getRegion() != null) { 
     $targetLanguage = $locale->getLanguage() . '_' . $locale->getRegion();
  }
  $contentFile = dirname(__FILE__) . '/../translations/' . $locale->getLanguage() . '/general-' . $targetLanguage . '.trans';
  $translation_language = array_search($targetLanguage, $supported_langs);

  $translate = new Zend_Translate(
     array(
        'adapter' => 'array',
        'content' => $contentFile,
        'locale'  => $translation_language
        )
  );

Zend_Locale と Zend_Translate がシームレスに連携することを願っていました。多分誰かがよりクリーンなアイデアを持っています...

于 2011-08-01T16:29:45.933 に答える