Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为一个类中的所有属性创建默认@property?_Python_Wxpython_Language Translation - Fatal编程技术网

Python 如何为一个类中的所有属性创建默认@property?

Python 如何为一个类中的所有属性创建默认@property?,python,wxpython,language-translation,Python,Wxpython,Language Translation,很长一段时间以来,我一直是一个只读用户,我很感谢这个大社区回答的所有问题 我有两个相关的问题,一个是关于编程,另一个是关于翻译过程 我想开发一个多语言应用程序,用我的一点知识,我在dialog.py中完成了以下工作: LANGUAGE = 'es-Es' # Get this variable from a conf file if defined class Dialog: SUPPORTED_LANGUAGES = ['es-ES', 'en-GB'] def __init

很长一段时间以来,我一直是一个只读用户,我很感谢这个大社区回答的所有问题

我有两个相关的问题,一个是关于编程,另一个是关于翻译过程

我想开发一个多语言应用程序,用我的一点知识,我在
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)?最终的目标是在主文件中有这么好的代码,这样它就不会变得凌乱

第二,我对应用程序开发知之甚少,这是我应该如何工作,还是有更好的方法我没有找到?开发人员如何处理这种情况


多谢各位

您似乎非常努力地创建一个类来保存数据。创建一个数据结构来保存数据是可以的


您可以为每种语言创建键值对。将它们保存在json文件中,并使用语言键读入正确的json文件。使用字典的键而不是对象的属性来尊重文本。

对不起,你的问题对我来说并不明显-“第一个问题,有没有一种方法可以做到这样,而不必为每个字符串修饰和重复代码(这不是很pythonic)?“修饰和重复代码?什么代码?什么弦?你能告诉我们你的意思吗?是的,给我几分钟来编辑这个问题。基本上,问题是我有多个字符串,我想成为多语言,所以我必须重复所有字符串的属性定义。你正在重新发明轮子。gettext模块为Python模块和应用程序提供国际化(I18N)和本地化(L10N)服务。谢谢,我想避免像对话框[打开菜单][语言]这样的事情,但它更容易做到,你是对的。编辑:我读错了,你是说不同语言有不同的文件,那也没关系。