# Internationalisation

- Human documentation: [https://docs.univer.ai/fr-FR/guides/boards/getting-started/i18n](https://docs.univer.ai/fr-FR/guides/boards/getting-started/i18n)

- Agent Markdown: [https://docs.univer.ai/fr-FR/guides/boards/getting-started/i18n.md](https://docs.univer.ai/fr-FR/guides/boards/getting-started/i18n.md)

- Requested language: `fr-FR`

- Content language: `fr-FR`

- Documentation version: `1.2.0`

- Source: [boards/getting-started/i18n.fr-FR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/boards/getting-started/i18n.fr-FR.mdx)

---

## 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
```

### 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 :

#### Mode plugin

```typescript
import { mergeLocales } from '@univerjs/core'

// You can pass multiple language pack objects to merge
const locales = mergeLocales(
  plugin1Locales,
  plugin2Locales,
  presetLocales,
)
// You can also pass an array of language pack objects
const locales = mergeLocales([
  plugin1Locales,
  plugin2Locales,
  presetLocales,
])
```

#### Mode préréglage

```typescript
import { mergeLocales } from '@univerjs/presets'

// You can pass multiple language pack objects to merge
const locales = mergeLocales(
  plugin1Locales,
  plugin2Locales,
  presetLocales,
)
// You can also pass an array of language pack objects
const 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

> [!WARNING: Attention]
> RTL est actuellement pris en charge uniquement par la couche UI. La couche de rendu ne prend pas en charge RTL.

> [!WARNING: Attention]
> Tous les plugins ne proposent pas de packs linguistiques. La documentation de chaque fonctionnalité précise s’ils sont disponibles.

```typescript
univerAPI.setDirection('rtl')
```
