tincho 07-05-2023, 01:11
Hola amigos.

Al crear nuestros programas, incluso si no tenemos pensado compartirlos con nadie (mas tarde podríamos querer hacerlo), conviene seguir ciertas pautas que al inicio son triviales pero que luego puede que no lo sean.
  1. Activar el proyecto como traducible.
  2. Preferentemente usar el idioma inglés común ya que la mayoría de programadores lo dominan.
  3. Traducir siempre a versiones neutras no localizadas de otros idiomas. es y no es_MX, es_AR etc. (Ver Nota)
  4. Usar la sentencia Subst() que facilita bastante la tarea del traductor. (Ver Ejemplo)

Nota
Si desean que su programa se vea correctamente traducido en todas las localizaciones utilicen las versiones neutras, si bien quita un poco de flexibilidad al no poder ahondar en localismos, por otra parte se gana en compatibilidad y en concentración de recursos de traductores ya que hay que mantener solo una traducción por cada idioma.  Por ejemplo mi sistema es es_AR-utf8 entonces si en un programa gambas:
  • Existen: es.po, es_AR.po, es_ES.po, es_MX.po Muestra: es_AR.mo
  • Existe solo es_ES.po Muestra: es_ES.mo
  • Existen: es.po Muestra: es.mo
  • Existen: es_MX.po Muestra: es_MX.mo
  • Existen: es_MX.po, es_ES.po Muestra: es_MX.mo (Por algún motivo que desconozco el ide muestra la traducción MX antes que las ES)
  • Existen: es.po, es_ES.po, es_MX.po Muestra: es.mo
Por seguir con ejemplos, esta el mismo IDE de Gambas, todo aquel que tenga la versión de desarrollo de gambas (tal vez la 3.18.2) y tengan la localización es_ES verán que no esta completamente traducido mientras que los que usen cualquier otra localización tendrán su IDE en castellano casi totalmente. El problema es que existen dos archivos es.po y es_ES.po y es este ultimo el que esta esta muy desactualizado (2 años).

Ejemplo

Código:
Public Sub Button1_Click()

  Dim s As String
  Dim oSpanish As Collection = ["Mexico": "125,9", "Colombia": "51,1", "Spain": "46,4", "Argentina": "45,3", "United States": "41,2", "Venezuela": "31,7", "Peru": "30,1", "Chile": "19,0", "Ecuador": "17,1", "Guatemala": "13,5", "Cuba": "11,1", "Dominican Republic": "10,3", "Bolivia": "9,9", "Honduras": "9,4", "Paraguay": "6,5", "Nicaragua": "6,4", "El Salvador": "6,3", "Costa Rica": "5,2", "Panama": "3,9", "Uruguay": "3,4", "Puerto Rico": "3,2", "France": "1,9"]
  Dim sQty As String
  For Each sQty In oSpanish
    s = Subst(("The Spanish-speaking community in the world is notorious. In &1 alone there are more than &2 million Spanish speakers."), oSpanish.Key, sQty)
    Print s
  Next
End

Espero que esto les sea útil, dejo un proyecto de ejemplo con la traducción es.po.
Archivos adjuntos
.gz
sample-translate-0.0.1.tar.gz (Tamaño: 18.75 KB Descargas: 2)
Shordi 06-05-2023, 18:53
Acabo de subir un vídeo de presentación del control EditList, su manejo y sus características a mi canal de Youtube.
Destacar que la versión que se muestra en el video tiene mejoras  y características nuevas respecto a la que en su día se presentó en este foro.

Lo tenéis aquí


Por algún motivo ignoto el sonido me ha quedado un poco bajito, pero subís el volumen y ya está.

Espero que os sea útil

Saludos
tincho 05-05-2023, 15:12
Hola amigos.

Les comparto una manera de obtener los colores del sistema y los de gambas  como por ejemplo, SoftOrange.
El compañero Bruce Steers de la lista de correo internacional ha dado con la solución para obtener las propiedades, ya que las constantes si se pueden obtener desde la clase directamente, pero las propiedades provienen del Objeto.
A raíz del post de Shordi donde buscaba una forma de simplificar el código, finalmente planteo esta manera:

Nota: Por cierto pueden ver el selector de colores de Shordi, que le quedo estupendo y yo subí una versión modificada para trabajar con una colección en vez de con un Variant[].

Código:
      Dim myClass As Class = Classes["Color"]
      Dim sSymbol As String
     
      For Each sSymbol In myClass.Symbols
        If myClass[sSymbol].Kind = Class.Constant Then
          $aColors.Add([myClass[sSymbol].Value, sSymbol])
        Else If myClass[sSymbol].Kind = Class.Property
          $aColors.Add([Object.GetProperty(Color, sSymbol), sSymbol])
        Endif
      Next

Nuevamente el amigo Bruce se supera a si mismo y nos propone esta otra manera:
Código:
 For Each sSymbol As String In Classes["Color"].Symbols
   If Classes["Color"][sSymbol].Kind = Class.Constant Or If Classes["Color"][sSymbol].Kind = Class.Property Then $Colors[sSymbol] = Object.GetProperty(Color, sSymbol)
 Next
Páginas (560):    1 176 177 178 179 180 560   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 288
Último miembro: shoUsho
Temas del foro: 1,729
Mensajes del foro: 8,987
Últimos temas
Paren...WAIT !!!
Foro: Aplicaciones/Fragmentos de Código
Último mensaje por: guizans, 25-08-2025, 14:49
Respuestas: 3 - Vistas: 458
GambOS
Foro: General
Último mensaje por: guizans, 20-08-2025, 13:58
Respuestas: 0 - Vistas: 318
Gambas y Wayland
Foro: General
Último mensaje por: guizans, 20-08-2025, 13:56
Respuestas: 6 - Vistas: 597
Odio a gb.Report
Foro: General
Último mensaje por: guizans, 19-08-2025, 10:40
Respuestas: 8 - Vistas: 943
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.