我正在處理 tKinter GUI 的一些舊代碼,并在他們的代碼頂部創建以下定義:
def _(text):
return text
然后代碼繼續使用該_函式圍繞幾乎所有傳遞給 tKinter 小部件的字串。例如:
editmenu.add_command(label=_("Paste"), command=parent.onPaste)
是否有理由在此處使用該函式而不是僅傳遞字串?
我已經_從一些字串中洗掉了該函式,并且沒有遇到任何問題。只是好奇這是否有真正的目的。
uj5u.com熱心網友回復:
這是通常用于國際化的模式的存根。該模式明確記錄在https://docs.python.org/3/library/gettext.html#deferred-translations
_("Foo")旨在以當前用戶的配置語言_查找字串Foo。
現在將存根放入 - 在實際構建任何翻譯表之前 - 可以輕松搜索需要翻譯的字串,并避免人們需要通過軟體確定哪些字串用于系統內部與稍后用戶可見使用。(它還有助于指導程式員避免犯常見的錯誤,例如為用戶可見的顯示和保存檔案格式或有線通信使用相同的字串常量)。
理解這一點很重要,因為它指導應該如何使用它。不要使用_("Save %s".format(name)); 相反,使用_("Save %s").format(filename)這樣最終撰寫翻譯表的人可以調整格式字串,因此這些字串不需要在其中包含用戶提供的內容(顯然無法提前知道)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/527592.html
上一篇:基于相同的列值Sql創建列的排列
