Mudlet: Deja de perder traducciones al modificar

Creado en 7 sept. 2018  ·  28Comentarios  ·  Fuente: Mudlet/Mudlet

Breve resumen del problema / Descripción de la característica solicitada:

Recientemente hicimos algunas actualizaciones menores a las cadenas, o incluso comentarios sobre las cadenas. Después de subirlos a Crowdin, todas las traducciones realizadas recientemente en estas cadenas desaparecen. Deberían quedar intactos o al menos dar opción a decidir.

Pasos para reproducir el problema / Razones para agregar la función:

  1. Sube archivos a Crowdin, empieza a traducir
  2. Modificar cadenas traducidas en la fuente de github
  3. Reseña de Crowdin. ¡Las traducciones se han ido!

Salida de error/resultado esperado de la característica

La base de conocimiento de Crowdin explica esto:

Actualización de archivos de origen
Si se modificaron algunas de las cadenas de origen, el sistema muestra un cuadro de diálogo con una lista de esas cadenas. Podrá elegir qué traducciones existentes desea conservar sin cambios o eliminar, y si desea conservar o eliminar las aprobaciones.
crowdin

Esa sección habla específicamente sobre la actualización manual de un archivo a través del sitio web de Crowdin.
¿Cómo puede comenzar este diálogo cuando llegan los archivos actualizados a través de la integración de github?

Información adicional, como la versión de Mudlet, el sistema operativo e ideas sobre cómo resolver/implementar:

Ejemplo de cambios en español de la colección.
1

La traducción al español "así" se ha ido. En este caso, la cadena de origen ni siquiera cambió, sino solo el comentario de la cadena. En otros casos, una cadena era muy larga (~100 palabras) y solo cambió 1 palabra, el resto permaneció sin cambios. Por supuesto, gran parte de la traducción sigue siendo válida, por lo que no debería eliminarse así.

Los traductores aún pueden ver "entonces" como una sugerencia, si se esfuerzan por hacer clic en cada cadena nuevamente (incluidas las que aún no se han traducido), pero la sugerencia se encuentra entre otras sugerencias y ni siquiera está marcada como "esto se ha traducido". la traducción de esta misma cadena antes"

2

discussion i18n & l10n

Comentario más útil

Gracias, apreciado :) estudiaremos esto.

Todos 28 comentarios

¿Alguna idea de cómo remediar? @crowdin

¿Dónde trazas la línea entre mantener o descartar una traducción?

A mí me parece lo mejor volver a poner la traducción en TM, es muy fácil sacarla de nuevo y el traductor puede decidir si quiere reutilizar el texto o no.

Exactamente, esa línea debe dibujarse individualmente para cada cadena, como sugiere la captura de pantalla de Crowdin.

Agradecería una opción para que los traductores inicien ese diálogo emergente después de extraer hilos de github.

En este momento, ni siquiera pueden distinguir qué cadenas se han traducido previamente, para arreglar rápidamente un tirón.

No creo que sea razonable pasar horas en cada modificación, investigando qué traducciones se rompieron.

Cuando se usa el propio Linguist de Qt (o más bien lupdate ) para actualizar un montón de archivos .ts específicos del idioma directamente desde el código fuente, lupdate tiene una opción:

          Drop all obsolete and vanished strings.

Solo si se proporciona esa opción, eso causa que no se usen u obsoletos, que es como creo que CrowdIn está tratando un cambio en el comentario, las cadenas se eliminarán de los archivos .ts . De alguna manera, necesitamos que CrowdIn se comporte así para nosotros. :rezar:

Es importante destacar que no creo que un cambio en un comentario (aunque posiblemente un cambio en una desambiguación sea diferente) deba borrar la traducción; podría ser aceptable que pierda el estado "aprobado" pero no que se olvide.

Hola a todos,

Tenga en cuenta que también puede guardar las traducciones de las cadenas modificadas al actualizar el archivo a través de CLI/API/GitHub, especificando el parámetro update_option en el archivo de configuración ( crowdin.yml ) almacenado en su repositorio.

Más información:
https://support.crowdin.com/configuration-file/#changed-strings-update

Después de realizar el cambio, pause y reanude la integración en Crowdin para aplicar los cambios.

¡Espero que eso sea exactamente lo que necesitas!

¡Gracias por la respuesta!

@Kebap ¿Qué opción te gustaría?

Gracias chicos. esto es genial Revisaré las opciones en detalle.

Me gustaría probar la opción "update_as_unappproved", este parece ser un buen compromiso: las traducciones permanecen intactas, pero pierden su estado de aprobación.

