Django i18n(gettext)はデータベースに翻訳を格納するレガシー翻訳モジュールを使用したDjangoプロジェクトを持っています。Djangoカスタムテンプレートタグ(i18n transなど)の結果にフィルタを適用
Djangoのデフォルトの{% trans ... %}
のように動作するカスタムテンプレートタグ{% db_trans ... %}
を作成しましたが、複製できないトリックが1つあります。
この例では、「ツリー」(英語)は「ブーム」(オランダ語)に変換されます。
私のDjangoテンプレートで、デフォルトのi18nを使用して{% trans "tree" %}
と書くと、結果はboom
と表示されます。これをタイトルとして使用する場合は、{% trans "tree"|capfirst %}
のようなcapfirst
フィルタを使用し、結果はBoom
になります。首都に注意してください。
これは特別なトリックのようです。 db_trans
カスタムタグ(simple_tag
に基づいて)は翻訳の前に入力を大文字にします。 Tree
のデータベースへの変換がないため、{% db_trans "tree"|capfirst %}
はデフォルトの(変換されていない)値Tree
をレンダリングします。
- 私は今約
{% filter capfirst %}...{% endfilter %}
です。簡単な解決策が見つからない場合はおそらくそれを使用します。 - Djangoのソースコードを確認したところ、
{% trans ... %}
はsimple_tag
に基づいていないことがわかりました。また、多くのテキスト引数を解析しています。
私の質問:上記のように指定したフィルタは、カスタムタグの結果に適用されることを可能にするパッケージまたはスニペットがありますか?あなたのテンプレートタグフィルタ作る場合
ようになりますHTMLで'db_trans_capital'という別のsimple_tagは、同じ変換関数を呼び出し、結果に' .title() 'を呼び出します。それはおそらく私がやることです。それをフィルタに変更して、チェーンにすることができます。 '{{'tree' | db_trans | capfirst}}' – Brobin
それはそうします。 – dyve
@Brobinこの提案を回答として追加すると、私はそれをあなたに信用できます:-) – dyve