2012-11-13 89 views
0

我写的,我想这取决于当前的区域用不同的语言来翻译一个简单的程序,但我不能得到它的工作翻译Python应用程序

我是以下各种网站。这是其中之一:translating your python

我没有问题,直到执行从哪里获得该区域不可用,它必须使用“C”语言环境

所以,我可以得到锅编译的文件,林间空地和非空地的绳子。这是网站写在我的程序上的内容:

我检查过的一件事是,os.environ.get返回类似es_ES.UTF-8的东西,然后代码表示将默认设置为without。 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() 

我在做什么错?

+0

我不明白'进口locale'随时随地在你的代码。 –

回答

2

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

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

例使用我的IPython shell中运行代码:

In [7]: import locale 

In [8]: locale.getdefaultlocale() 
Out[8]: ('en_US', 'UTF-8') 
+0

对不起,我在进口中有locale,但问题依然存在。我刚刚看到的是,只翻译我在Python代码中设置的字符串,但不翻译它在林间空地文件中的内容。 – codiaf

+0

您是否已经完成了所有步骤 - http://faq.pygtk.org /index.py?req=show&file=faq22.002.htp? –

+0

gtk.glade不起作用。这是因为我正在使用gtk.builder? – codiaf