Ahora, cuando probé esto, no parecía funcionar. Las cadenas aún perdieron sus traducciones. Incluso llegué a mejorar el diseño breve creado automáticamente del archivo de configuración yaml , para reflejar exactamente el ejemplo dado en la sección de la Base de conocimientos vinculada anteriormente.

Aún así, Crowdin aparentemente desafortunadamente simplemente reemplazó las cadenas, en lugar de mantener sus traducciones y simplemente eliminar la aprobación. ¿Lo estoy haciendo mal?

La cadena tenía previamente traducción y aprobación (¿la aprobación parece invisible en el archivo .ts?)
image

La opción de actualización "update_as_unapproved" se probó con un diseño yaml corto y largo, ambos con el mismo resultado
image

Después de modificar la cadena (o el comentario), Crowdin ahora muestra la cadena modificada sin traducción ni aprobación.
image

Crowdin Diff informa cadenas como "eliminadas y añadidas" no "mantenidas pero perdieron su aprobación"
image

-- Responda arriba de esta línea --

        Hi everyone,

Parece que el problema es que en su proyecto sus archivos son .html y
.ts. Los archivos de este tipo no tienen una estructura CLAVE:VALOR clara,
por lo tanto, cuando actualiza los archivos, cada cadena modificada se
considerados como cadenas nuevas. Es el comportamiento esperado del sistema,
pero les preguntaré a los desarrolladores si hay algo que se pueda hacer en este
caso una vez que están en la oficina!

¿Cómo calificarías mi respuesta?
Genial [1] Bueno [2] No bueno [3]

--
Atentamente,
Olga Kuhta
Gerente de Éxito del Cliente

Enlaces:

[1]
https://secure.helpscout.net/satisfaction/204306672/record/1818790773/1/
[2]
https://secure.helpscout.net/satisfaction/204306672/record/1818790773/2/
[3]
https://secure.helpscout.net/satisfaction/204306672/record/1818790773/3/

    > On Sat, Sep 8, 2018 at 1:34:23 EEST, Mudlet/mudlet <[email protected]> wrote:

Me gustaría probar la opción "update_as_unappproved", esto parece ser una
buen compromiso: las traducciones permanecen intactas, pero pierden su aprobación
estado.

Ahora, cuando probé esto, no parecía funcionar. Cuerdas aún perdidas
sus traducciones. Incluso llegué a mejorar automáticamente
creado un breve diseño del archivo de configuración yaml [1], para
reflejan exactamente el ejemplo dado en la sección Base de conocimiento [2]
vinculado arriba.

Aún así, el Crowdin aparentemente desafortunadamente simplemente reemplazó al
cadenas, en lugar de mantener sus traducciones y simplemente eliminar las
aprobación. ¿Lo estoy haciendo mal?

String previamente tenía traducción y aprobación (aprobación parece
invisible en el archivo .ts?)
[3]

La opción de actualización "update_as_unapproved" se probó con opciones cortas y largas
diseño yaml, ambos con el mismo resultado
[4]

Después de modificar la cadena (o comentario), Crowdin ahora muestra modificado
cadena sin traducción y aprobación
[5]

Crowdin Diff informa cadenas como "eliminadas y añadidas" no "mantenidas pero
perdió su aprobación"
[6]

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub [7] o silencie el
hilo [8].

Enlaces:

[1] https://github.com/Kebap/Mudlet/blob/crowdin-test/.crowdin.yml
[2]
https://support.crowdin.com/configuration-file/#changed-strings-update
[3]
https://user-images.githubusercontent.com/117238/45245753-12b3a300-b2fe-11e8-819a-fbc1cab389cd.png
[4]
https://user-images.githubusercontent.com/117238/45245828-632b0080-b2fe-11e8-8457-d16f53e62976.png
[5]
https://user-images.githubusercontent.com/117238/45245723-e7c94f00-b2fd-11e8-831d-14f3c0151aa8.png
[6]
https://imagenes-de-usuario.githubusercontent.com/117238/45245651-843f2180-b2fd-11e8-8744-b431244e39e8.png
[7]
https://github.com/Mudlet/Mudlet/issues/1961#issuecomment-419583856
[8]
https://github.com/notifications/unsubscribe-auth/AA0k1tqzDWWwb2qGudFk9ENRg7Hm3D-Hks5uYvRcgaJpZM4WeaRq

Sí, Qt IDE usa archivos .ts. Seguramente esto no es un nicho. ¿Alguna recomendación de los desarrolladores de Crowdin?

