Zul*_*lan 8 python django localization
gettext我经常遇到在尚未设置实际语言的上下文中使用的错误- 而不是使用适当的gettext_lazy.
这些错误可能很难捕获 - 我希望通过适当的日志记录使它们更加明显,甚至可能引发异常。
get_language() is None?django.util.translation看起来已经比较复杂了。有没有一种干净的方法来将这个功能挂在那里?pri*_*rre -1
您可以为此使用 Django 的内置检查。Django 提供了一个 check_for_language 函数,如果未设置语言,该函数会引发 LanguageStoreNotAvailable 异常。您可以在代码中使用此函数在调用 gettext 或 gettext_lazy 之前检查该语言的可用性。
from django.utils.translation import check_for_language, gettext
def my_function():
check_for_language()
return gettext('Hello, world!')
Run Code Online (Sandbox Code Playgroud)
如果未设置语言,则会引发 LanguageStoreNotAvailable 异常。
或者,您可以使用 Django 的 gettext_lazy 函数,该函数返回一个 TranslatableString 对象,当在模板中呈现该对象或在其上调用 force_text 时,该对象将被翻译。这根本不需要调用 gettext,并确保在设置语言之前不会执行翻译。
from django.utils.translation import gettext_lazy
def my_function():
return gettext_lazy('Hello, world!')
Run Code Online (Sandbox Code Playgroud)
这将返回一个可在代码或模板中使用的 TranslatableString 对象,并且将在渲染时执行翻译。
总的来说,通常最好尽可能使用 gettext_lazy 以避免需要显式检查语言的可用性。这有助于避免细微的错误并使您的代码更加健壮。
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |