0

ローカリゼーション機能を使用して、cakephpWebページをテストできるようにしたいと思います。

変換関数__()を使用し、日付と時刻の関数も使用します。toLocaleString()

翻訳とローカリゼーションを簡単な方法でテストする方法を知りたかったのです。

toLocaleString()日付と時刻がローカル形式で出力されることはわかっています。

コントローラのbeforeFilter()で次のコードを使用してみました。

$this->Session->write('Config.langauge', 'ger');
Configure::write('Config.language', 'fre');

上記の2行のコードは機能しませんでした。これも機能しませんでした:

setlocale(LC_ALL, 'de', 'ge');

Ubuntu10.04を使用しています。スペイン語、フランス語、ドイツ語の言語パックもインストールしました。

Cakephpデバッグツールキットでは、言語が変更されたことが示されていますが、日付と時刻の文字列はまったく変更されていません。何が間違っているのかわかりません。

テストに関しては、ロケールが設定されると日付と時刻が機能するはずですが、変換関数については、どのようにテストすればよいですか?私はcakephpのドキュメントを調べましたが、i18nコンソールcommangを使用すると書かれています。コマンドを実行してポットファイルを抽出しようとしましたが、ソースディレクトリと出力ディレクトリを選択しましたが、実行してもディレクトリに何も表示されませんでした。

ありがとう

4

1 に答える 1

3

下記URL参照

http://book.cakephp.org/2.0/en/core-libraries/internationalization-and-localization.html

またはこれを試してください:

//Internationalizing Your Application

<h2><?php echo __('Posts'); ?></h2>

The default domain is ‘default’, therefore your locale folder would look something like this:

/app/Locale/eng/LC_MESSAGES/default.po (English)
/app/Locale/fre/LC_MESSAGES/default.po (French)
/app/Locale/por/LC_MESSAGES/default.po (Portuguese)


<?php
// App Controller Code.
public function beforeFilter() {
    $locale = Configure::read('Config.language');
    if ($locale && file_exists(VIEWS . $locale . DS . $this->viewPath)) {
        // e.g. use /app/View/fre/Pages/tos.ctp instead of /app/View/Pages/tos.ctp
        $this->viewPath = $locale . DS . $this->viewPath;
    }
}


or:


<?php
// View code
echo $this->element(Configure::read('Config.language') . '/tos');




//Localization in CakePHP

<?php
Configure::write('Config.language', 'fre');
?>

<?php
$this->Session->write('Config.language', 'fre');
?>


<?php
class AppController extends Controller {
    public function beforeFilter() {
        Configure::write('Config.language', $this->Session->read('Config.language'));
    }
}
?>


///Translating model validation errors

<?php
class User extends AppModel {

    public $validationDomain = 'validation';

    public $validate = array(
        'username' => array(
                'length' => array(
                'rule' => array('between', 2, 10),
                'message' => 'Username should be between %d and %d characters'
            )
        )
    )
}
?>

//Which will do the following internal call:

<?php
__d('validation', 'Username should be between %d and %d characters', array(2, 10));
于 2012-07-26T04:12:58.533 に答える