Los comentarios de Qt no fueron concluyentes:

(Kebap) ¡Hola a todos! ¿Alguien ha usado alguna vez un sitio web de servicio basado en la web para manejar traducciones y traductores? Usamos Crowdin y parece que no funcionan bien con el formato de archivo Qt .ts. Parecen pensar que cada cadena modificada es una cadena nueva y eliminará las traducciones antiguas. Vea el siguiente hilo para más detalles. ¿Cómo podemos solucionar esto? https://github.com/Mudlet/Mudlet/issues/1961
(frkleint) Kebap: recomendaría publicar en la lista de correo http://lists.qt-project.org/mailman/listinfo/localization
(Kebap) Parece que esa lista de correo se trata de traducir el proyecto Qt en sí. Sin embargo, ¿tal vez hay otras personas construyendo su propio proyecto con Qt y traduciendo a otros idiomas?
(frkleint) Kebap: Sí, pero los mantenedores/las personas adecuadas lo leerán

Déjame verificar todos los detalles, @Kebap. Tengo un "plan B" en mi cabeza, aunque necesito probarlo.

¿Estaría bien que almacene el texto fuente/las traducciones en el elemento del archivo .ts? En el puede tener una ID de cadena única, por ejemplo

Actualmente importamos/subimos un archivo mudlet.ts que contiene el texto fuente a CrowdIn y lo procesan para producir un mudlet_xx_YY.ts donde xx es el código de idioma de dos letras y YY es un código de país de dos letras. El mudlet.ts origen es, creo, generado/actualizado con la utilidad Qt lupdate que creo que se ejecuta desde nuestro directorio fuente ./translations como lupdate -locations absolute ../src/mudlet.pro -ts ./mudlet.ts {en menos de un * nux OS}.

