Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions INDEX.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ url: https://kotlinlang.ru
* Перевести статьи из раздела "Reference": [Grammar](https://kotlinlang.ru/docs/reference/grammar.html)
* Перевести статьи из раздела "JavaScript": [Calling JavaScript from Kotlin](https://kotlinlang.ru/docs/reference/js-interop.html) и все остальные
* Заново перевести статью [Корутины](https://kotlinlang.ru/docs/reference/coroutines.html) ввиду низкого качества перевода
* Заново перевести статью [Грамматика](https://kotlinlang.ru/docs/grammar.html) ввиду низкого качества перевода
* Перевести статьи из раздела "Tools": [OSGi](https://kotlinlang.ru/docs/reference/kotlin-osgi.html)
* Пометить <b class="keyword">ключевые слова</b> конструкцией `<b class="keyword">keyword-here</b>`

Expand Down
6 changes: 3 additions & 3 deletions all-open-plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ url: https://kotlinlang.ru/docs/all-open-plugin.html

## All-open плагин для компилятора

Классы и методы в языке Kotlin имеют модификатор `final` по умолчанию, что приносит массу неудобств при использованиие фреймворков и библиотек, таких как Spring AOP, которые требуют классы с модификатором `open`. Плагин для компилятора *all-open* адаптирует Kotlin под требования фреймворков и добавляет классам специальную аннотацию, благодаря чему их члены открты для использования без приминения модификатора `open`.
Классы и методы в языке Kotlin имеют модификатор `final` по умолчанию, что приносит массу неудобств при использовании фреймворков и библиотек, таких как Spring AOP, которые требуют классы с модификатором `open`. Плагин для компилятора *all-open* адаптирует Kotlin под требования фреймворков и добавляет классам специальную аннотацию, благодаря чему их члены открыты для использования без применения модификатора `open`.

Например, при использовании Spring, вам нужно чтобы открытыми были не все классы, а только те, которые имеют специальные аннотации, такие как `@Configuration` или `@Service`. *All-open* позволяет указывать эти аннотации.

Expand Down Expand Up @@ -39,7 +39,7 @@ plugins {
}
```

Затем укажите список аннтоаций, для которых нужно открыть классы:
Затем укажите список аннотаций, для которых нужно открыть классы:

```groovy
allOpen {
Expand Down Expand Up @@ -270,7 +270,7 @@ plugins {

### Использование в CLI

Также как и в случае с all-open, добавьте JAR-файл плагина в classpath плагина компилятора и укажите нужные аннотации или пресеты:
Так же как и в случае с all-open, добавьте JAR-файл плагина в classpath плагина компилятора и укажите нужные аннотации или пресеты:

```bash
-Xplugin=$KOTLIN_HOME/lib/noarg-compiler-plugin.jar
Expand Down
2 changes: 1 addition & 1 deletion android-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ url: https://kotlinlang.ru/docs/android-overview.html
# Kotlin для Android

<!-- Android mobile development has been Kotlin-first since Google I/O in 2019. -->
Kotlin был объявленны приоритетным языком программирования для Android-разработки на Google I/O в 2019.
Kotlin был объявлен приоритетным языком программирования для Android-разработки на Google I/O в 2019.

<!-- Using Kotlin for Android development, you can benefit from: -->
Используя Kotlin для Android-разработки, вы получаете:
Expand Down
2 changes: 1 addition & 1 deletion annotations.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ annotation class Deprecated(
automatically convert it to a Java class, so that the Java code can access the annotations and arguments
normally. -->
Если вам нужно определить класс как аргумент аннотации, используйте Kotlin класс
([KClass](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-class/index.html)). Компилятор Kotin
([KClass](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-class/index.html)). Компилятор Kotlin
автоматически сконвертирует его в Java класс, так что код на Java сможет видеть аннотации и их аргументы.

```kotlin
Expand Down
4 changes: 2 additions & 2 deletions ant.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ recommended to use *withKotlin* task: -->
```

<!-- ## Targeting JavaScript with single source folder -->
## Использование в JavaScript с с одной исходной папкой
## Использование в JavaScript с одной исходной папкой

``` xml
<project name="Ant Task Test" default="build">
Expand Down Expand Up @@ -189,7 +189,7 @@ result of translation: -->
<!-- To pass custom raw compiler arguments, you can use `<compilerarg>` elements with either `value` or `line` attributes.
This can be done within the `<kotlinc>`, `<kotlin2js>`, and `<withKotlin>` task elements, as follows: -->
Для выборочной передачи исходных аргументов компилятора используются элементы `<compilerarg>` с атрибутами `value` или `line`.
Это может быть сделано в рамках элементов задач `<kotlinc>`, `<kotlin2js>` и `<withKotlin>` следующим образом :
Это может быть сделано в рамках элементов задач `<kotlinc>`, `<kotlin2js>` и `<withKotlin>` следующим образом:

``` xml
<kotlinc src="${test.data}/hello.kt" output="${temp}/hello.jar">
Expand Down
12 changes: 6 additions & 6 deletions async-programming.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ url: https://kotlinlang.ru/docs/async-programming.html
<!-- For decades, as developers we are confronted with a problem to solve - how to prevent our applications from blocking. Whether
we're developing desktop, mobile, or even server-side applications, we want to avoid having the user wait or what's worse cause
bottlenecks that would prevent an application from scaling. -->
На протяжении десятилетий мы, разработчики, сталкиваемся с проблемой, которую необходимо решить, - как предотвратить
блокировку наших приложений. Независимо от того, разрабатываем ли мы десткопные, мобильные или даже серверные
На протяжении десятилетий мы, разработчики, сталкиваемся с проблемой, которую необходимо решить, как предотвратить
блокировку наших приложений. Независимо от того, разрабатываем ли мы десктопные, мобильные или даже серверные
приложения, мы хотим избежать того, чтобы пользователь ждал или, что еще хуже, создавал узкие места (ориг.:
*bottlenecks*), которые мешали бы масштабированию приложения.

Expand Down Expand Up @@ -82,7 +82,7 @@ allow us to avoid the UI from blocking. This is a very common technique, but has
## Коллбэки

<!-- With callbacks, the idea is to pass one function as a parameter to another function, and have this one invoked once the process has completed. -->
Идея коллбэков (обрытных вызовов, ориг.: callbacks) состоит в том, чтобы передать одну функцию в качестве параметра
Идея коллбэков (обратных вызовов, ориг.: callbacks) состоит в том, чтобы передать одну функцию в качестве параметра
другой функции и вызвать ее после завершения процесса.

```kotlin
Expand All @@ -101,7 +101,7 @@ fun preparePostAsync(callback: (Token) -> Unit) {
```

<!-- This in principle feels like a much more elegant solution, but once again has several issues: -->
В принципе, это выглядит более элегантным решением, но опять же имеет несколько проблем:
В принципе это выглядит более элегантным решением, но опять же имеет несколько проблем:

<!-- * Difficulty of nested callbacks. Usually a function that is used as a callback, often ends up needing its own callback. This leads to a series of nested callbacks which
lead to incomprehensible code. The pattern is often referred to as the titled christmas tree (braces represent branches of the tree).
Expand Down Expand Up @@ -154,7 +154,7 @@ such as loops, exception handling, etc. usually are no longer valid in this mode
* Specific return type. The return type moves away from the actual data that we need and instead returns a new type `Promise` which has to be introspected.
* Error handling can be complicated. The propagation and chaining of errors aren't always straightforward. -->

* Другая модель программирования. Подобно коллбэкам, модель программирования отходит от императивного подхода сверхувниз к композиционной модели с цепными вызовами. Традиционные программные структуры, такие как циклы, обработка исключений и т.д., обычно не применимы в этой модели;
* Другая модель программирования. Подобно коллбэкам, модель программирования отходит от императивного подхода сверху вниз к композиционной модели с цепными вызовами. Традиционные программные структуры, такие как циклы, обработка исключений и т.д., обычно не применимы в этой модели;
* Различные API. Обычно возникает необходимость изучить совершенно новый API, такие как `thenCompose` или `thenAccept`, которые также могут варьироваться в зависимости от платформы;
* Определенный возвращаемый тип. Возвращаемый тип отклоняется от фактических данных, которые нам нужны, и вместо этого возвращает новый тип `Promise`, который необходимо проанализировать;
* Обработка ошибок может быть сложной. Распространение и цепочка ошибок не всегда просты.
Expand All @@ -175,7 +175,7 @@ it really didn't reach mainstream adoption until Netflix ported it over to Java,
the [Observer Pattern](https://en.wikipedia.org/wiki/Observer_pattern) with a series of extensions which allow us to operate on the data. -->
Идея Rx состоит в том, чтобы перейти к так называемым `observable streams` (наблюдаемым потокам), благодаря которым
теперь мы думаем о данных как о потоках (бесконечных объемах данных), и эти потоки можно наблюдать. С практической точки
зрения, Rx - это просто [шаблон наблюдателя](https://en.wikipedia.org/wiki/Observer_pattern) с рядом расширений, которые
зрения, Rx - это просто [шаблон наблюдателя](https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)) с рядом расширений, которые
позволяют нам оперировать данными.

<!-- In approach it's quite similar to Futures, but one can think of a Future as returning a discrete element, whereas Rx returns a stream. However, similar to the previous, it also introduces
Expand Down
5 changes: 2 additions & 3 deletions basic-types.md
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,6 @@ println(1 + 2)
println(2_500_000_000L - 1L)
println(3.14 * 2.71)
println(10.0 / 3)
}
```

<!-- You can also override these operators for custom classes. See [Operator overloading](operator-overloading.md) for details. -->
Expand All @@ -280,7 +279,7 @@ println(10.0 / 3)
#### Деление целых чисел

<!-- Division between integers numbers always returns an integer number. Any fractional part is discarded. -->
Деление целых чисел всегда возвращат целое число. Любая дробная часть отбрасывается.
Деление целых чисел всегда возвращает целое число. Любая дробная часть отбрасывается.

```kotlin
val x = 5 / 2
Expand Down Expand Up @@ -578,7 +577,7 @@ println(s + "def") // abc1def
```

<!-- Note that in most cases using [string templates](#string-templates) or raw strings is preferable to string concatenation. -->
Обратите внимание, что в большинстве случаев использование [cтроковых шаблонов](#string-templates)
Обратите внимание, что в большинстве случаев использование [строковых шаблонов](#string-templates)
или обычных строк предпочтительнее объединения строк.

<a name="string-literals"></a>
Expand Down
3 changes: 1 addition & 2 deletions cancellation-and-timeouts.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ println("main: I'm tired of waiting!")
job.cancel() // cancels the job
job.join() // waits for job's completion
println("main: Now I can quit.")
}
```

<!-- > You can get the full code [here](../../kotlinx-coroutines-core/jvm/test/guide/example-cancel-01.kt). -->
Expand Down Expand Up @@ -243,7 +242,7 @@ delay(1300L) // delay a bit
println("main: I'm tired of waiting!")
job.cancelAndJoin() // cancels the job and waits for its completion
println("main: Now I can quit.")
}

```

<!-- > You can get the full code [here](../../kotlinx-coroutines-core/jvm/test/guide/example-cancel-05.kt). -->
Expand Down
2 changes: 1 addition & 1 deletion classes.md
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ abstract class WildShape : Polygon() {

<!-- If you need to write a function that can be called without having a class instance but that needs access to the internals
of a class (such as a factory method), you can write it as a member of an [object declaration](object-declarations.md) inside that class. -->
Если вам нужно написать функцию, которая может быть использована без создания экземпляра класса, которая имела бы доступ к данным внутри этого класса
Если вам нужно написать функцию, которая может быть использована без создания экземпляра класса, имеющую доступ к данным внутри этого класса
(к примеру, фабричный метод), вы можете написать её как член [объявления объекта](object-declarations.html) внутри этого класса.

<!-- Even more specifically, if you declare a [companion object](object-declarations.md#companion-objects) inside your class,
Expand Down
2 changes: 1 addition & 1 deletion coding-conventions.md
Original file line number Diff line number Diff line change
Expand Up @@ -1317,7 +1317,7 @@ when (x) {
```

<!-- Prefer using `when` if there are three or more options. -->
Предпочтительнее использовать `when`, если есть три и более вариантов.
Предпочтительнее использовать `when`, если есть три и более варианта.

<a name="nullable-boolean-values-in-conditions"></a>

Expand Down
2 changes: 1 addition & 1 deletion collection-operations.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ For performing operations with destinations, there are separate functions with t
[`filterTo()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/filter-to.html) instead of [`filter()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/filter.html)
or [`associateTo()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/associate-to.html) instead of [`associate()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/associate.html).
These functions take the destination collection as an additional parameter. -->
Некоторые функции в качестве параметра принимают целевой объект - _destination_. Он представляет из себя изменяемую коллекцию, в которую функция добавляет результаты своих вычислений, вместо того, чтобы самостоятельно создавать новый объект.
Некоторые функции в качестве параметра принимают целевой объект - _destination_. Он представляет собой изменяемую коллекцию, в которую функция добавляет результаты своих вычислений, вместо того, чтобы самостоятельно создавать новый объект.
Названия таких функций можно отличить по постфиксу `To`, например,
[`filterTo()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/filter-to.html) вместо
[`filter()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/filter.html) или
Expand Down
2 changes: 1 addition & 1 deletion collection-ordering.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ fun main() {
function from the standard library. `compareBy()` takes a lambda function that produces a `Comparable` value from an instance
and defines the custom order as the natural order of the produced values. -->
Существует более упрощённый вариант использования `Comparator` - функция
[`compareBy()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.comparisons/compare-by.html) из стандартной библиотеки. Она принимает лямбда-функцию, которая из объекта создаёт `Comparable` значение и задаёт пользовательский порядок, который по факту представляет из себя естественный порядок созданных `Comparable` значений.
[`compareBy()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.comparisons/compare-by.html) из стандартной библиотеки. Она принимает лямбда-функцию, которая из объекта создаёт `Comparable` значение и задаёт пользовательский порядок, который по факту представляет собой естественный порядок созданных `Comparable` значений.


<!-- With `compareBy()`, the length comparator from the example above looks like this: -->
Expand Down
Loading