Я работаю над старым кодом для графического интерфейса tKinter, и в верхней части своего кода они создают следующее определение:
def _(text):
return text
Затем код продолжает использовать функцию _
почти для всех строк, передаваемых виджетам tKinter. Например:
editmenu.add_command(label=_("Paste"), command=parent.onPaste)
Есть ли причина использовать здесь функцию, а не просто передавать строку?
Я удалил функцию _
примерно из нескольких строк и не столкнулся с какими-либо проблемами. Просто интересно, есть ли у этого реальная цель.
🤔 А знаете ли вы, что...
Python используется в разработке игр с помощью библиотеки Pygame.
Это заглушка шаблона, обычно используемого для интернационализации. Шаблон явно задокументирован на https://docs.python.org/3/library/gettext.html#deferred-translations
_("Foo")
предназначен для _
поиска строки Foo
на настроенном языке текущего пользователя.
Добавление заглушки сейчас — до того, как будут фактически построены какие-либо таблицы перевода — упрощает поиск строк, которые необходимо перевести, и избавляет людей от необходимости проверять программное обеспечение, выясняя, какие строки предназначены для внутреннего использования, а какие — для внутреннего. видимое пользователем использование позже. (Это также помогает программистам избежать распространенных ошибок, таких как использование одних и тех же строковых констант как для визуального отображения, так и для сохранения форматов файлов или проводной связи).
Понимание этого важно, потому что оно определяет, как это следует использовать. Не используйте _("Save %s".format(name))
; вместо этого используйте _("Save %s").format(filename)
, чтобы люди, которые в конечном итоге пишут таблицы перевода, могли корректировать строки формата, и чтобы эти строки не обязательно содержали пользовательский контент (который, очевидно, не может быть известен заранее) внутри них.