Duda con comillas latinas

Juan Jesús Ojeda Croissier juanje.ojeda en gmail.com
Vie Oct 16 12:42:35 UTC 2009


Generalmente no lo son, porque la cadena que se extrae del código,
suele estar entre comillas y se extrae el texto que está dentro. Si
hay una comilla en la cadena, es porque dentro de la función en el
programa dicha comilla está «escapada», es decid, que tiene una «\»
delante (o similar, dependiendo del lenguaje de programación usado)
para que no se tome como comilla por el programa (lo que dividiría
seguramente la cadena en más de una), sino que se use como cadena.

Este programa en concreto está hecho en C++ (cpp) y ésta es la parte
del código de la que sale la cadena que se traduce:

   i18n("XMP metadata from current selected pictures will be permanently "
      "replaced by the XMP content of \"%1\".\n"
      "Do you want to continue ?", importXMPFile.fileName())

Como puedes comprabar, las comillas (") están escapadas (\"), por lo
que las herramientas que obtienen las cadenas para traducir,
devolvieron el texto que aparece en Launchpad y que Ariel nos copió:

  XMP metadata from the currently selected pictures will be
permanently replaced by the XMP content of "%1".
  Do you want to continue?


Pero cuando se esté ejecutando el programa, éste sustituirá «%1» por
el valor que devualva en ese momento la función
«importXMPFile.fileName()», que es el nombre de un archivo y lo pondrá
en el lugar de «%1», no en «"%1"», puesto que al estar escapadas las
comillas, las tratará como una cadena más.

Es cierto que algunos lenguajes de programación dejan poner argumentos
en medio de cadenas y la forma de hacerlo es poniendo comillas, pero
normalmente lo que hacen es romper las cadenas en varias y poner los
argumentos en medio. En esos caso, en Launchpad (o cualquier archivo
.po generado) saldrían como cadenas diferentes. Por ejemplo:

  print _("Hola " + name + ", ¿cómo estás?")

«name» sería una variable con un valor que se sustituiría en el medio
de la cadena, pero, al estar cerradas las comillas tras el «Hola» y
vueltas a abrir antes de «,¿...», se convierten en 2 cadenas
diferentes y así aparecerían en Launchpad. Por un lado habría una
cadena para traducir que sería «Hola» y por otro lado habría otra que
sería «, ¿cómo estás?».

De todas formas, esta forma de hacerlo es poco frecuente en programas
preparados apra traducirse porque genera muchos problemas el partir
frases por la mitad y traducirlas por partes. No todos los idiomas
colocan los elementos de una frase en el mismo orden...

La manera más normal de encontrar lo anterior sería (este ejemplo es en Python):

  print _("Hola %s, ¿cómo estás?" % name)

o, más similar a nuestro caso:

  print _("Hola \"%s\", ¿cómo estás?" % name)

Siento haberme metido demasiado en lo técnico, pero creo que se
explica mejor las razones de por qué sí o no, viendo de donde viene
todo. Si he cometido algún error o hay algo que no se entiende, por
favor, díganmelo, para corregirlo.

Un saludo y que aproveche usted también si está comiendo ;-)

2009/10/16 victor herrero ramos <victorhera en gmail.com>:
> Yo no suelo traducir las comillas porque suele ser parte del programa y no
> del texto
> ej: Filename '%1' por: Nombre de Archivo '%1'
> Pero llevo muy poco tiempo traduciendo en launchpad, ademas ésto deberia
> definirse (corrigeme si me equivoco) en los parámetros de configuración del
> complador que vayas a usar, por eso no lo suelo cambiar.
>
> De todas formas para eso está el check de revisar traducción.
>
> Un saludo y que aproveche si estas comiendo...
>
> El 16 de octubre de 2009 13:49, Juan Jesús Ojeda Croissier
> <juanje.ojeda en gmail.com> escribió:
>>
>> 2009/10/16 victor herrero ramos <victorhera en gmail.com>:
>> > totalmente de acuerdo en programacion, y para cualquier tipo de programa
>> > "
>> > no es igual a '
>>
>> Bueno, de entrada las comillas latinas con «», no '. pero, además,
>> como comenté en el correo anterior, esas comillas (en ese diálogo en
>> concreto) no se sustituyen ni forman parte de ningún argumento, sirven
>> entrecomillar, valga la redundancia, el valor que se sustituye en
>> tiempo de ejecución del programa.
>>
>> Puedes consultarlo en el código (como hice yo), si quieres. Lo que
>> hacen es ponerle comillas a el nombre de un archivo, que el programa
>> sustituye por %1 cuando se está ejecutando.
>> Por eso pienso que deberían ponerse las comillas latinas («»).
>>
>> Un saludo
>>
>> --
>> Juanje
>>
>> --
>> Lista de correo: Ubuntu-es-l10n
>>
>> Participa suscribiéndote y escribiendo a:
>> Ubuntu-es-l10n en lists.ubuntu.com
>>
>> Para darte de alta, de baja  o hacer ajustes a tu suscripción visita:
>> https://lists.ubuntu.com/mailman/listinfo/ubuntu-es-l10n
>
>
> --
> Lista de correo: Ubuntu-es-l10n
>
> Participa suscribiéndote y escribiendo a:
> Ubuntu-es-l10n en lists.ubuntu.com
>
> Para darte de alta, de baja  o hacer ajustes a tu suscripción visita:
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-es-l10n
>
>



-- 
Juanje




Más información sobre la lista de distribución Ubuntu-es-l10n