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.
- Activar el proyecto como traducible.
- Preferentemente usar el idioma inglés común ya que la mayoría de programadores lo dominan.
- Traducir siempre a versiones neutras no localizadas de otros idiomas. es y no es_MX, es_AR etc. (Ver Nota)
- 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.