19

Python 2.7で利用可能な文字列をフォーマットするための新しく推奨される方法はformat、Djangoで翻訳されていない文字列になりますか?

文字列は.poファイル内にあり、翻訳されていますが、Webサイトでは翻訳されません。例えば:

from django.utils.translation import ugettext as _

website_name = "Stackoverflow"
title = _(u"{sitename} is a good website".format(sitename=website_name))

文字列を変換した後の.poファイルは次のようになります。

#: path/to/file.py:4
msgid "{sitename} is a good website"
msgstr "{sitename} ist eine gute Website"

Webサーバーを実行django-admin.py compilemessagesして再起動した後、処理されたHTMLページでは、他のすべての文字列が翻訳されている間、英語のままです。さらに、を使用してすべての文字列が変換されるわけではありませんが、演算子formatを使用してフォーマットされた文字列は期待どおりに変換されます。%問題は両方の関数で同じであるため、これはgettext/ugettextの問題でもありません。

4

3 に答える 3

10

compilemessages文字列は「{sitename}は優れたウェブサイトです」と表示されますが、アプリの実行中は、文字列は実際には「MySiteは優れたウェブサイトです」などです。もちろん翻訳はありません。最初に裸の文字列を翻訳する必要があります。その後、その文字列に対してテンプレート操作を実行できます。

于 2012-07-22T18:56:34.350 に答える
3

以下が機能するはずです。

_('Foo %(x)s') % {'x': "bar"}

s文字列、dインタイガーです。

于 2019-04-02T13:12:47.807 に答える
1

同じ問題があったので、最初にテキストを翻訳してから、次のような動的コンテンツを追加しました

title = _(u"is a good website")
title = " ".join([website_name, title])

これを行うためのより良い方法があるはずです

于 2012-07-22T18:14:57.427 に答える