Русификатор

**Русификация**[1] — процесс изменения языка интерфейса приложения, в данном случае: игры *Minecraft* на русский, характеризующийся изменением или увеличением кода программы или языкового пакета.

**Русификатор** — программное средство или пакет ресурсов направленные на замену языка интерфейса на русский конечным пользователем (игроком) без лишних временных затрат и не требующий от пользователя специальных знаний в информатике и/или лингвистике.

## История

### Beta — 1.5

Для *Minecraft* первые русификаторы появились ещё для Beta-версий. Тогда русификация производилась путём непосредственного перевода `en_US.lang`

, перерисовки шрифта (область 80F-F из используемой для латинского шрифта кодовой страницы CP437) и изменения `font.txt`

. Также, начиная с 1.0, в некоторых русификаторах стали переводиться и финальные титры. Всё это затем копировалось в `minecraft.jar`

. Такой способ русификации использовался до версии 1.5.2 включительно, пока в 1.6 не было введено множество языков, пакеты ресурсов и новый способ управления шрифтами, не позволявший достаточно качественно русифицировать игру аналогичным предыдущим версиям образом.

### 1.6 и редактирование классов

В связи с появлением русского языка необходимость в русификаторе отпала, имело смысл разве что предложить свой перевод (собственный файл `ru_RU.lang`

) и перевод титров. Но пользователи хотели большой и квадратный «классический шрифт», потому что он лучше масштабируется и просто лучше заметен, так как крупнее.
И был тогда предложен вариант, который является наименее проблемным и наиболее простым в установке для версий с 1.6 по 1.8[2]. Русификация производилась путём изменения в `.jar`

-файлах некоторых классов, отвечающих за рендеринг символов.

### 1.7 — 1.8

Когда в 1.7 в достаточной степени развилась система пакетов ресурсов, был предложен ещё один подход[3] — изменение шрифтов, изменение `glyph_sizes.bin`

, отвечающего за ширину символов, и использование хитрой кодировки в файле локализации. Всё это было осуществлено в формате пакета ресурсов. Но данное решение, несмотря на отсутствие необходимости в отдельном клиенте, имело множество проблем с отрисовкой шрифта (большинство которых исправляет модификация OptiFine). Потому, несмотря на высокие трудозатраты для автора и чуть более сложный метод установки для пользователя, наиболее удобным способом русификации для 1.7 и 1.8 является корректировка классов.

### 1.9 —

В версии 1.9 была исправлена критическая ошибка, накладывавшая ограничения по ширине символов в Unicode-шрифте. Таким образом, в случае, когда автор русификатора в формате пакета ресурсов хочет добавить ещё и шрифт, ему больше не нужно перекодировать символы из кириллицы в символы, содержащиеся в CP437, и создаваемый таким образом русификатор стал полностью функционален. Впрочем, шрифты теперь удобнее устанавливать как отдельный пакет ресурсов, никак не связанный с русификатором, так как это освобождает пользователя от необходимости пользоваться сторонним переводом, если ему требуется просто альтернативный шрифт. Классический шрифт можно взять здесь.

Также на различных ресурсах можно найти и другие шрифты, например, конвертированные стандартные шрифты Windows (правда, только область 21-7E, то есть латинские основные символы). Единственный недостаток такого вида шрифта — что используемые юникодовые шрифты отображаются без тени в отличие от «стандартного» шрифта. Тень присутствует, но является практически незаметной. Это считается ошибкой MC-2488 на хранилище отчётов об ошибках Mojang AB.

Для 1.11 на данный момент нет русификаторов кроме тех, что предлагает команда KoshkBench.

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

Для 1.16.3 и более поздних версий появился перевод от KoshkBench, главным отличием которого является иной взгляд на перевод Nether Update, в том числе сохранение некоторых старых названий.

## Виды русификаторов

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

### Изменение файлов клиента

- Версии игры

С ранних Beta-версий по 1.5.2 включительно.

- Принцип русифицирования

