# Шаблон таблицы локализации

Таблица строк, с которой могут работать переводчики: одна строка на ключ, с контекстом, ограничением длины, английским исходным текстом и четырьмя переводами, а также глоссарий и руководство по стилю для каждого языка. Скачайте её архивом .zip: таблица хранится в файле CSV (UTF-8, через запятую), остальное написано в Markdown, и весь набор импортируется в Nodary, где CSV становится листом, который можно использовать как таблицу перевода.

Бесплатно, без учётной записи и без e-mail. Пользуйтесь, меняйте, делитесь.

[Скачать шаблон (.zip)](https://nodary.ai/downloads/shablon-tablicy-lokalizacii.zip)

## Прочитайте каждый файл до скачивания

Обзор объясняет столбцы, правила именования ключей, плейсхолдеры и статусы перевода. В таблице 13 примеров строк из Saltmarrow, демонстрационной игры, которую этот сайт использует везде; две ячейки ошибочны намеренно, чтобы показать, что находят проверки.

- Таблица локализации: Как устроена таблица: столбцы, именование ключей, плейсхолдеры, статусы перевода и файлы рядом.
- Строки: Таблица: по строке на фрагмент текста, его контекст и ограничение длины, английский исходник и четыре перевода.
- Глоссарий: Слова, которые везде переводятся одним способом, и имена, которые не переводятся никогда.
- Руководство по стилю: Как игра говорит на каждом языке: её голос, обращение к игроку, типографика, длина и множественное число.

### Таблица локализации

_Как пользоваться шаблоном: строки курсивом содержат подсказки. Замените их своими словами, затем удалите. Значения в квадратных скобках заполняете вы. Сама таблица находится в файле CSV рядом с этой страницей._

#### Файлы

- [Строки](https://nodary.ai/ru/templates/localization-string-table#doc-strings): сама таблица, по строке на фрагмент текста и по столбцу на язык
- [Глоссарий](https://nodary.ai/ru/templates/localization-string-table#doc-glossary): слова, которые везде переводятся одинаково, и имена, которые не переводятся никогда
- [Руководство по стилю](https://nodary.ai/ru/templates/localization-string-table#doc-style): как игра говорит на каждом языке

#### Столбцы

| Столбец | Что в нём |
| --- | --- |
| key | Уникальное имя строки, которое игроки никогда не видят |
| context | Где появляется текст и кто его говорит: то, о чём переводчик не догадается |
| max_length | Наибольшее число символов, которое текст может занять на экране |
| en | Исходный текст |
| fr, de, es, pl | По столбцу на язык, названному его кодом |

#### Именование ключей

_Называйте ключи по месту, где живёт текст, от общего к частному, чтобы связанные строки сортировались рядом._

- Схема: [экран].[элемент].[деталь], например menu.play или hud.tide.warning
- Строчные буквы, точки между частями, без пробелов
- Никогда не используйте ключ повторно для другого текста: добавьте новый

#### Плейсхолдеры и разметка

_Значения, которые подставляет игра, стоят в фигурных скобках, например {count}; каждый перевод сохраняет каждый плейсхолдер исходника. Теги разметки, например тег жирного шрифта в item.crystal.desc, остаются вокруг слов, которые они выделяют._

#### Статусы перевода

```mermaid
flowchart LR
  n0["Нет перевода"]
  n1["Черновик"]
  n2["Проверен"]
  n3["Готов"]
  n4["Устарел"]
  n0 --> n1
  n1 --> n2
  n2 --> n3
  n3 --> n4
  n4 --> n1
```
_Статус перевода: изменённый исходник делает его устаревшим, и перевод проверяют снова_

_Пример (Saltmarrow, демонстрационная игра): Две ячейки примера ошибочны намеренно. menu.settings по-немецки, Einstellungen, занимает 13 символов там, где кнопка вмещает 10, поэтому проверка длины отмечает её; у приветствия Архивариуса ещё нет польского перевода, поэтому оно считается отсутствующим._

_Шаблон можно свободно использовать, менять и распространять. Он сделан в_ [Nodary](https://nodary.ai/ru)_, где эти файлы импортируются как карта связанных документов, а CSV как лист._

### Строки

| key | context | max_length | en | fr | de | es | pl |
| --- | --- | --- | --- | --- | --- | --- | --- |
| menu.play | Кнопка главного меню | 12 | Play | Jouer | Spielen | Jugar | Graj |
| menu.settings | Кнопка главного меню; кнопка вмещает 10 символов | 10 | Settings | Paramètres | Einstellungen | Ajustes | Ustawienia |
| menu.quit | Кнопка главного меню | 12 | Quit | Quitter | Beenden | Salir | Wyjdź |
| hud.tide.warning | Показывается на HUD за две минуты до смены прилива; {minutes} это число | 40 | The tide turns in {minutes} min | La marée tourne dans {minutes} min | Gezeitenwechsel in {minutes} Min. | La marea cambia en {minutes} min | Zmiana pływu za {minutes} min |
| hud.salt.count | Счётчик на HUD; {count} это число | 20 | Salt: {count} | Sel : {count} | Salz: {count} | Sal: {count} | Sól: {count} |
| dialogue.archivist.greet | Утонувший Архивариус, первая встреча. Спокоен и официален: обращается к игроку на «вы» | 120 | You came down with the tide. Most who do, stay. | Vous êtes descendu avec la marée. La plupart de ceux qui le font restent. | Sie sind mit der Flut herabgestiegen. Die meisten, die das tun, bleiben. | Ha bajado con la marea. La mayoría de quienes lo hacen se quedan. |  |
| item.crystal.name | Название предмета в инвентаре и в магазине | 24 | Memory crystal | Cristal de mémoire | Erinnerungskristall | Cristal de memoria | Kryształ pamięci |
| item.crystal.desc | Описание предмета; <b> отмечает слово для выделения | 140 | Holds one <b>memory</b> of the drowned city. Sells well in the village. | Contient un <b>souvenir</b> de la cité engloutie. Se vend bien au village. | Enthält eine <b>Erinnerung</b> an die versunkene Stadt. Verkauft sich gut im Dorf. | Guarda un <b>recuerdo</b> de la ciudad sumergida. Se vende bien en el pueblo. | Zawiera jedno <b>wspomnienie</b> zatopionego miasta. Dobrze się sprzedaje w wiosce. |
| quest.horn.title | Название задания в журнале | 32 | Before the horn | Avant la corne | Vor dem Horn | Antes del cuerno | Zanim zabrzmi róg |
| quest.horn.goal | Цель задания в журнале; {count} это число | 60 | Crystals to bring up before the horn: {count} | Cristaux à remonter avant la corne : {count} | Kristalle, die vor dem Horn nach oben müssen: {count} | Cristales que subir antes del cuerno: {count} | Kryształy do wyniesienia, zanim zabrzmi róg: {count} |
| ui.save.done | Сообщение после сохранения, показывается две секунды | 40 | Game saved | Partie sauvegardée | Spiel gespeichert | Partida guardada | Gra zapisana |
| ui.tide.low | Подпись индикатора прилива | 16 | Low tide | Marée basse | Ebbe | Marea baja | Odpływ |
| ui.tide.high | Подпись индикатора прилива | 16 | High tide | Marée haute | Flut | Marea alta | Przypływ |

### Глоссарий

**Ответственный:** [имя] · **Статус:** черновик · **Последняя проверка:** [дата]

_Добавляйте термин, когда переводчик впервые спрашивает о нём. Слово, переведённое двумя способами, сбивает игроков с толку и удваивает вопросы в поддержку._

#### Термины

| Термин (en) | fr | de | es | pl | Примечания |
| --- | --- | --- | --- | --- | --- |
| tide | marée | Gezeiten | marea | pływ | Уровень воды, который управляет всеми системами |
| salt | sel | Salz | sal | sól | Основной ресурс |
| memory crystal | cristal de mémoire | Erinnerungskristall | cristal de memoria | kryształ pamięci | Всегда полное название, в магазине никогда не просто «кристалл» |
| horn | corne | Horn | cuerno | róg | Сигнал за две минуты до смены прилива |
| [термин] | [...] | [...] | [...] | [...] | [...] |

#### Не переводить никогда

- Saltmarrow, название игры
- [Имена персонажей и названия мест, которые остаются как есть]
- [Названия платформ и брендов]

См. также: [Таблица локализации](https://nodary.ai/ru/templates/localization-string-table#doc-overview) · [Строки](https://nodary.ai/ru/templates/localization-string-table#doc-strings) · [Руководство по стилю](https://nodary.ai/ru/templates/localization-string-table#doc-style)

### Руководство по стилю

**Ответственный:** [имя] · **Статус:** черновик · **Последняя проверка:** [дата]

#### Голос

_Три слова о голосе игры, и как она не звучит никогда._

- Голос: [...]
- Никогда: [...]

_Пример (Saltmarrow, демонстрационная игра): Спокойный и немного старомодный, как у хранителя архива. Короткие фразы. Никакого современного сленга._

#### Язык за языком

| Язык | Обращение к игроку | Типографика | Примечания |
| --- | --- | --- | --- |
| Французский (fr) | [tu или vous] | Неразрывный пробел перед : ; ! ? и внутри « » | [...] |
| Немецкий (de) | [du или Sie] | „Кавычки“, существительные с заглавной буквы | Часто длиннее английского: сначала проверьте max_length |
| Испанский (es) | [tú или usted] | Открывающие ¿ и ¡ | [...] |
| Польский (pl) | [ty или Pan и Pani] | „Кавычки”, три формы множественного числа | Слова вокруг имени игрока меняются по роду |
| [Язык] | [...] | [...] | [...] |

#### Длина

_Оставляйте запас: переводы с английского часто длиннее, в некоторых языках до трети. Задавайте max_length по месту на экране, а не по английскому тексту._

#### Множественное число и числа

_Языки считают по-разному: в польском три формы множественного числа, в английском две. Ставьте число после метки (Соль: {count}) или используйте систему множественного числа движка, а числа и даты форматируйте для каждого языка._

См. также: [Таблица локализации](https://nodary.ai/ru/templates/localization-string-table#doc-overview) · [Глоссарий](https://nodary.ai/ru/templates/localization-string-table#doc-glossary) · [Строки](https://nodary.ai/ru/templates/localization-string-table#doc-strings)

## Как им пользоваться

### Замените строки-примеры

Сохраните столбцы и правила именования ключей и вставьте свои строки. Дайте каждой строке контекст и ограничение длины до того, как она уйдёт переводчику.

### Начните глоссарий рано

Добавляйте термин, когда переводчик впервые спрашивает о нём, с переводом на каждый язык. Слово, переведённое двумя способами, сбивает игроков с толку и удваивает вопросы в поддержку.

### Договоритесь о стиле каждого языка

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

### Заморозьте исходник перед отправкой

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

## Импортируйте его в Nodary и используйте как таблицу перевода

Nodary представляет собой рабочее пространство, созданное для ИИ, где документы команды связаны, а не копятся в кучу. Импортируйте .zip, и CSV появится как лист под обзором, рядом с глоссарием и руководством по стилю. На листе «Таблица перевода» читает роли из заголовков (key, context, max_length и по столбцу на язык), затем проверяет длину и плейсхолдеры каждого перевода, присваивает ему статус, помечает перевод устаревшим, когда меняется исходник, и экспортирует файлы для Unity, Unreal и Godot: CSV, JSON, gettext .po и XLIFF.

1. Откройте карту проекта и нажмите «Импорт».
2. Выберите вкладку «Папка или ZIP», затем «Выбрать ZIP-архив», укажите файл и импортируйте.
3. Откройте «Строки», выберите «Таблица перевода», проверьте роли, прочитанные из заголовков, затем нажмите «Использовать как таблицу перевода».

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

## Как вести таблицу строк, с которой могут работать переводчики

Таблица строк не работает, когда переводчикам приходится угадывать, что значит строка или сколько у неё места, или когда текст меняется после перевода и никто этого не замечает. Эти привычки предотвращают все три случая.

### Давайте каждой строке контекст

Кто это говорит, где это появляется, на что отвечает. «Open» на двери глагол, а на вывеске магазина прилагательное: различает только контекст.

### Задавайте длину по экрану

Измерьте, сколько символов вмещает кнопка, строка или реплика, и запишите этот предел, а не длину английского текста.

### Не собирайте фразы из кусков

Склейка «Вы нашли» и «3 кристалла» в коде ломает порядок слов и грамматику в большинстве языков. Дайте каждой фразе свой ключ с плейсхолдерами.

### Сохраняйте плейсхолдеры целыми

Каждый перевод сохраняет каждый {плейсхолдер} и каждый тег исходника. Потерянный {count} показывает игроку пустоту или роняет игру.

### Один ключ, один смысл

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

### Заморозьте исходник перед отправкой

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

## Вопросы о таблицах локализации

### Что такое таблица локализации?

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

### Какие столбцы нужны в таблице строк?

Как минимум ключ и исходный текст, затем по столбцу на язык. Столбцы контекста и максимальной длины избавляют от большинства вопросов, которые иначе задали бы переводчики. В этом шаблоне есть все пять видов: английский как исходный, а также французский, немецкий, испанский и польский.

### Как называть ключи строк?

По месту, где живёт текст, от общего к частному, например menu.play или hud.tide.warning: строчными буквами, с точками между частями. Тогда связанные строки сортируются рядом, а ключ подсказывает, где искать в игре.

### Как быть с множественным числом?

Языки считают по-разному: в польском и русском три формы множественного числа, в английском две. Либо ставьте число после метки, как в «Соль: {count}», либо используйте систему множественного числа движка с отдельным текстом на каждую форму.

### Как открыть CSV в Excel?

Google Таблицы, LibreOffice Calc, Numbers и Nodary открывают его как есть. Excel открывает его двойным щелчком, только если разделитель элементов списка в системе запятая; в русских настройках это точка с запятой, и каждая строка тогда попадает в один столбец. Тогда импортируйте файл: на вкладке «Данные» выберите импорт из текстового/CSV-файла, укажите файл, задайте источник файла UTF-8 и разделитель «запятая», затем загрузите.

### Прочитают ли этот CSV Unity, Unreal или Godot?

CSV шаблона сделан для табличных редакторов и для импорта в Nodary. Каждый движок читает свой формат: из той же таблицы таблица перевода Nodary экспортирует CSV для Godot и Unity, gettext .po для Unreal и Godot, JSON для большинства движков и XLIFF для инструментов перевода.

### Можно ли добавить языки?

Да. Добавьте столбец с кодом языка, например ru или pt-BR. Nodary распознаёт коды и названия языков в заголовках, а его таблица перевода тоже умеет добавлять столбец для языка.

Страница: https://nodary.ai/ru/templates/localization-string-table
