Internacionalización

Idioma de la interfaz

locale selecciona el paquete de idioma de menús, ayudas, diálogos y otros textos traducidos. locales registra los paquetes sin seleccionar un idioma. Este ajuste se comparte entre las unidades de la instancia de Univer. Use valores de LocaleType, como LocaleType.EN_US.

  • Todos los productos: interfaz: locale cambia las traducciones de menús, ayudas, diálogos y etiquetas de plugins. No traduce contenido del usuario ni renombra unidades existentes.
  • Sheets: formatos y fórmulas: La visualización de números/fechas usa primero la locale sobrescrita del formato numérico, después el locale del snapshot del libro y finalmente el de la instancia. region no sustituye estos ajustes. DOLLAR, los formatos monetarios de resultados financieros y la normalización de entradas CJK siguen usando locale.
  • Docs: estadísticas: locale se usa para segmentar y contar palabras.

Cambiar el idioma durante la ejecución

Cargue los paquetes de todos los plugins o presets instalados antes de cambiar el idioma. loadLocales() combina traducciones sin cambiar de idioma; setLocale() selecciona el idioma sin descargar paquetes. Las traducciones ausentes muestran su clave. Este ejemplo carga el paquete UI compartido; combine en la misma llamada los paquetes del idioma de destino de los demás plugins instalados.

TypeScript
import { LocaleType, mergeLocales } from '@univerjs/core'import UIEnUS from '@univerjs/ui/locale/en-US'univerAPI.loadLocales(LocaleType.EN_US, mergeLocales(UIEnUS))univerAPI.setLocale(LocaleType.EN_US)console.log(univerAPI.getCurrentLocale()) // enUS

Registro de paquetes de idiomas en modo complemento

Para registrar paquetes de idioma en modo complemento, debe importar los paquetes de idioma correspondientes desde los complementos que los proporcionan y fusionarlos en un solo objeto para pasar a la instancia Univer. Aquí hay un ejemplo:

TypeScript
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'import DesignEnUS from '@univerjs/design/locale/en-US'import SheetsUIEnUS from '@univerjs/sheets-ui/locale/en-US'import UIEnUS from '@univerjs/ui/locale/en-US'const univer = new Univer({  locale: LocaleType.EN_US,  locales: {    [LocaleType.EN_US]: mergeLocales(      DesignEnUS,       UIEnUS,       SheetsUIEnUS,     ),  },})

Caution

No todos los complementos incluyen paquetes de idiomas. Especificaremos esto en la documentación de cada característica.

Registro de paquetes de idiomas en modo preestablecido

Los paquetes preestablecidos ya incluyen los paquetes de idiomas de complemento correspondientes, solo necesita importarlos desde el modo preestablecido.

TypeScript
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'const { univerAPI } = createUniver({  locale: LocaleType.EN_US,  locales: {    [LocaleType.EN_US]: mergeLocales(      UniverPresetSheetsCoreEnUS,     ),  },  presets: [UniverSheetsCorePreset()],})

Combinación de paquetes de idioma

mergeLocales El método se utiliza para fusionar múltiples complementos o paquetes de idioma preestablecidos en un objeto de paquete de idioma completo. Puedes usarlo de la siguiente manera:

TypeScript
import { mergeLocales } from '@univerjs/core'// You can pass multiple language pack objects to mergeconst locales = mergeLocales(  plugin1Locales,  plugin2Locales,  presetLocales,)// You can also pass an array of language pack objectsconst locales = mergeLocales([  plugin1Locales,  plugin2Locales,  presetLocales,])

Paquetes de idiomas personalizados

Univer también admite paquetes de idiomas personalizados. Puede ensamblar un objeto de paquete de idioma según sea necesario y pasarlo a la instancia Univer. Los paquetes de idiomas preestablecidos generalmente se almacenan en el directorio <rootDir>/packages/<PLUGIN_NAME>/locale.

