Saltar al contenido principal

Localización

El sistema de workflows soporta localización multiidioma, permitiendo que el mismo workflow muestre nombres y descripciones correspondientes en diferentes interfaces de Zotero según el idioma.

Jerarquía de localización

La localización de workflows sigue el siguiente orden de prioridad:

Mensajes en línea (manifest.i18n.messages) ← Mayor prioridad

Archivos de locale a nivel de paquete (workflow-package's locales/)

Campos raw del manifiesto (label / description etc. valores por defecto en inglés)

Fallback de clave (ej., "workflows.my-id.label")

Localización en línea (workflow individual)

Definida directamente en workflow.json:

{
"id": "my-workflow",
"label": "My Workflow",
"i18n": {
"defaultLocale": "en-US",
"messages": {
"zh-CN": {
"label": "我的 Workflow",
"taskNameTemplate": "处理中: {query}",
"parameters.language.title": "语言",
"parameters.language.description": "选择输出内容的语言"
},
"ja-JP": {
"label": "マイワークフロー",
"taskNameTemplate": "処理中: {query}"
}
}
}
}

Campos como label y taskNameTemplate en el manifiesto raw sirven como valores por defecto (generalmente en inglés), y las traducciones en i18n.messages sobrescriben el texto mostrado para el idioma correspondiente.

Convenciones de nombres de clave

label — Nombre del workflow
taskNameTemplate — Plantilla de nombre de tarea
parameters.<paramKey>.title — Título del parámetro
parameters.<paramKey>.description — Descripción del parámetro
skills.<skillId>.name — Nombre mostrado del skill en el workflow actual

skills.<skillId>.name solo afecta al nombre mostrado en la interfaz. El runner.json.name del paquete de Skill sigue siendo el nombre predeterminado del skill; si el workflow no declara una traducción correspondiente, la interfaz muestra runner.json.name como respaldo.

Localización a nivel de paquete (paquete de múltiples workflows)

Declare archivos de locale en workflow-package.json:

{
"id": "my-package",
"i18n": {
"defaultLocale": "en-US",
"locales": {
"zh-CN": "locales/zh-CN.json",
"ja-JP": "locales/ja-JP.json"
}
}
}

Contenido de locales/zh-CN.json:

{
"workflows.my-workflow.label": "我的工作流",
"workflows.my-workflow.taskNameTemplate": "处理中: {query}",
"workflows.my-workflow.skills.my-skill.name": "我的技能",
"workflows.my-workflow.parameters.language.title": "语言",
"workflows.another-workflow.label": "另一个工作流"
}

Las claves en archivos de locale a nivel de paquete usan el formato completamente calificado: workflows.<workflowId>.<field>.

Uso mixto

Los mensajes a nivel de paquete y los mensajes en línea de workflow pueden coexistir, con los mensajes en línea teniendo mayor prioridad. Mejores prácticas:

  • Mantener el idioma por defecto (ej., inglés) en los campos de workflow.json
  • Colocar las traducciones en archivos de locale a nivel de paquete para gestión unificada
  • Si una traducción es muy específica de un workflow en particular, también puede colocarse en los mensajes en línea del workflow

Lógica de coincidencia de idioma

El sistema intenta coincidir con la configuración de idioma del usuario en el siguiente orden:

  1. Coincidencia exacta: El locale del usuario es "zh-CN", buscar mensajes "zh-CN"
  2. Coincidencia por subetiqueta de idioma: El locale del usuario es "zh-Hans-CN", si no se encuentra coincidencia exacta, intentar coincidir "zh"
  3. Fallback a defaultLocale: Usar el idioma especificado por i18n.defaultLocale
  4. Fallback a valor de campo raw: Usar los valores de campo raw en workflow.json (ej., label)
  5. Fallback a clave: Mostrar el nombre de clave en sí

Localización de valores enum de parámetros

Si un parámetro tiene valores enum, el texto mostrado para los valores enum actualmente usa los campos title y description del parámetro. Para escenarios complejos que requieran localizar los valores enum en sí, se recomienda explicar esto en el label o descripción del workflow.

Agregar un nuevo idioma a un workflow

  1. Cree un nuevo archivo <locale>.json en el directorio locales/ del paquete
  2. Consulte archivos de locale existentes (ej., zh-CN.json) y traduzca todas las claves
  3. Agrege la nueva entrada de idioma en i18n.locales de workflow-package.json
  4. Recargue el plugin para que surta efecto

Referencia

  • Ejemplo de archivo de locale oficial: content/official/workflows/literature-workbench-package/locales/zh-CN.json
  • Ejemplo de declaración i18n a nivel de paquete: content/official/workflows/literature-workbench-package/workflow-package.json

Próximos pasos