An open API service indexing awesome lists of open source software.

https://github.com/edisdev/vue-i18n-service

vue-i18n single file component exporter/importer
https://github.com/edisdev/vue-i18n-service

Last synced: 28 days ago
JSON representation

vue-i18n single file component exporter/importer

Awesome Lists containing this project

README

          

# vue-i18n-service

The translation team (not developers) wants **a** file with all the keys to translate. But I love to use translations in **Single File Components**.

And I found a solution to make everyone happy: `vue-i18n-service export|import`

Vue I18n Service makes to manage SFC translations easier in a file. It collects all the `` definitions in Single File Components and collects them into a file.

## What's the flow:
`Hello.vue`
```vue

{{ hello }}

{
"en": {
"hello": "Hi 🙁"
},
"tr": {
"hello": "Selam"
}
}

```

⬇️`npx vue-i18n-service export > translations.json`
```json
{
"src/components/Hello.vue": {
"en": {
"hello": "Hi 🙁"
},
"tr": {
"hello": "Selam"
}
}
}
```

✏️`translations.edited.json`

```json
{
"src/components/Hello.vue": {
"en": {
"hello": "Hello 🙂"
},
"tr": {
"hello": "Merhaba"
}
}
}
```

### Editing `translations.json` using Web UI

Open [https://edisdev.github.io/vue-i18n-translator/](https://edisdev.github.io/vue-i18n-translator/) and drop `translations.json` file which you've just generated. It will parse it and generate an useful interface to translate.

![vue-i18n-translator](https://pbs.twimg.com/media/DnDZ5yYX0AAzJyN.png)

⬇️`npx vue-i18n-service import < translations.edited.json`
```
updating file src/components/Hello.vue
```
```vue

{{ hello }}

{
"en": {
"hello": "Hello 🙂"
},
"tr": {
"hello": "Merhaba"
}
}

```

And all is OK. Doesn't matter how many files you have, it simply distributes without any problem and any conflict.

## Exporting i18n's in SFCs

This will generate a `translations.json` file (or whatever you named).

```bash
npx vue-i18n-service export > translations.json
```

It has a simple format:

```json
{
"": {
"": {
"": ""
}
}
}
```

Here is an example:

```json
{
"src/components/Hello.vue": {
"en": {
"hello": "Hello"
},
"tr": {
"hello": "Merhaba"
}
},
"src/views/World.vue": {
"en": {
"world": "World"
},
"tr": {
"world": "Dünya"
}
}
}
```

### --dir

By default, `vue-i18n-service` looks for SFCs in the `src/` directory, if your components are in another directory, specify it by passing the `--dir` flag:

```bash
npx vue-i18n-service export --dir=client/ > translations.json
```

## Importing `translations.json` file to the SFCs

After bulk changing files, you can distribute import all the files calling `import` command.

```bash
npx vue-i18n-service import < translations.json
```

This will update `.vue` files and replace them with changes.

## Creating new locale from other locale
You can creating a new locale by copying another locale `create` command

```bash
npx vue-i18n-service create 'newlocale' 'extendedLocale'
```

## Contributors




Fatih Kadir Akın



Fatih Kadir Akın



Hatice Edis



Hatice Edis



Paul Gascou-Vaillancourt



Paul Gascou-Vaillancourt

## License

MIT.