5

Cakes の国際化機能を使用して、アプリケーションをさまざまな言語に翻訳できるようにするプロジェクトをまとめています。それはうまくいきました。

私が気付いた問題は、JavaScript を介してテキストが追加された場所がいくつかあり、このテキストが現在サーバーからまったく取得されていないことです。これは、ユーザーの選択に基づいて変化するダイアログ ボックスやいくつかのテキストなどのためのものです。

独自のアプリケーションでこれをどのように処理しましたか? これをどのように処理しますか?これを処理するライブラリまたはコンポーネントはありますか。jQuery ライブラリはどうですか?

4

8 に答える 8

1

CakePHP 3 で使用しているソリューションは次のとおりです。

あなたのレイアウトファイルで(私のものは default.ctp です):

if( isset( $translated_js ) && !empty( $translated_js ) ){
    $this->Html->scriptStart($block_render);
    echo "var translated_js = " . json_encode( $translated_js ) . ";";
    $this->Html->scriptEnd();
}

次に、任意のコントローラーに beforeRender メソッドを追加します。

public function beforeRender(Event  $event){
    parent::beforeRender( $event );     

    $translated_js = [
        'reinit_map' => __('Reinit map to default'),            
    ];

    $this->set( 'translated_js' , $translated_js );
}

このようにして、gettext 命令を使用できます。

JS ファイルでは、翻訳された要素を次のように使用できます。

translated_js.reinit_map

テキストを翻訳してJSに渡す方法を探している人に役立つことを願っています

于 2016-04-21T07:43:48.213 に答える
1

私の CakePHP アプリケーション内の JavaScript を翻訳するために、私はこのライブラリを使用します: https://github.com/wikimedia/jquery.i18n、それはウィキペディアで使用されているものです。

必要なファイルはすべて src フォルダー内にあります。セットアップと使用は非常に簡単です。もちろん、CakePHP だけでなく、あらゆる種類のアプリケーションで動作します!

于 2013-04-26T12:00:31.930 に答える
0

この CakePHP プラグインをチェックしてください: https://github.com/wvdongen/CakePHP-I18nJs

Drupal 8 JavaScript 翻訳の機能を使用します。.po ファイル (Cake で使用されているのとまったく同じ) を生成し、翻訳された .po ファイルを JavaScript に生成する CakePHP コンソール関数があります。

于 2014-05-27T14:19:48.063 に答える
0

私はより簡単な方法を使用します。(それが最高かどうかはわかりませんが、うまくいきます)。

テンプレート ファイル内で、js が必要とする可能性のあるメッセージを含む一連の非表示フィールドを定義します。

echo( $this->Form->hidden( 'msg-select-promotion-items', [ 'value' => __( 'Select promotion items' ) ] ) );

ここでは、cake 独自のローカリゼーション システムを利用します。

そしてjsファイルで:

alert( $('input[name=msg-select-promotion-items]').val() );

お役に立てれば。よろしく。ファクンド。

于 2016-10-18T20:10:20.657 に答える