2016-04-18 6 views
4

私のページには、日付変数があります。私はロケール(私の場合はリトアニア語)で短縮された月の名前を翻訳したいと思います。Silverstripe 3.3:テンプレートの日付月の変数をどのように翻訳するのですか?

私はlanged/LANG/lt_LT.ymlで翻訳を設定した

Month: 
    Jan: 'Sau' 
    Feb: 'Vas' 
    Mar: 'Kov' 
    Apr: 'Bal' 
    ... 

そして、私のテンプレートで、私は

$Date.Format(M d) 

を入れたときにそれは英語で常に月と日を与えますロケール(例: "Apr 18"、私はこの場合は "Bal 18"が必要です)とは関係ありません。

私は.SSテンプレートの翻訳、引用符の中に今月の変数を配置しようとすることを試みている:

<%t Month.$Date.Format('M') %> 

しかし、それは動作しません。

"[User Error] Unscaught SSTemplateParseException:16行目のテンプレートの解析エラーです。エラー:開かれたブロックタグが不正です。t演算子を使用しようとしましたか?

誰も私にこのことをどうやって説明してもらえますか?

+3

_configには何を設定しましたか?これはこれが役に立ちますか? 'i18n :: set_locale( 'lt_LT');' テンプレート内 '$ Date.FormatI18N( '%d b%') ' – munomono

+0

ああ、忘れてしまった...ページは翻訳可能です。私は英語とリトアニア語版とそれぞれの翻訳が必要です。 –

+0

どのモジュールを翻訳に使用しますか? @ mmomonoは、日付の国際的な書式を取得する正しい方法を教えてくれました。 –

答えて

4

strftime()を使用する$Date.FormatI18N('%b')を使用すると、サーバーに翻訳をインストールするためにロケールがインストールされている必要があります。そうでなければ、英語(またはデフォルト)ロケールを取得するだけです。

コントローラで現在のロケールを取得する拡張機能については、this gistを参照してください。

1

私は、これは、コントローラ上の機能を入れて実装しまし方法:

public function MonthForVar($var) { 
    return _t("Month.$var"); 
} 

、その後、あなたのテンプレートで$MonthForVar($Date)を呼び出すことができます。あなたが行くループでそれをやっているのを忘れないでください$Up.MonthForVar($Date)

**私は私がここからGoogleにここでリードしていたが、この場合、これはうまくいくはずです。

関連する問題