El Globalización El control en Control de Calidad mantiene un proyecto internacionalizado listo para el mercado mundial. Se ejecuta sobre el control de calidad de tareas y sobre las solicitudes de extracción, y solo analiza lo que modificó el cambio:
- Catálogos. Las cadenas de texto que el cambio agregó o modificó, 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 traducción pseudo.
El asistente activa esta comprobació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 por defecto
Un cambio vuelve a enviarse para reparación cuando deja cadenas de texto faltantes o dañadas, o cuando el código que agrega coloca el texto que las personas leen directamente dentro del código o ensambla una sentencia a partir de partes. Todo lo demás se registra como hallazgo y no bloquea nada hasta que decida bloquearlo. Los hallazgos de formato, orden y diseño se siguen reportando hasta que el proyecto los detecte en su propio código.
Elija qué bloquea bajo Control de Calidad → Globalización: los códigos de catálogo, Qué en el código envía un cambio de vuelta, y Problemas de página que solicitan volver a enviar un cambio para reparación. Revisar código fuente y Renderizar páginas desactiven los pasos de código y de página.
Códigos de catálogo
| Código | Significado | Bloquea por defecto |
|---|---|---|
missing | La cadena de texto no tiene traducción | Sí |
invalid_syntax | La traducción no se puede analizar, por ejemplo, por un error en ICU | Sí |
placeholder_mismatch | Los marcadores de posición difieren de la fuente | Sí |
plural_categories | Falta una forma plural que necesita el idioma | Sí |
stale | La fuente cambió después de traducir la cadena | No |
El glosario, las reglas de longitud y de términos prohibidos reportan sus propios códigos cuando su archivo de configuración los establece.
Códigos de código
| Código | Qué encuentra | Bloquea por defecto |
|---|---|---|
hardcoded_text | Texto que las personas leen escrito dentro del código en lugar del catálogo: texto JSX y de plantillas, atributos visibles como placeholder, title, alt y aria-label, notificaciones y alertas | Sí |
concatenated_text | Una sentencia ensamblada a partir de partes: una traducción unida con texto o un valor mediante +, una plantilla literal o elementos adyacentes | Sí |
locale_number | Un número formateado sin la configuración regional del lector, como toFixed en el código de la 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 monto | 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 letras 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 leyó con parseFloat o Number | No |
ime_composition | Se procesa la tecla Enter en un campo de texto sin verificar 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é analiza la comprobación
El paso de código analiza JavaScript y TypeScript, con JSX, y lee plantillas Vue, Svelte, Astro, HTML, ERB y Handlebars, así como CSS como texto. Una regla solo se aplica donde su contexto la nombra: un patrón de código postal solo se reporta junto a un campo de código postal, y una lista unida solo donde las personas la lean.
- Traducido por definición. Texto dentro de las llamadas de traducción y componentes del proyecto (
t(),formatMessage,<Trans>,<FormattedMessage>,$t()) y las funciones enumeradas en el archivo de configuración. - Nunca texto. Términos protegidos y las palabras que permite el archivo de configuración.
- Se omitió a propósito. Una línea con un
i18n-ignorecomentario, y la línea a continuación. Indique el motivo:// i18n-ignore: product name.
El parámetro opcional world sección 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 además de las propias del framework |
allow | Palabras que nunca se traducen, aparte de los términos protegidos |
formatter, currencies | Se configura en el paso de Cultura del asistente; consulte Cultura |
render | Cómo iniciar la aplicación para páginas con Localización; consulte Localización |
Hallazgos y reparaciones
Cada hallazgo se registra durante la ejecución de las comprobaciones y aparece en la tarea de Problemas encontrados: los hallazgos se catalogan por catálogo, clave e idioma; los hallazgos de código se identifican por archivo, línea y texto encontrado; los hallazgos de página se clasifican 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 cuando bloquean, y como advertencia cuando 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. Repara las traducciones mediante una sesión de traducción específica para la tarea, sin editar 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 aplica las reglas de código a su propio cambio antes de entregar la tarea.
Contribuciones de cualquier origen
La comprobación aplica el mismo estándar a todos los cambios, independientemente de quién los haya realizado:
- Coroid's agents En los proyectos internacionalizados se indica en cada tarea: el catálogo de origen y la función de traducción, un mensaje por oración, 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 procedentes de personas y otras herramientas pasan la comprobación mediante Coroid Check, con los mismos Hallazgos y anotaciones. Activa Revisa cada PR para ejecutarlo en cada pull request.
- Los cambios fusionados sin pasar esta comprobación se detectan después de la fusión. Las cadenas traducidas fusionadas fuera de Coroid lee la comprobación realizada en el pull request. Genera una tarea de traducción cuando faltan cadenas o están desactualizadas. Si la comprobación bloqueó Hallazgos de código, también genera una tarea llamada Internacionaliza el código fusionado el 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 global lo lista y genera tareas de corrección que puedes iniciar al seleccionarlo.
Ejecútalo tú mismo
El motor es la herramienta de línea de comandos coroid-i18n, cuya versión se especifica 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
estos aún no están configurados. Sin --changed o --diff analiza todo el
repositorio. Ambos comandos devuelven el código de salida 1 al detectar algún elemento; añade
--format json para obtener un informe legible por máquina.