【发布时间】:2017-09-29 19:25:32
【问题描述】:
很长时间以来,我一直是一个仅限阅读的用户,感谢这个大社区回答的所有问题。
我有两个相关的问题,一个是关于编程的,另一个是关于翻译过程的。
我想开发一个多语言应用程序,我的知识很少,我在dialog.py 中完成了以下操作:
LANGUAGE = 'es-Es' # Get this variable from a conf file if defined
class Dialog:
SUPPORTED_LANGUAGES = ['es-ES', 'en-GB']
def __init__(self, lan):
if lan in SUPPORTED_LANGUAGES:
self.lan = lan
else:
self.lan = 'es-ES' # Use a default conf here
_OPEN_MENU={
'es-ES': 'Abrir...',
'en-GB': 'Open...',
}
_CLOSE_MENU={
'es-ES': 'Cerrar',
'en-GB': 'Close',
}
_QUIT_APP_MENU={
'es-ES': 'Salir',
'en-GB': 'Quit',
}
.
.
.
@property
def OPEN_MENU(self):
return self._OPEN_MENU[self.lan]
@property
def CLOSE_MENU(self):
return self._CLOSE_MENU[self.lan]
@property
def QUIT_APP_MENU(self):
return self._QUIT_APP_MENU[self.lan]
.
.
.
dialog = Dialog(LANGUAGE)
所以让我说main.py 我可以使用:
from dialog import dialog
dialog.OPEN_MENU # With actual conf this returns 'Abrir...'
dialog.CLOSE_MENU # 'Cerrar'
dialog.QUIT_APP_MENU # 'Salir'
第一个问题,有没有办法在不装饰和重复每个字符串的代码的情况下做这样的事情(这不是很pythonic)?最终目标是在主文件中有这么好的代码,这样就不会乱七八糟了。
第二,我对应用程序开发知之甚少,这是我应该如何工作还是有更好的方法我没有发现?开发者如何处理这种情况?
非常感谢!
【问题讨论】:
-
对不起,但你的问题对我来说并不是很明显 - “第一个问题,有没有办法在不装饰和重复每个字符串的代码的情况下做这样的事情(这是不是很pythonic)?”装饰和重复代码?什么代码?对于什么字符串?你能告诉我们你的意思吗?
-
是的,请给我几分钟时间来编辑问题。问题基本上是我有多个字符串,我想成为多语言,所以我必须为所有字符串重复属性定义。
-
你在重新发明轮子。 gettext 模块为您的 Python 模块和应用程序提供国际化 (I18N) 和本地化 (L10N) 服务。 docs.python.org/3/library/gettext.htmlzetcode.com/wxpython/in18
标签: python wxpython language-translation