0

私はcakephpを使用してウェブサイトを構築しました。ユーザーは2つの言語(英語と日本語)を切り替えて、すべてのページにアクセスできます。バックエンドデータベースで、データクライアント(MySQL)を2つの言語で保存したいと思います。現在、2つのアプローチがあります。

アプローチ1:2つの列を持つ1つのテーブルを使用するfield_enおよびfield_ja + clients id | client_name_en | client_name_ja | その他...2| 朝| アシャ| ..。

アプローチ2:2つのテーブルを使用します。2番目のテーブルには、IDと対応する名前が2つの言語で格納されます+ clients id | 他の人...

+ clients_lang [client_id、language_id、client_name]

行1:2 | 1 | 朝

行2:2 | 2 | アシャ

注:1は英語、2は日本語です。

私の場合、どちらのアプローチが適していますか。

4

2 に答える 2

1

最初に以下のURLを参照してください

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

また

これを試して

//アプリケーションの国際化

<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;
    }
}

また:

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

//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'));
    }
}
?>

///モデル検証エラーの翻訳

<?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-30T15:15:15.623 に答える
0

この2つの言語しかない場合は、解決策の1つが優れていますが、言語がもっと多くなる可能性がある場合は、最善の解決策ではありません。

私がアドバイスするアプローチは、2番目のアプローチを使用して同じコードを他のサイトに使用することであり、新しい言語を挿入するだけで済みます。

于 2012-07-30T09:56:50.760 に答える