2012-11-13 114 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