2

.poファイルを使用して、個々の月または日を問題なく翻訳できます。

echo __('December'); //becomes diciembre
echo __('Thursday'); //becomes jueves
//...etc

しかし、次のような日付形式を使用すると:

 echo __(date("j F, Y"));  //becomes 20 December 2012

翻訳されません - 月ごと、日ごとに個々の行に翻訳があるためだと思います。

通常、私は次のようなことをします:

__(date('j')) . ' ' . __(date('F')) . ' ' . __(date('Y'));

ただし、CMS では、管理者は日付を任意の形式に変更できます。したがって、「j F、Y」、「Ymd」、または...その他の可能性があります。

日付をバラバラにして各部分を a で返すヘルパーか何かを作成できるのではないかと思いましたが__()、これはやり過ぎのようです。これを行う簡単な方法はありますか?

AppController でロケールを設定しています。

setlocale(LC_ALL, $currentLanguage['locale']);
Configure::write('Config.language', $currentLanguage['code2']);
4

2 に答える 2

4

CakePHP にはTimeHelperi18nFormat関数があることがわかりました。

$time = time();
$timestring = $this->Time->format('Y-m-d H:i:s', $time);
$this->Time->i18nFormat($timestring, "%A %e %B %Y");

ファイル「LC_TIME」(拡張子なし)を作成し、/Locale/ara/フォルダーに配置します(または「ara」を必要な3文字の言語コードに置き換えます)

CakePHP の time_test LC_TIME ファイルの内容をコピーして、自分のファイルに入れます (もちろん保存してください)。

次に、その内容を任意の言語に変更します (その例はスペイン語だと思います)。

それでおしまい!

ノート:

LC_TIME ファイルの詳細については、http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.files%2Fdoc%2Faixfiles%2FLC_TIME.htm を参照してください

于 2012-12-20T23:34:42.060 に答える
1

このCakeTimeクラス (およびTimeHelper) は、日と月の名前の変換に「cake」ドメインを使用します。そのため、これらの翻訳をcake.po代わりにファイルに入れますdefault.po

于 2012-12-20T19:59:59.977 に答える