Этот способ русификации заключался в извлечении определённых файлов из `minecraft.jar`

, их изменении и обратной упаковке в архив (также необходимо было удалить файл `META-INF`

, чтобы не происходили аварийные завершения игр при проверке контрольной суммы).

Изменению подвергались следующие файлы (указаны пути относительно корня `.jar`

-архива):

`font.txt`

— здесь указывался порядок символов в графическом файле шрифта`font/default.png`

— текстура шрифта, в более новых версиях это`assets/minecraft/textures/font/ascii.png`

`lang/en_US.lang`

— текст локализации. До выхода LWJGL 2.9.1 необходимо было преобразовывать текст из кодировки CP-1251 в CP-1250, с более поздними версиями появилась возможность оставлять в этом файле кириллицу.

Также в некоторых русификаторах изменялись:

`title/credits.txt`

— титры, были добавлены в 1.0`title/splashes.txt`

— сплэши`title/win.txt`

— текст поэмы Края, также был добавлен в 1.0

В прошедшем времени о данном способе русификации говорится не просто так: он был актуален только до версии 1.5.2 (включительно) и не работает на последующих версиях. При этом нередко можно было встретить такой русификатор опубликованным на многих ресурсах под видом русификатора для 1.6 и 1.7, так что не дайте себя обмануть — читайте инструкцию по установке.

Достоинства и недостатки данного метода перечислять нет смысла, так как это был единственный рабочий метод. Из заметных проблем можно отметить только жертвование рядом символов, так как в игре была всего одна кодовая страница и число символов не могло превышать 256. Пришлось даже пожертвовать буквой «Ё» (на самом деле, с обновлённым LWJGL можно было бы освободить 64 символа, но необходимо было поддерживать совместимость между разными версиями библиотек и русификаторов).

### Редактирование классов

- Версии игры

С 1.6 по 1.8, технически возможно и для всех более поздних.

- Принцип русифицирования

Изменяются программные классы, автор предлагает пользователю скопировать заранее скомпилированные автором классы в `minecraft.jar`

, либо сразу использовать авторский `minecraft.jar`

. Может использоваться установщик.

Есть два основных пути, по которым идут авторы таких русификаторов:

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

**Достоинства**

- Шире возможности для перевода
- Радует глаз (в случае отката к старому рендерингу)

**Недостатки**

- Не всегда возможно использование — для Forge нужен отдельный русификатор
- Возможны (хотя редки) конфликты с модификациями

- Человеческий фактор

- Так как для установки русификатора нередко используется установщик, под него может быть замаскировано вредоносное ПО. Чтобы избежать подобных угроз, используйте только русификаторы, опубликованные на крупных ресурсах, движимых сообществом, например, RuBukkit.

|
|
|


### Применение пакетов ресурсов

- Версии игры

Реализуемо начиная с 1.6, действительно удобно начиная с 1.9.

- Принцип русифицирования

Такой русификатор представляет собой пакет ресурсов, в который вложен файл локализации с авторским вариантом перевода. Он может перезаписывать `ru_RU.lang`

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

Иногда кроме перевода текста в русификатор добавляются также изменённые текстуры шрифтов. И хотя с введением официальной локализации как раз изменение шрифта стало главной причиной, по которой игроки всё ещё пользуются русификаторами, до версии 1.9 в пакете ресурсов изменить шрифт было крайне проблематично, так как алгоритм, отрисовывающий «юникодовый» шрифт, сильно искажал тот крупный пиксельный шрифт, к которому все привыкли.

**Достоинства (с 1.9)**

- Полная совместимость с модификациями и пакетами ресурсов (если в пакет не входят изменённые текстуры, например)
- Лёгкость установки
- Если не изменены текстуры шрифта: возможность установки/удаления из игры (как и с любым пакетом ресурсов)

**Недостатки (с 1.9)**

- Нельзя перевести надписи, не выведенные в файл локализации

**Недостатки (ранее)**

- Необходимость использовать OptiFine для исправления отрисовки шрифта

|
|
|