Skip to content

Commit

Permalink
Russian translation updates (vuejs#572)
Browse files Browse the repository at this point in the history
* russian docs translation started

* docs/ru/actions.md translated

* docs/ru/api.md translated

* docs/ru/forms.md translated

* api translation fix

* docs/ru/getters.md translated

* docs/ru/getting-started.md translated

* docs/ru/hot-reload.md translated

* docs/ru/installation.md translated

* docs/ru/intro.md translated

* docs/ru/modules.md translated

* docs/ru/README.md translated

* docs/ru/strict.md translated

* docs/ru/structure.md translated

* docs/ru/SUMMARY.md translated (O_O for some reason it happens to be exactly the same as README.md)

* docs/ru/mutations.md translated

* docs/ru/plugins.md translated

* docs/ru/state.md translated

* docs/ru/testing.md translated

* docs/ru/actions.md styling/proof-reading

* docs/ru/api.md styling/proof-reading

* docs/ru/forms.md styling/proof-reading

* docs/ru/getters.md styling/proof-reading

* docs/ru/getting-started.md styling/proof-reading

* docs/ru/hot-reload.md styling/proof-reading

* docs/ru/installation.md styling/proof-reading

* docs/ru/intro.md styling/proof-reading

* docs/ru/modules.md styling/proof-reading

* docs/ru/mutations.md styling/proof-reading

* docs/ru/plugins.md styling/proof-reading

* docs/ru/state.md styling/proof-reading

* docs/ru/strict.md styling/proof-reading

* docs/ru/structure.md styling/proof-reading

* docs/ru/testing.md styling/proof-reading

* docs/ru/intro.md typo fix

* Copyediting RU documentation

* Fix typo

* Change wording around alternative approaches to data handling

* Fix typo

* Fix typo

* Better wording for linters

* Fix header and change wording

* fix typo

* typos reported by @ipelekhan are fixed

* Russian docs translation update

* Fix typo

* Sentence rephrasing and fix punctuation

* Переключил на ветку translation-ru
  • Loading branch information
gbezyuk authored and kazupon committed Jan 8, 2017
1 parent 6128363 commit d3d7604
Show file tree
Hide file tree
Showing 8 changed files with 150 additions and 38 deletions.
6 changes: 4 additions & 2 deletions docs/ru/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# Vuex

<!--email_off-->
> Внимание: это — документация для версии [email protected].
<!--/email_off-->
- [Ищете документацию для 1.0?](https://github.com/vuejs/vuex/tree/1.0/docs)
- [Release Notes](https://github.com/vuejs/vuex/releases)
- [Нужна документация для 1.0?](https://github.com/vuejs/vuex/tree/1.0/docs)
- [История изменений](https://github.com/vuejs/vuex/releases)
- [Установка](installation.md)
- [Что такое Vuex?](intro.md)
- [Начало работы](getting-started.md)
Expand Down
19 changes: 14 additions & 5 deletions docs/ru/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ const store = new Vuex.Store({ ...options })
{
key: {
state,
mutations,
namespaced?,
mutations?,
actions?,
getters?,
modules?
Expand Down Expand Up @@ -160,18 +161,26 @@ const store = new Vuex.Store({ ...options })

### Вспомогательные функции для связывания с компонентами

- **`mapState(map: Array<string> | Object): Object`**
- **`mapState(namespace?: string, map: Array<string> | Object): Object`**

Создаёт проксирующие вычисляемые свойства компонента, возвращающие поддерево state'а хранилища Vuex [Подробнее](state.md#the-mapstate-helper)
- **`mapGetters(map: Array<string> | Object): Object`**
Первый аргумент опционально может быть строкой с указанным namespace. [Подробнее](modules.md#binding-helpers-with-namespace)
- **`mapGetters(namespace?: string, map: Array<string> | Object): Object`**
Создаёт проксирующие вычисляемые свойства компонента, проксирующие доступ к геттерам. [Подробнее](getters.md#the-mapgetters-helper)
- **`mapActions(map: Array<string> | Object): Object`**
Первый аргумент опционально может быть строкой с указанным namespace. [Подробнее](modules.md#binding-helpers-with-namespace)
- **`mapActions(namespace?: string, map: Array<string> | Object): Object`**
Создаёт проксирующие методы компонента, позволяющие диспетчеризировать действия. [Подробнее](actions.md#dispatching-actions-in-components)
- **`mapMutations(map: Array<string> | Object): Object`**
Первый аргумент опционально может быть строкой с указанным namespace. [Подробнее](modules.md#binding-helpers-with-namespace)
- **`mapMutations(namespace?: string, map: Array<string> | Object): Object`**
Создаёт проксирующие методы компонента, позволяющие инициировать мутации. [Подробнее](mutations.md#commiting-mutations-in-components)
Первый аргумент опционально может быть строкой с указанным namespace. [Подробнее](modules.md#binding-helpers-with-namespace)
6 changes: 3 additions & 3 deletions docs/ru/book.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"gitbook": "2.x.x",
"plugins": ["edit-link", "prism", "-highlight", "github"],
"gitbook": ">3.0.0",
"plugins": ["edit-link", "prism", "theme-vuejs@git+https://github.com/pearofducks/gitbook-plugin-theme-vuejs.git", "-fontsettings", "-highlight", "github"],
"pluginsConfig": {
"edit-link": {
"base": "https://github.com/vuejs/vuex/tree/dev/docs",
"label": "Редактировать Эту Страницу"
"label": "Редактировать эту страницу"
},
"github": {
"url": "https://github.com/vuejs/vuex/"
Expand Down
2 changes: 1 addition & 1 deletion docs/ru/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ store.commit('increment')
console.log(store.state.count) // -> 1
```

Ещё раз заметим: мы вызываем мутацию вместо того чтобы напрямую изменить `store.state.count` потому что мы хотим явным образом отслеживать изменения. Это простое архитектурное соглашение делает наши намерения более очевидными и упрощает понимание для читателя кода того, как измененяется состояние приложения. Кроме того, этот подход позволяет реализовать инструменты для логирования каждой мутации, создания моментальных слепков состояния приложения и даже применения "машины времени" при отладке.
Ещё раз заметим: мы вызываем мутацию, вместо того чтобы напрямую изменить `store.state.count`, потому что мы хотим явным образом отслеживать изменения. Это простое архитектурное соглашение делает намерения более очевидными и упрощает понимание изменений состояния приложения при чтении кода. Кроме того, этот подход позволяет реализовать инструменты для логирования каждой мутации, создания моментальных слепков состояния приложения и даже применения "машины времени" при отладке.

Поскольку хранилище реактивно, для использования его состояния в компонентах достаточно просто создать вычисляемые свойства. Изменения состояния можно вызывать, инициализируя мутации в методах компонентов.

Expand Down
Binary file modified docs/ru/images/flow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/ru/images/vuex.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
153 changes: 127 additions & 26 deletions docs/ru/modules.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,42 +81,143 @@ const moduleA = {

### Пространства имён

Обратите внимание, что действия, мутации и геттеры, определённые внутри модулей, тем не менее регистрируются в **глобальном пространстве имён** — это позволяет нескольким модулям реагировать на один и тот же тип мутации или действия. Избежать конфликта пространства имён вы можете, указывая для них префикс или суффикс. При создании пригодных для повторного использования модулей Vuex, пожалуй, так поступать даже нужно — кто знает, в каком окружении их будут использовать? Например, предположим что мы создаём модуль `todos`:
По умолчанию действия, мутации и геттеры внутри модулей регистрируются в **глобальном пространстве имён** — это позволяет нескольким модулям реагировать на тот же тип мутаций/действий.

Если вы хотите сделать модули более самодостаточными и готовыми для переиспользования, вы можете создать его с собственным пространством имён, указав опцию `namespaced: true`. Когда модуль будет зарегистрирован, все его геттеры, действия и мутации будут автоматически связаны с этим пространством имён, основываясь на пути по которому зарегистрирован модуль. Например:

``` js
// types.js
const store = new Vuex.Store({
modules: {
account: {
namespaced: true,

// содержимое модуля
state: { ... }, // состояние модуля автоматически вложено и не зависит от опции пространства имён
getters: {
isAdmin () { ... } // -> getters['account/isAdmin']
},
actions: {
login () { ... } // -> dispatch('account/login')
},
mutations: {
login () { ... } // -> commit('account/login')
},

// вложенные модули
modules: {
// наследует пространство имён из родительского модуля
myPage: {
state: { ... },
getters: {
profile () { ... } // -> getters['account/profile']
}
},

// большая вложенность с собственным пространством имён
posts: {
namespaced: true,

state: { ... },
getters: {
popular () { ... } // -> getters['account/posts/popular']
}
}
}
}
}
})
```

Геттеры и действия с собственным пространством имён будут получать свои локальные `getters`, `dispatch` и `commit`. Другими словами, вы можете использовать содержимое модуля без написания префиксов в том же модуле. Переключения между пространствами имён не влияет на код внутри модуля.

// определим названия геттеров, действий и мутаций как константы
// используя название модуля (`todos`) в качестве префикса
export const DONE_COUNT = 'todos/DONE_COUNT'
export const FETCH_ALL = 'todos/FETCH_ALL'
export const TOGGLE_DONE = 'todos/TOGGLE_DONE'
#### Доступ к глобальному содержимому в модулях с своим пространством имён

Если вы хотите использовать глобальное состояние и геттеры, `rootState` и `rootGetters` передаются 3-м и 4-м аргументами в функции геттеров, а также как свойства в объекте `context`, передаваемом в функции действий.

Для запуска действий или совершении мутаций в глобальном пространстве имён нужно добавить `{ root: true }` 3-м аргументом в `dispatch` и `commit`.

``` js
modules: {
foo: {
namespaced: true,

getters: {
// `getters` ограничены геттерами данного модуля
// вы можете использовать rootGetters из 4-го аргумента геттеров
someGetter (state, getters, rootState, rootGetters) {
getters.someOtherGetter // -> 'foo/someOtherGetter'
rootGetters.someOtherGetter // -> 'someOtherGetter'
},
someOtherGetter: state => { ... }
},

actions: {
// dispatch и commit также ограничены данным модулем
// они принимают опцию `root` для вызова в глобальном пространстве имён
someAction ({ dispatch, commit, getters, rootGetters }) {
getters.someGetter // -> 'foo/someGetter'
rootGetters.someGetter // -> 'someGetter'

dispatch('someOtherAction') // -> 'foo/someOtherAction'
dispatch('someOtherAction', null, { root: true }) // -> 'someOtherAction'

commit('someMutation') // -> 'foo/someMutation'
commit('someMutation', null, { root: true }) // -> 'someMutation'
},
someOtherAction (ctx, payload) { ... }
}
}
}
```

#### Подключение с помощью вспомогательных функций к пространству имён

Подключение модуля со своим пространством имён к компонентам с помощью вспомогательных функций `mapState`, `mapGetters`, `mapActions` и `mapMutations` это может выглядеть подобным образом:

``` js
// modules/todos.js
import * as types from '../types'
computed: {
...mapState({
a: state => state.some.nested.module.a,
b: state => state.some.nested.module.b
})
},
methods: {
...mapActions([
'some/nested/module/foo',
'some/nested/module/bar'
])
}
```

// теперь используем определённые выше константы
const todosModule = {
state: { todos: [] },
В таких случаях вы можете передать строку с пространством имён в качестве первого аргумента к вспомогательным функциям, тогда все привязки будут выполнены в контексте этого модуля. Пример выше можно упростить до:

getters: {
[types.DONE_COUNT] (state) {
// ...
}
},
``` js
computed: {
...mapState('some/nested/module', {
a: state => state.a,
b: state => state.b
})
},
methods: {
...mapActions('some/nested/module', [
'foo',
'bar'
])
}
```

actions: {
[types.FETCH_ALL] (context, payload) {
// ...
}
},
#### Уточнение для разработчиков плагинов

mutations: {
[types.TOGGLE_DONE] (state, payload) {
// ...
}
Вас может обеспокоить непредсказуемость пространства имён для ваших модулей, когда вы создаёте [плагин](plugins.md) с собственными модулями и возможностью пользователям добавлять их в хранилище Vuex. Ваши модули будут также помещены в пространство имён, если пользователи плагина добавляют ваши модули в модуль со своим пространством имён. Чтобы приспособиться к этой ситуации, вам может потребоваться получить значение пространства имён через настройки плагина:

``` js
// получение значения пространства имён через options
// и возвращение функции плагина Vuex
export function createPlugin (options = {}) {
return function (store) {
// добавление пространства имён к модулям плагина
const namespace = options.namespace || ''
store.dispatch(namespace + 'pluginAction')
}
}
```
Expand Down
2 changes: 1 addition & 1 deletion docs/ru/structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@
   └── products.js # модуль товаров
```

Для справки можено использовать [Пример корзины покупок](https://github.com/vuejs/vuex/tree/dev/examples/shopping-cart).
Для справки можно использовать [Пример корзины покупок](https://github.com/vuejs/vuex/tree/dev/examples/shopping-cart).

0 comments on commit d3d7604

Please sign in to comment.