Internationalisation

Langue de l’interface

locale sélectionne le pack de langue des menus, infobulles, dialogues et autres textes traduits. locales enregistre les packs sans sélectionner de langue. Ce paramètre est partagé par les unités de l’instance Univer. Utilisez une valeur LocaleType, comme LocaleType.EN_US.

  • Tous les produits : interface: locale change les traductions des menus, infobulles, dialogues et libellés des plugins. Le contenu utilisateur et les noms des unités existantes restent inchangés.
  • Sheets : formats et formules: L’affichage des nombres/dates utilise en priorité la locale forcée du format numérique, puis le locale du snapshot du classeur, puis celui de l’instance. region ne remplace pas ces paramètres. DOLLAR, les formats monétaires des résultats financiers et la normalisation des saisies CJK utilisent toujours locale.
  • Docs : statistiques: locale sert à la segmentation et au comptage des mots.

Changer la langue à l’exécution

Chargez les packs de tous les plugins ou presets installés avant de changer de langue. loadLocales() fusionne les traductions sans changer de langue ; setLocale() sélectionne la langue sans télécharger de pack. Les traductions manquantes affichent leur clé. Cet exemple charge le pack UI commun ; fusionnez aussi les packs de la langue cible des autres plugins installés dans le même appel.

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

Enregistrer des packs de langue en mode plugin

Pour enregistrer des packs de langue en mode plugin, vous devez importer les packs correspondants depuis les plugins qui les fournissent, puis les fusionner dans un objet unique à transmettre à l’instance Univer. Voici un exemple :

TypeScript
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'import DesignEnUS from '@univerjs/design/locale/en-US'import DocsUIEnUS from '@univerjs/docs-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,       DocsUIEnUS,     ),  },})

Attention

Tous les plugins ne proposent pas de packs linguistiques. La documentation de chaque fonctionnalité précise s’ils sont disponibles.

Enregistrer des packs de langue en mode prédéfini

Les packages prédéfinis incluent déjà les packs de langue des plugins correspondants ; il vous suffit de les importer depuis le package prédéfini.

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

Fusion des packs de langue

La méthode mergeLocales permet de fusionner les packs linguistiques de plusieurs plugins ou préréglages en un seul objet complet. Vous pouvez l’utiliser comme suit :

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,])

Packs linguistiques personnalisés

Univer prend également en charge les packs linguistiques personnalisés. Vous pouvez créer un objet de pack linguistique selon vos besoins et le transmettre à l’instance Univer. Les packs linguistiques des préréglages se trouvent généralement dans le répertoire <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: 'やり直す',        },      },    },  },})

Contribuer aux traductions

Univer propose actuellement les packs linguistiques intégrés suivants :

  • zh-CN : chinois simplifié
  • en-US : anglais
  • zh-TW : chinois traditionnel
  • zh-HK : chinois traditionnel (Hong Kong)
  • ru-RU : russe
  • vi-VN : vietnamien
  • fa-IR : persan
  • fr-FR : français
  • ja-JP : japonais
  • ko-KR : coréen
  • es-ES : espagnol
  • ca-ES : catalan
  • sk-SK : slovaque
  • ar-SA : arabe
  • de-DE : allemand
  • id-ID : indonésien
  • it-IT : italien
  • pl-PL : polonais
  • pt-BR : portugais (Brésil)

Univer est un projet open source inclusif. Nous invitons les développeurs du monde entier à ajouter ou à améliorer les locales d’Univer.

Paramètres régionaux

region définit les conventions régionales des fonctions concernées. Ce paramètre est partagé par les unités de l’instance Univer.

Utilisez LocaleType pour les deux paramètres : LocaleType.EN_US vaut enUS, tandis que en-US est le nom du fichier de langue / la balise BCP 47. Ne passez pas de code pays comme US ou SG à region. Aucun pack supplémentaire n’est nécessaire pour la région lorsque l’interface utilise une autre langue.

Sans valeur explicite, region suit locale, y compris lors des appels ultérieurs à setLocale(). Définir region à l’initialisation ou appeler setRegion() arrête ce suivi. Les changements de langue conservent alors la région choisie. Aucune API publique ne rétablit le suivi automatique ; modifiez les deux valeurs pour les synchroniser.

Ajoutez region: LocaleType.DE_DE à côté de locale dans createUniver() ou new Univer() pour conserver la langue de l’interface avec les conventions régionales allemandes.

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

L’interface passe ici à l’anglais et la région reste allemande. getCurrentLocale() et getCurrentRegion() renvoient les identifiants actifs. Pour changer les deux, appelez les deux setters avec la même valeur LocaleType.

  • Sheets : commandes monétaires: region détermine l’icône monétaire, les options et aperçus monétaires/comptables ainsi que le format appliqué par la commande monétaire. Le changement ne réécrit pas les formats existants et ne convertit pas les montants.
  • Docs : statistiques: region formate les nombres dans le dialogue de statistiques et la barre d’état (séparateurs de groupes, par exemple), sans changer les règles de comptage.
  • Commentaires en fil, si activés: region définit le format des dates/heures, avec une horloge de 24 heures et des chiffres latins. locale contrôle les textes de l’interface. Les horodatages stockés ne changent pas ; region ne définit pas le fuseau horaire.
  • Boards, Slides, Bases, PDFs: locale contrôle les traductions de l’interface. region peut servir aux fonctions communes intégrées, comme les commentaires en fil, mais ne reformate pas automatiquement les textes des tableaux/diapositives, les champs Base ou le contenu PDF.

Disposition de droite à gauche

Attention

RTL est actuellement pris en charge uniquement par la couche UI. La couche de rendu ne prend pas en charge RTL.

La direction de mise en page est indépendante : utilisez direction à l’initialisation ou univerAPI.setDirection('rtl') / setDirection('ltr'). Modifier uniquement locale ou region ne change pas la direction.

TypeScript
univerAPI.setDirection('rtl')

Que pensez-vous de ce guide ?

© 2026 DreamNum Co., Ltd.