0

我写了一个简单的程序,我想根据当前的语言环境翻译成不同的语言,但我无法让它工作

我正在关注各种网站。这是其中之一:翻译你的蟒蛇

在执行时我没有任何问题,直到我得到语言环境不可用并且它必须使用“C”语言环境

所以,我可以得到带有 glade 和 non glade 字符串的 pot 编译文件。这是网站上写在我的程序上的内容:

我检查的一件事是 os.environ.get 正在返回类似 es_ES.UTF-8 的内容,然后代码说要放置默认值而不使用 .UTF-8

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import gi
from gi.repository import Gtk
import subprocess, sys, os
import threading
import gettext

# # Algunas cosas para gettext (para las traducciones)
APP_NAME="welcn"



WELCN_DIR = '/home/pruebas/welcn-0.1/'


class main():


    def __init__(self):



        #Translation stuff

        #Get the local directory since we are not installing anything
        self.local_path = os.path.realpath(os.path.dirname(sys.argv[0]))
        # Init the list of languages to support
        langs = []
        #Check the default locale
        lc, encoding = locale.getdefaultlocale()
        if (lc):
            #If we have a default, it's the first in the list
            langs = [lc]
        # Now lets get all of the supported languages on the system
        language = os.environ.get('LANG', None)
        if (language):
            """langage comes back something like en_CA:en_US:en_GB:en
            on linuxy systems, on Win32 it's nothing, so we need to
            split it up into a list"""
            langs += language.split(":")
        """Now add on to the back of the list the translations that we
        know that we have, our defaults"""
        langs += ["en_CA", "en_US"]

        """Now langs is a list of all of the languages that we are going
        to try to use.  First we check the default, then what the system
        told us, and finally the 'known' list"""

        gettext.bindtextdomain(APP_NAME, self.local_path)
        gettext.textdomain(APP_NAME)
        # Get the language to use
        self.lang = gettext.translation(APP_NAME, self.local_path
            , languages=langs, fallback = True)
        """Install the language, map _() (which we marked our
        strings to translate with) to self.lang.gettext() which will
        translate them."""
        _ = self.lang.gettext



        builder = Gtk.Builder()
        builder.add_from_file(WELCN_DIR + "welcn.ui")


        #### Language and Keymap window
        self.window = builder.get_object("window1")
        self.button_try = builder.get_object("button1")
        self.button_cli_installer = builder.get_object("button2")



        self.window.connect("delete-event", Gtk.main_quit)
        builder.connect_signals(self)
        self.window.set_title(_('Welcome!'))
        self.window.set_position(Gtk.WindowPosition.CENTER)


        self.window.show_all()

    def on_button1_clicked(self, widget, data=None):
        Gtk.main_quit()

    def on_button2_clicked(self, widget, data=None):
        subprocess.Popen(["cinnarch-setup"])
        sys.exit(0)





if __name__ == '__main__':
    main()
    Gtk.main()

我究竟做错了什么?

4

1 回答 1

2

import locale在这个代码文件的任何地方做过吗?

为了locale.getdefaultlocale()工作,您显然需要先导入它。

使用我的 ipython shell 运行代码的示例:

In [7]: import locale

In [8]: locale.getdefaultlocale()
Out[8]: ('en_US', 'UTF-8')
于 2012-11-13T12:58:01.280 回答