Skip to content

Commit

Permalink
docs: [RU] Translation update (#1023)
Browse files Browse the repository at this point in the history
* docs: (ru) translation start

* api.md перевод заголовков и общих фраз

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* installation.md translated

* formatting.md translated

* pluralization.md translated

* (ru) wip translation

* daterime.md translated

* number.md translated

* (ru) translation wip

* (ru) multiple linebreaks replaced

* (ru) translation wip

* api.md translation wip

* (ru) translation wip: change external docs links

* (ru) translation wip: formatting

* (ru) translation wip

* docs: (ru) translation wip

* docs: merge updates

* (ru) translation wip

* docs: (ru) translation wip

* docs: (ru) translation wip

* docs: (ru) translation wip

* docs: (ru) translation wip

* docs: (ru) translation wip

* docs: (ru) translation wip

* docs: (ru) translation wip

* docs: (ru) translation wip

* docs: (ru) translation wip

* docs: (ru) translation wip

* docs: (ru) Translation finished

* docs: (ru) hot-update.md update

* docs: (ru) translation updates

* installation.md update version

* api.md updates

* interpolation/number updates

* tooling.md update

* docs: (ru) updates

* docs(ru): api.md update

* docs(ru): tooling.md update

* docs(ru): messages.md update

Co-authored-by: Alex Sokolov <4497128+Alex-Sokolov@users.noreply.github.com>
  • Loading branch information
Alex-Sokolov and Alex-Sokolov committed Oct 25, 2020
1 parent 0365b83 commit 6ace404
Show file tree
Hide file tree
Showing 3 changed files with 140 additions and 2 deletions.
14 changes: 14 additions & 0 deletions vuepress/ru/api/README.md
Expand Up @@ -377,6 +377,20 @@ sidebar: auto
Обработчик может потребоваться при расширении корневого экземпляра VueI18n и необходимости ожидания для применения этих расширений к локальному экземпляру компонента.
#### escapeParameterHtml
> Добавлено в версии 8.22+
* **Тип:** `Boolean`
* **По умолчанию:** `false`
Если `escapeParameterHtml` установлен в значение `true`, то параметры интерполяции будут экранированы перед переводом сообщения. Это полезно, когда результат перевода используется в `v-html` и текст для перевода содержит HTML-разметку (например, `<b>` вокруг предоставленного пользователем значения). Этот шаблон в основном предназначен для случаев, когда передаются предварительно скомпилированные текстовые строки в компоненты UI.
Процесс экранирования включает в себя замену следующих символов на соответствующие HTML-сущности: `<`, `>`, `"`, `'`.
Установка `escapeParameterHtml` в значение `true` не должна нарушать существующую функциональность, а предоставит защиту от векторов атаки типа XSS.
### Свойства
#### locale
Expand Down
117 changes: 115 additions & 2 deletions vuepress/ru/guide/messages.md
Expand Up @@ -5,11 +5,16 @@
Синтаксис сообщений локализации:

```typescript
// As Flowtype definition, Locale Messages syntax like BNF annotation
// Как определение Flowtype, синтаксис сообщений перевода аналогичен аннотации BNF
type LocaleMessages = { [key: Locale]: LocaleMessageObject }
type LocaleMessageObject = { [key: Path]: LocaleMessage }
type LocaleMessageArray = LocaleMessage[]
type LocaleMessage = string | LocaleMessageObject | LocaleMessageArray
type MessageContext = {
list: (index: number) => mixed,
named: (key: string) => mixed
};
type MessageFunction = (ctx: MessageContext) => string;
type LocaleMessage = string | MessageFunction | LocaleMessageObject | LocaleMessageArray;
type Locale = string
type Path = string
```
Expand Down Expand Up @@ -203,3 +208,111 @@ const messages = {
```html
<p>There's a reason, you lost, DIO.</p>
```

## Функция для сообщения

vue-i18n рекомендует использовать строки для формата списком или именованного формата в качестве сообщения локализации при переводе сообщений.

Однако бывают ситуации, когда из-за сложного синтаксиса языка, необходима полная мощь возможностей JavaScript. В таком случае, вместо строковых сообщений можно использовать **функцию для сообщения**.

Функция ниже просто возвращает приветствие:

```js
const messages = {
en: {
greeting: (ctx) => 'hello!'
},
ru: {
greeting: (ctx) => 'привет!'
}
}
```

Использовать функцию для сообщения очень просто! Необходимо просто указать ключ с помощью `$t` или `t`:

```html
<p>{{ $t('greeting') }}</p>
```

Результат будет таким:

```html
<p>привет!</p>
```

Используется возвращаемый результат из функции для сообщения.

### Именованный формат

vue-i18n поддерживает [именованный формат](./formatting.md#именованный-формат) для строковых сообщений. vue-i18n интерполирует значения с помощью `$t` или `t` и выводит их.

Тоже самое можно сделать и с функцией для сообщения, используя **контекст сообщения**:

Пример приветствия:

```js
const messages = {
en: {
greeting: (ctx) => `hello, ${ctx.named('name')}!`
},
ru: {
greeting: (ctx) => `привет, ${ctx.named('name')}!`
}
}
```

Шаблон:

```html
<p>{{ $t('greeting', { name: 'DIO' }) }}</p>
```

Результат:

```html
<p>привет, DIO!</p>
```

Контекст сообщения предоставляет доступ к функции `named`. Необходимо указать ключ, указываемым для `$t` или `t`, который разрешится требуемым значением.

### Формат списков

Использование формата списков аналогично именованному формату, описанному выше.

vue-i18n поддерживает [формат списков](./formatting.md#формат-списков) для строковых сообщений. vue-i18n интерполирует значения с помощью `$t` или `t` и выводит их.

Тоже самое можно сделать и с функцией для сообщения, используя **контекст сообщения**:

Пример приветствия:

```js
const messages = {
en: {
greeting: (ctx) => `hello, ${ctx.list(0)}!`
},
ru: {
greeting: (ctx) => `привет, ${ctx.list(0)}!`
}
}
```

Шаблон:

```html
<p>{{ $t('greeting', ['DIO']) }}</p>
```

Результат:

```html
<p>привет, DIO!</p>
```

Контекст сообщения предоставляет доступ к функции `list`. Необходимо указать ключ, указываемым для `$t` или `t`, который разрешится требуемым значением.

### Ограничение

В функции для сообщения следующие возможности, которые доступны в строковом варианте, не будут доступны через контекст сообщения:

- Связанные сообщения локализации
- Плюрализация
11 changes: 11 additions & 0 deletions vuepress/ru/guide/tooling.md
Expand Up @@ -59,3 +59,14 @@ i18n Ally предоставляет потрясающий DX для разра
[i18nPlugin](https://github.com/nyavro/i18nPlugin) — плагин Intellij idea для поддержки i18next ([Jetbrains plugin page](https://plugins.jetbrains.com/plugin/12981-i18n-support)).

Плагин для i18n typescript/javascript/PHP. Поддерживает vue-i18n. Для включения поддержки vue-i18n в настройках -> Tools -> i18n Plugin configuration выберите "Vue-i18n". Необходимо установить каталоги с файлами локализаций (по умолчанию locales).

### vue-i18n-extract

[vue-i18n-extract](https://github.com/pixari/vue-i18n-extract) выполняет статический анализ проекта Vue.js на основе vue-i18n и сообщает следующую информацию:

- список всех **неиспользуемых ключей vue-i18n** (записи, найденные в файлах перевода, но не использованные в проекте)
- список всех **пропущенных ключей** (записи, найденные в проекте, но отсутствующие в файлах перевода)

Имеется возможность отобразить результат в консоли или записать его в файл json.

Пропущенные ключи также могут быть автоматически добавлены в заданные файлы переводов.

0 comments on commit 6ace404

Please sign in to comment.