El Globalización La verificación en Control de Calidad mantiene un proyecto internacionalizado listo para el mundo. Se ejecuta en la QA de tareas y en las solicitudes de incorporación de cambios, y solo analiza lo que un cambio modifica:
- Catálogos. Las cadenas que el cambio agrega o modifica, en todos los idiomas.
- Código. Las líneas que el cambio agrega, para texto y formato que asumen un único idioma o cultura.
- Páginas. Cuando el proyecto indica cómo iniciar su aplicación, sus páginas se renderizan con una pseudotraducción.
El asistente activa la verificación de forma predeterminada una vez que se fusiona su pull request. Su configuración se encuentra en Control de Calidad → Globalización; el entorno de trabajo Configuración muestra si está activado.
Qué bloquea de forma predeterminada
Un cambio vuelve a revisión si deja cadenas ausentes o dañadas, o si el código que agrega coloca directamente el texto que leen las personas dentro del código o ensambla una oración a partir de partes. Todo lo demás se registra como hallazgo y no bloquea nada hasta que decida hacerlo. Los hallazgos de formato, orden y diseño se siguen reportando hasta que el proyecto los detecte en su propio código.
Elija qué bloquear en Control de Calidad → Globalización: los códigos de catálogo, Qué en el código devuelve un cambio a revisión, y Problemas de página que devuelven un cambio a revisión. Verificar código fuente y Renderizar páginas desactivan los pasos de código y de página.
Códigos de catálogo
| Código | Significado | Bloquea de forma predeterminada |
|---|---|---|
missing | La cadena no tiene traducción | Sí |
invalid_syntax | La traducción no se puede analizar, por ejemplo por un error en ICU, o muestra un fallo del modelo: una oración truncada, puntuación sobrante, comillas sin cerrar o una palabra duplicada | Sí |
placeholder_mismatch | Los marcadores de posición o términos protegidos difieren del origen, por ejemplo un nombre de producto escrito dos veces | Sí |
plural_categories | Falta una forma plural que necesita el idioma | Sí |
stale | El origen cambió después de traducir la cadena | No |
obsolete | El origen ya no contiene la cadena, ni la página donde se encontraba | No |
El glosario y las reglas de longitud y de términos prohibidos reportan sus propios códigos cuando su archivo de configuración los establece.
La traducción elimina las cadenas obsoletas de todos los idiomas y borra las traducciones de una página cuya fuente ya no existe. Solo elimina los archivos Coroid traducidos, nunca una página que exista en un único idioma.
Códigos de código
| Código | Qué encuentra | Bloquea de forma predeterminada |
|---|---|---|
hardcoded_text | Texto que una persona lee escrito dentro del código en lugar del catálogo: texto JSX y de plantillas, atributos visibles como placeholder, title, alt y aria-label, avisos y alertas | Sí |
concatenated_text | Una oración ensamblada a partir de partes: una traducción unida con texto o un valor mediante +, una expresión literaria de plantilla o elementos vecinos | Sí |
locale_number | Un número formateado sin la configuración regional del lector, como toFixed en código de interfaz de usuario o toLocaleString() sin configuración regional | No |
locale_date | Una fecha u hora formateada sin la configuración regional del lector, o con un patrón fijo como MM/dd/yyyy | No |
hardcoded_currency | Un símbolo o código de moneda escrito junto a un importe | No |
ordinal_sort | Texto ordenado o comparado por código de caracteres, o localeCompare sin configuración regional | No |
case_mapping | toUpperCase() o toLowerCase() en texto sin la configuración regional | No |
physical_direction | Izquierda y derecha en clases CSS y de utilidades, en un proyecto con un idioma de derecha a izquierda | No |
postal_code_format | Un código postal validado con el patrón de un país | No |
phone_number_format | Un número de teléfono validado como norteamericano | No |
latin_only_input | Un nombre, ciudad, calle o dirección limitado a a-z | No |
joined_list | Una lista que las personas leen unida con una coma o "y" | No |
calendar_names | Nombres de días de la semana o meses escritos en el código, o un primer día de la semana fijo | No |
paper_size | Letra, A4 y similares fijados en configuraciones de impresión o PDF | No |
fixed_unit | Una unidad como mi, lb o °F escrita junto a un número mostrado | No |
locale_parsing | Un número que una persona escribió y se lee con parseFloat o Number | No |
ime_composition | La tecla Enter se maneja en un campo de texto sin comprobar si una palabra en chino, japonés o coreano todavía se está componiendo | No |
Diseño para cada mercado muestra la solución para cada caso.
Qué muestra la comprobación
El paso de código analiza JavaScript y TypeScript, incluyendo JSX, y lee plantillas de Vue, Svelte, Astro, HTML, ERB y Handlebars, así como CSS en formato de texto. Una regla solo se aplica cuando su contexto lo indica: un patrón de código postal se detecta únicamente junto a un campo de código postal, y una lista unida solo donde las personas la lean.
- Se traduce por definición. El texto dentro de las llamadas de traducción del proyecto
y componentes (
t(),formatMessage,<Trans>,<FormattedMessage>,$t()) y las funciones que figuran en el archivo de configuración. - Nunca se traduce este texto. Términos protegidos y las palabras que permite el archivo de configuración.
- Se omite intencionadamente. Una línea con un
i18n-ignorecomentario, y la línea siguiente. Indique el motivo:// i18n-ignore: product name.
Lo opcional world apartado de .coroid/i18n.json define el resto:
{
"world": {
"exclude": ["src/legacy/**", "scripts/**"],
"translate": ["translateText", "i18n.translate"],
"allow": ["Storefront", "OK"]
}
}| Campo | Significado |
|---|---|
exclude | Conjuntos de archivos que las reglas omiten |
translate | Funciones de traducción adicionales a las propias de los frameworks |
allow | Las palabras que Nunca se traducen, aparte de los términos protegidos |
formatter, currencies | Se configura en el paso Cultura del asistente; consulte Cultura |
render | Cómo iniciar la aplicación para páginas seudolocalizadas; consulta Pseudo-Localización |
Hallazgos y correcciones
Cada hallazgo se guarda en la ejecución de la comprobación y se incluye en la tarea Problemas encontrados: los hallazgos de catálogo se clasifican por catálogo, clave e idioma; los hallazgos de código, por archivo, línea y texto detectado; y los hallazgos de página, por página, elemento y texto. Un hallazgo se considera corregido cuando la última comprobación del mismo trabajo ya no lo muestra.
- Abrirui · checkout.total · fr: missingGlobalización · No traducido
- En proceso de correcciónsrc/pricing.tsx:7 · “Precios sencillos”Globalización · Texto escrito directamente en el código
- Abrir/{locale}/ · p#promo · “Envío gratuito en todos los pedidos” · runtime_text (de-DE, ar-SA)Globalización · Texto que no proviene del catálogo
- En proceso de correcciónui · cart.items · ja: placeholder_mismatchGlobalización · Los marcadores diferén del origen
- Corregidoui · cart.count · ar: plural_categoriesGlobalización · Faltan formas plurales para este locale
Hallazgos de calidad del análisis de Globalización: cadenas de catálogo, un cambio en el código y una página pseudotraducida, un código de problema por hallazgo. Datos ilustrativos.
En las solicitudes de extracción, los hallazgos de código también aparecen como anotaciones en las líneas modificadas: como error si bloquean, y como advertencia si solo se reportan.
Cuando la comprobación bloquea una tarea, el agente desarrollador recibe cada hallazgo que la impide, como src/pricing.tsx:7 hardcoded_text: “Simple pricing”, junto con las instrucciones para corregirlo. Corrige las traducciones mediante una sesión de traducción para la tarea, nunca editando manualmente los catálogos de otros idiomas. Mueve el texto al catálogo de origen, reescribe las frases ensambladas como un único mensaje con marcadores de posición y ejecuta las reglas de código sobre su propio cambio antes de entregar la tarea.
Aportes de cualquier origen
La comprobación aplica el mismo estándar a todos los cambios, independientemente de quién los haya creado:
- Coroid's agents En un proyecto internacionalizado, se indica en cada tarea: el catálogo de origen y la función de traducción, un mensaje por frase, el formateador del proyecto, el diseño lógico para idiomas escritos de derecha a izquierda y las convenciones de los mercados según Culture.
- Solicitudes de extracción realizadas por personas y otras herramientas pasan la comprobación mediante Coroid Check, con los mismos Hallazgos y anotaciones. Se ejecuta en cada pull request siempre que la aplicación Coroid GitHub esté instalada en el repositorio y la política del proyecto se active en las solicitudes de extracción.
- Los cambios fusionados sin superar esta comprobación se detectan después de la fusión. Traducir cadenas fusionadas fuera de Coroid Lee la comprobación que se ejecutó en el pull request. Genera una tarea de traducción para las cadenas que el pull request dejó sin traducir o desactualizadas. Si la comprobación detectó incidencias de código bloqueantes, también genera una tarea llamada Internacionalizar el código fusionado en pull request, indicando dónde buscar. Cada fusión genera como máximo una tarea de cada tipo.
El código existente nunca se bloquea: Preparación para el mercado mundial Lo enumera y archiva las tareas de corrección que inicias al seleccionarlas.
Ejecútalo tú mismo
El motor es la herramienta de línea de comandos coroid-i18n, cuya versión se fija en tu
archivo de configuración:
coroid-i18n check # catalogues
coroid-i18n source --changed main # the code a branch adds since main
coroid-i18n check --source --changed mainsource Lee el código sin necesidad de consultar los catálogos, por lo que funciona incluso cuando
no están configurados todavía. Sin --changed o --diff lee todo el
repositorio. Ambos comandos devuelven el valor 1 al encontrar algún elemento; añade
--format json para obtener un informe legible por máquina.