elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] Aplicacion multilenguaje
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] Aplicacion multilenguaje  (Leído 2,422 veces)
ovichan

Desconectado Desconectado

Mensajes: 81


Ver Perfil
[Python] Aplicacion multilenguaje
« en: 15 Agosto 2013, 04:34 am »

Hola a todos, pues nada estoy intentando hacer una aplicacion GUI para un programa de codificacion de audio. El caso es que me ha llamado siempre la atención, desde que llevo varios años traduciendo el programa mkvmerge, el poder usar GNU. Estoy poco a poco intentando hacer pruebas para poder traducir la interfaz y por ahora dar las opciones de dos lenguajes, English y Español.

El codigo que llevo es este:

Código
  1. #-------------------------------------------------------------------------------
  2. # Name:        EACUI
  3. # Purpose:     Audio encoding with EAC3TO
  4. #
  5. # Author:      Overdrive80
  6. #
  7. # Created:     13/08/2013
  8. # Copyright:   (c) Overdrive80 2013
  9. # Licence:     <your licence>
  10. #-------------------------------------------------------------------------------
  11. import os, sys
  12. import win32api
  13. import platform
  14. import gettext
  15. import locale
  16. import sys
  17.  
  18. #Configure gettext Define the '_()' function
  19. def set_gettext():
  20.    APP_NAME = "EACUI"
  21.    LOCALE_DIR = ('C:\Locale\es\LC_MESSAGES')
  22.  
  23.    t = gettext.translation(APP_NAME, LOCALE_DIR,fallback=True)
  24.    _ = t.gettext
  25.  
  26. def main():
  27.    #Inicializacion de Gettext
  28.    set_gettext()
  29.  
  30.    '''Create a list of asociated programs'''
  31.    lista_programas=['eac3to']
  32.    '''Check arquitecture'''
  33.    def is_x64():
  34.        arquitectura=platform.architecture()
  35.        if arquitectura[0] == '64bit':
  36.            #print "Tu sistema es de 64 bits."
  37.            return True
  38.        else:
  39.            #print "Tu sistema es de 32 bits."
  40.            return True
  41.    '''Seek path by default of installating'''
  42.    def find(ruta, program):
  43.        for root,dirs,files in os.walk(ruta):
  44.            for name in files:
  45.                if program+'.exe'==name:
  46.                    path=os.path.join(root, name)
  47.                    return path
  48.  
  49.    PATH_DEFAULT='C:\\'
  50.    for programa in lista_programas:
  51.        path=find(PATH_DEFAULT, programa)
  52.        if path != None:
  53.            ruta_bus=os.path.split(path)
  54.            print (_('File found %s, in the path %s.')) % programa, ruta_bus[0]
  55.            print (_('Would you like to set this path as access by default to program %s?')) % programa
  56.        else:
  57.            print (_("Not file found %s.")) % programa
  58.            print (_('Would you like set handle program´s path?'))
  59.  
  60. main()
  61.  
  62.  

El archivo "es.mo" es este: https://dl.dropboxusercontent.com/u/19135067/es.mo

El problema radica cuando intento ejecutar el script de manera que coja el "es.mo", me da este error:



Es algo curioso pq he podido generar correctacmente el archivo "es.pot" con:

Código
  1. @echo off
  2. Title .Py to .Pot files
  3. set path=path;C:\Python33\
  4. set /p label="Inserte la etiqueta del idioma (p.e.: es): "
  5. python "C:\Python33\tools\i18n\pygettext.py" -d %label% -o %label%.pot %1
  6. pause&exit

Estoy usando la version 3.2 de python pq la 2, al parecer no tiene implementando gettext.

Espero que me podais echar un cable. Saludos.

EDITO: He conseguido fijar ese problema declarando debajo de la importacion de modulos: "_ =None". Sin embargo, ahora me encuentro este problema:



Hubiera escrito el codigo de otra manera pero me daba fallo al generar el archivo pot, porque gettext no admite expresiones debe ser un formato string.

EDITO2: Solucionado, al menos se ejecuta. Al parecer, todo el fallo ha sido por meter en una funcion el codigo de gettext, cuando debe ir fuera del bloque main. Lo que está tachado y que hice no sirve.


« Última modificación: 15 Agosto 2013, 06:15 am por ovichan » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
-
Programación Visual Basic
xadap 6 4,184 Último mensaje 30 Agosto 2005, 21:45 pm
por xadap
SBK-08 Superbike World Championship Multilenguaje
Juegos y Consolas
N@5h 0 1,272 Último mensaje 14 Agosto 2008, 17:55 pm
por N@5h
[Python] ¿Por qué Python 2.7.3 admite la sintaxis de Python 3? « 1 2 »
Scripting
Yidu 10 10,455 Último mensaje 10 Febrero 2013, 21:46 pm
por Eleкtro
Trabajar con Multilenguaje interno de VB.NET
.NET (C#, VB.NET, ASP)
P4nd3m0n1um 1 2,609 Último mensaje 15 Noviembre 2016, 11:20 am
por okik
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines