Я кодирую библиотеку, включающую текстовую обратную связь, которую мне нужно перевести.
Я поместил следующие строки в модуль _config.py, который я импортирую повсюду в моем приложении:
import gettext, os, sys
pathname = os.path.dirname(sys.argv[0])
localdir = os.path.abspath(pathname) + "/locale"
gettext.install("messages", localdir)
У меня есть файлы * .mo в ./locale/lang_LANG/LC_MESSAGES, и я применяю функцию _ () ко всем строкам, которые необходимо перевести.
Теперь я только добавил функцию для пользователя, предположительно, программиста, чтобы он мог создавать свои собственные сообщения. Я не хочу, чтобы он заботился о реализации, лежащей в основе, поэтому я хочу, чтобы он был яблоком, чтобы сделать это как-то просто:
lib_object.message = "My message"
Я использовал свойства, чтобы сделать его чистым, но что, если мой пользователь хочет перевести свой собственный код (который использует мой) и делает что-то вроде:
import gettext, os, sys
pathname = os.path.dirname(sys.argv[0])
localdir = os.path.abspath(pathname) + "/locale"
gettext.install("user_app", localdir)
lib_object.message = _("My message")
Это проблема? Что я могу сделать, чтобы избежать неприятностей, не беспокоя моего пользователя?