Skip to content

Commit

Permalink
Refactors I18N logic (pagopa#411)
Browse files Browse the repository at this point in the history
* makes translation keys type safe
* use YAML for translations (easier to edit for multiline strings)
* adds compile time validation of translation keys
  • Loading branch information
cloudify authored Aug 20, 2018
1 parent 863b3e7 commit 0017468
Show file tree
Hide file tree
Showing 19 changed files with 1,363 additions and 1,134 deletions.
1 change: 1 addition & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ jobs:
- run: yarn lint

# Build app
- run: yarn generate:locales
- run: yarn generate:api-definitions
- run: yarn generate:pagopa-api-definitions
- run: yarn tsc:noemit
Expand Down
26 changes: 20 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,16 @@ Il secondo passo è generare le definizioni dalle specifiche openapi:

```
$ yarn generate:api-definitions
$ yarn generate:pagopa-api-definitions
```

#### Generazione delle traduzioni

Generiamo poi i dati delle traduzioni dai file YAML presenti
nella directory `locales`:

```
$ yarn generate:locales
```

#### Configurazione dell'app
Expand Down Expand Up @@ -247,15 +257,19 @@ Vedere [questo tutorial](https://blog.bam.tech/developper-news/change-your-react

### Internazionalizzazione

L'applicazione utilizza [react-native-i18n](https://github.com/AlexanderZaytsev/react-native-i18n) per il supporto multilingua.
Per il supporto multilingua l'applicazione utilizza:

Per aggiungere una nuova lingua è necessario:
* [react-native-i18n](https://github.com/AlexanderZaytsev/react-native-i18n) per l'integrazione delle traduzioni con le preferenze dell'utente
* Dei file YAML nella directory `locales`
* Uno script di conversione da YAML a codice Typescript (`generate:locales`).

1. Creare un nuovo file all'interno della directory `locales` usando come nome `<langcode>.json` (Es: `es.json`)
2. Copiare il contenuto di uno degli altri file `.json` già presenti
3. Procedere con la traduzione
4. Modificare il file `ts/i18n.ts` aggiungendo tra gli import e nella variabile `I18n.translations` la nuova lingua
Per aggiungere una nuova lingua è necessario:

1. Creare una nuova directory sotto `locales` usando come nome il codice di lingua (Es: `es`).
1. Copiare il contenuto dalla lingua di base (`en`).
1. Procedere con la traduzione.
1. Eseguire lo script di generazione del codice Typescript (`npm run generate:locales`).
1. Modificare il file `ts/i18n.ts` aggiungendo la nuova lingua nella variabile `I18n.translations`.

### Gestione degli errori

Expand Down
1 change: 1 addition & 0 deletions locales/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
locales.ts
476 changes: 0 additions & 476 deletions locales/en.json

This file was deleted.

Loading

0 comments on commit 0017468

Please sign in to comment.