Hay una alternativa, pero no sé si CrowdIn puede funcionar así, en la que proporcionamos los archivos individuales .ts (actualmente:

  • mudlet_de_DE.ts
  • mudlet_el_GR .ts`
  • mudlet_en_GB.ts
  • mudlet_es_ES.ts
  • mudlet_fr_FR.ts
  • mudlet_it_IT.ts
  • mudlet_nl_NL.ts
  • mudlet_pl_PL.ts
  • mudlet_ru_RU.ts
  • mudlet_zh_CN.ts
  • mudlet_zn_TW.ts

) archivos a CrowdIn y hacer que él o el equipo de traducción trabajen en ellos. Esto significaría que los esfuerzos de traducción existentes se mantienen dentro de cada archivo .ts ; así es como Qt prevé que se haga la traducción, porque lupdate luego actualizará cada archivo de traducción individual con los cambios. de las fuentes del código cuando se ejecuta, pero no descartará (a menos que se indique explícitamente con el argumento -no-obsolete ) textos antiguos que ya no aparecen en las fuentes. La desventaja de esto es que no hay un único archivo fuente para todas las traducciones, lo que podría confundir o no funcionar con el sistema CrowdIn. La ventaja es que #1963 inmediatamente deja de ser un problema, ya que podemos generar el archivo mudlet_en_US.ts solo en plural y simplemente incluirlo en la carga a CrowdIn en el lanzamiento/versión/cualquier cambio...

Creo que Crowdin requiere un solo archivo como entrada. Recuerdo que durante la configuración no le gustaban varios archivos, es decir, el problema era que el archivo de entrada y salida era el mismo.

¿Aunque podríamos simplemente nombrar los archivos de entrada y salida de manera diferente?

Crowdin ciertamente puede manejar múltiples archivos de entrada, como en diferentes cadenas para traducir. Sin embargo, en el plan de SlySven, todos tendrían contenidos idénticos. Eso significaría que incluso el equipo de traducción al polaco vería todos los archivos, incluidos mudlet_it_IT.ts y mudlet_ru_RU.ts, etc. Por lo tanto, no continuamos por ese camino y optamos por un archivo de traducción central.

editar: la explicación para crear archivos .ts es correcta, pero el comando real utilizado es: lupdate -recursive .\src\ -ts .\translationsmudlet.ts

No estoy seguro de lo que quiere decir con eso, Vadim, pero creo que Kebap está en la misma pista: podríamos ingresar todos los archivos, pero ¿cómo decimos / le decimos a CrowdId que solo el mudlet_ru_RU.ts del conjunto debe mostrarse al ¿Traductores de ruso (Rusia) ?

@vadi2 Tiene razón, se recomienda cargar un solo archivo fuente, Crowdin generará los archivos traducidos por sí mismo.

No cargue archivos como mudlet_ru_RU.ts en el proyecto.

¿Probablemente podamos programar una llamada para discutir eso más a fondo? Comuníquese conmigo en andriy(at)crowdin.com

Tengo una idea en mente que funcionará con seguridad, pero necesito saber si estará satisfecho con ella. La cosa es que .ts no tiene identificadores únicos para cada cadena, como en .po, archivos donde msgid es fuente e identificador al mismo tiempo, <source> es texto e identificador también (junto con los elementos <context> y <name> , cada cadena se considera única y si modifica <source> , la cadena se considera nueva y no puede conservar las traducciones para modificarlas) cadenas en el resultado).

De todos modos, hay una solución/solución bastante buena que me gustaría discutir/demostrarle a su equipo;)

... y solo algunos contenidos serían los mismos - los textos de las fuentes - pero las traducciones ya hechas para cada localidad también se almacenan en su archivo respectivo, y están presentes en cada ciclo siguiente de actualización-traducción.

Si lo entiendo, el esquema de identificador de mensaje único también está permitido en el sistema Qt, pero es más difícil trabajar con él, y un cambio a mitad del proyecto no es una tarea trivial (los dos sistemas son mutuamente excluyentes y necesita una muy buena metodología para llegar a identificadores significativos), y parte del beneficio del esquema existente es que las cadenas duplicadas se fusionan en una sola traducción común, es solo que cambiar una necesita que las otras también cambien si están destinadas a ser la mismo...

Cuando traducimos todas las cadenas en un idioma al 100 % y luego editamos algunas en una versión, ¿no sería muy fácil revisarlas y volver a agregarlas gracias a TM?

Este problema solo parece un problema real porque todavía tenemos que alcanzar el 100%.

@vadi2 en caso de que desee tener la capacidad de traducir automáticamente las cadenas recién agregadas con la ayuda de TM, puede configurar dicho flujo de trabajo utilizando la función Flujos de trabajo avanzados (lo acabo de habilitar para su cuenta)
https://support.crowdin.com/advanced-workflows/

Gracias, apreciado :) estudiaremos esto.

@Kebap escribió:

editar: la explicación para crear archivos .ts es correcta, pero el comando real utilizado es: lupdate -recursive .\src\ -ts .\translationsmudlet.ts

-recursive es el caso de argumento predeterminado y no es necesario, y también lo es el -locations absolute para archivos nuevos aparentemente... :slightly_smiling_face: - Estaba averiguando esto mientras comprobaba qué efecto los problemas que todavía tiene lupdate con los literales de cadena sin procesar de C++ 11/14 { QTBUG , #1310} y si las cadenas se están perdiendo del archivo mudlet.ts como resultado de su confusión. . :frunciendo el ceño:

@Kebap ¿Sigue siendo un problema?

Sí, aunque no tanto como antes del cambio. Pero sigue siendo confuso, incluso para los iniciados, como puede ver en el tema vinculado de hace una semana.

También hay un poco de carrera actualmente, mientras que la mayoría de los idiomas aún no están cerca del 100%, ¿traducirán las cadenas más rápido de lo que pierden las traducciones nuevamente?

Además, encontré un problema que parece recuperar las traducciones eliminadas. Actualmente no encuentro ninguna forma de eliminar una traducción de Crowdin. Después de la próxima actualización, se habrá agregado automáticamente nuevamente.

@Andrulko ¿Tiene alguna actualización aquí? Estabas mencionando un plan B arriba..

Además, ¿¡por qué Crowdin hace este comportamiento extraño en TM ahora!? Vea la captura de pantalla a continuación para comparar.

Todo lo que cambiamos aquí es h3 en a . No se tocó ninguna otra etiqueta. ¿Ahora lo que pasó?

¿Esperaría que los traductores reemplazaran cada {[=-lt;-=]}h2{[=-gt;-=]}{[=-lt;-=]}u{[=-gt;-=]} en <h2><u> o más bien en <0> manualmente?

Enlace al ejemplo: https://crowdin.com/translate/mudlet/137/en-de
Captura de pantalla de ejemplo:
grafik

Creo que es un error en la TM de Crowdin. Probablemente sea mejor informarles como un problema separado.

También les he informado aquí: https://crowdin.com/contacts

Hola, ya hemos revisado su solicitud y respondido a su correo electrónico. Por favor, háganos saber si tiene alguna otra pregunta.

¿Fue útil esta página
0 / 5 - 0 calificaciones