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:
localechange 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
localedu snapshot du classeur, puis celui de l’instance.regionne remplace pas ces paramètres.DOLLAR, les formats monétaires des résultats financiers et la normalisation des saisies CJK utilisent toujourslocale. - Docs : statistiques:
localesert à 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.
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()) // enUSFusion 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 :
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,])import { mergeLocales } from '@univerjs/presets'// 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.
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: anglaiszh-TW: chinois traditionnelzh-HK: chinois traditionnel (Hong Kong)ru-RU: russevi-VN: vietnamienfa-IR: persanfr-FR: françaisja-JP: japonaisko-KR: coréenes-ES: espagnolca-ES: catalansk-SK: slovaquear-SA: arabede-DE: allemandid-ID: indonésienit-IT: italienpl-PL: polonaispt-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.
import { LocaleType } from '@univerjs/core'univerAPI.setRegion(LocaleType.DE_DE)univerAPI.setLocale(LocaleType.EN_US)console.log(univerAPI.getCurrentRegion()) // deDEL’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:
regiondé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:
regionformate 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:
regiondéfinit le format des dates/heures, avec une horloge de 24 heures et des chiffres latins.localecontrôle les textes de l’interface. Les horodatages stockés ne changent pas ;regionne définit pas le fuseau horaire. - Boards, Slides, Bases, PDFs:
localecontrôle les traductions de l’interface.regionpeut 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.
Attention
Tous les plugins ne proposent pas de packs linguistiques. La documentation de chaque fonctionnalité précise s’ils sont disponibles.
univerAPI.setDirection('rtl')Que pensez-vous de ce guide ?