TypeScript
import { LocaleType, Univer } from '@univerjs/core'const univer = new Univer({  locale: LocaleType.JA_JP,  locales: {    [LocaleType.JA_JP]: {      ui: {        shortcut: {          undo: '元に戻す',          redo: 'やり直す',        },      },    },  },})

Contribución de traducciones

Univer actualmente proporciona los siguientes paquetes de idiomas integrados:

  • zh-CN: chino simplificado
  • en-US: inglés
  • zh-TW: tradicional Chino
  • zh-HK: Chino tradicional (Hong Kong)
  • ru-RU: Ruso
  • vi-VN: Vietnamita
  • fa-IR: Persa
  • fr-FR: Francés
  • ja-JP: japonés
  • ko-KR: coreano
  • es-ES: español
  • ca-ES: catalán
  • sk-SK: eslovaco
  • ar-SA: Árabe
  • de-DE: alemán
  • id-ID: indonesio
  • it-IT: italiano
  • pl-PL: polaco
  • pt-BR: portugués (brasileño)

Univer es un proyecto de código abierto lleno de inclusión y damos la bienvenida a desarrolladores de todo el mundo para agregar o mejorar las configuraciones regionales de Univer.

Configuración regional

region define las convenciones regionales de las funciones correspondientes. Este ajuste se comparte entre las unidades de la instancia de Univer.

Use valores de LocaleType para ambos: LocaleType.EN_US vale enUS, mientras que en-US es el nombre del archivo de idioma / etiqueta BCP 47. No pase códigos de país como US o SG a region. No hace falta cargar el paquete del idioma de la región si la interfaz usa otro idioma.

Sin un region explícito, este sigue a locale, incluidas las llamadas posteriores a setLocale(). Definir region al inicializar o llamar a setRegion() detiene ese seguimiento. Los cambios posteriores de idioma conservan la región elegida. No hay una API pública para restaurar el seguimiento automático; cambie ambos valores para mantenerlos sincronizados.

Añada region: LocaleType.DE_DE junto a locale en createUniver() o new Univer() para conservar el idioma de la interfaz con las convenciones regionales alemanas.

TypeScript
import { LocaleType } from '@univerjs/core'univerAPI.setRegion(LocaleType.DE_DE)univerAPI.setLocale(LocaleType.EN_US)console.log(univerAPI.getCurrentRegion()) // deDE

Aquí la interfaz cambia a inglés y la región sigue siendo Alemania. getCurrentLocale() y getCurrentRegion() devuelven los identificadores activos. Para cambiar ambos, llame a los dos setters con el mismo valor de LocaleType.

  • Sheets: controles de moneda: region determina el icono de moneda, las opciones y vistas previas de moneda/contabilidad y el formato aplicado por el comando de moneda. No reescribe formatos de celdas existentes ni convierte importes.
  • Docs: estadísticas: region da formato a las cifras del diálogo de estadísticas y de la barra de estado (por ejemplo, separadores de grupos), sin cambiar las reglas de recuento.
  • Comentarios en hilo, si están habilitados: region controla el formato de fecha/hora, con reloj de 24 horas y dígitos latinos. locale controla los textos de la interfaz. No cambian las marcas de tiempo almacenadas; region no es un ajuste de zona horaria.
  • Boards, Slides, Bases, PDFs: locale controla las traducciones de la interfaz. region está disponible para funciones compartidas integradas, como los comentarios en hilo, pero no reformatea automáticamente texto de tableros/diapositivas, campos Base ni contenido PDF.

Diseño de derecha a izquierda

Atención

Actualmente, RTL solo es compatible con la capa de UI. La capa de renderizado no admite RTL.

La dirección del diseño es independiente: use direction al inicializar o univerAPI.setDirection('rtl') / setDirection('ltr'). Cambiar solo locale o region no cambia la dirección.

TypeScript
univerAPI.setDirection('rtl')

¿Cómo es esta guía?

© 2026 DreamNum Co., Ltd.