2011-01-26 9 views
0

、すなわちDrupal 6:CCKのデフォルト値を翻訳可能にする方法は?私は翻訳可能な私のCCKフィールドのデフォルト値を作成する必要があり、私の多言語Drupalの6サイトで

  • Hello - 英語版
  • Bonjour中 - フランス語で1

私は見つけることができませんこのテキストは翻訳テーブルを使用していますが、多言語変数を使用できるようにこれらの値は変数テーブルにもありません。

異なるデフォルト値を異なる言語で使用する方法を知っていますか?

答えて

1

CCKフィールドを定義すると、のデフォルト値を無効にするために、PHPコードスニペットを入力してを入力することができます。

が次のように入力します。

return array(0 => array('value' => t('Hello'))); 

アクセスノードは、それが翻訳可能な文字列に追加されますので、英語版以外からこのCCKフィールドでページを追加します。

これで「翻訳インターフェイス」メニューを使用して翻訳することができます(最初にcckタイプの「作成」ページに行くことがあります)。実際には特別なモジュールは必要ありません。基本的なD6(D5とD7でも動作します)。

1

この方法は少しハックです。私は実際に結果を考慮せずにこれを展開するとは確信していません。シンプルなユースケースのためには大丈夫かもしれません。

カスタムモジュールを作成して、def_translateと言うことができます。 def_translate.module、[OK]を

function def_translate_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) { 
    if($node->type == "sometype" 
     && $op == "load" 
     && $node->field_some_cck_field_type[0]['value'] == "your default value") 
    {  
     $node->field_some_cck_field_type[0]['value'] = 
       t($node->field_some_cck_field_type[0]['value']); 
    } 
} 

機能を追加するには - これは何をしているのですか?

ノードがロードされると、hook_nodeapiが呼び出され、$ opが "load"に設定されます。これは、レンダリングされる前にノードを操作する機会を与えます。何かをする前にチェックする

  1. これは正しいタイプのノードですか?
  2. op = "load"ですか?
  3. この値はデフォルト値ですか?

次に、t()関数を使用して既存のデフォルト値を渡します。これにより、デフォルトの文字列がi18n変換テーブルで使用できるようになり、通常の文字列の変換方法を使用できます。

* 免責 * 私自身は、生産でこれをテストしていません。どのような効果があるか完全にはわかりません。おそらく、これを実装する前に考える必要がありますし、CCK UIで変更されたときにDBからデフォルト値を参照するために、いくつかの機能を組み込むことをお勧めします。

ご希望の場合は、これが役立ちますか、場合によっては、問題解決のヒントを揺さぶってください。

関連する問題