Шаблон таблицы локализации
Таблица строк, с которой могут работать переводчики: одна строка на ключ, с контекстом, ограничением длины, английским исходным текстом и четырьмя переводами, а также глоссарий и руководство по стилю для каждого языка. Скачайте её архивом .zip: таблица хранится в файле CSV (UTF-8, через запятую), остальное написано в Markdown, и весь набор импортируется в Nodary, где CSV становится листом, который можно использовать как таблицу перевода.
Файлов в архиве .zip: 4 (Markdown и CSV), 8 кБ
Бесплатно, без учётной записи и без e-mail. Пользуйтесь, меняйте, делитесь.
Прочитайте каждый файл до скачивания
Обзор объясняет столбцы, правила именования ключей, плейсхолдеры и статусы перевода. В таблице 13 примеров строк из Saltmarrow, демонстрационной игры, которую этот сайт использует везде; две ячейки ошибочны намеренно, чтобы показать, что находят проверки.
Документы
Файл Шаблон таблицы локализации/Таблица локализации.md
Таблица локализации
Как пользоваться шаблоном: строки курсивом содержат подсказки. Замените их своими словами, затем удалите. Значения в квадратных скобках заполняете вы. Сама таблица находится в файле CSV рядом с этой страницей.
Файлы
- Строки: сама таблица, по строке на фрагмент текста и по столбцу на язык
- Глоссарий: слова, которые везде переводятся одинаково, и имена, которые не переводятся никогда
- Руководство по стилю: как игра говорит на каждом языке
Столбцы
| Столбец | Что в нём |
|---|---|
| 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, где эти файлы импортируются как карта связанных документов, а CSV как лист.
Файл Шаблон таблицы локализации/Таблица локализации/Строки.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 |
Файл Шаблон таблицы локализации/Таблица локализации/01 Глоссарий.md
Глоссарий
Добавляйте термин, когда переводчик впервые спрашивает о нём. Слово, переведённое двумя способами, сбивает игроков с толку и удваивает вопросы в поддержку.
Термины
| Термин (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, название игры
- [Имена персонажей и названия мест, которые остаются как есть]
- [Названия платформ и брендов]
Файл Шаблон таблицы локализации/Таблица локализации/02 Руководство по стилю.md
Руководство по стилю
Голос
Три слова о голосе игры, и как она не звучит никогда.
- Голос: [...]
- Никогда: [...]
Пример (Saltmarrow, демонстрационная игра): Спокойный и немного старомодный, как у хранителя архива. Короткие фразы. Никакого современного сленга.
Язык за языком
| Язык | Обращение к игроку | Типографика | Примечания |
|---|---|---|---|
| Французский (fr) | [tu или vous] | Неразрывный пробел перед : ; ! ? и внутри « » | [...] |
| Немецкий (de) | [du или Sie] | „Кавычки“, существительные с заглавной буквы | Часто длиннее английского: сначала проверьте max_length |
| Испанский (es) | [tú или usted] | Открывающие ¿ и ¡ | [...] |
| Польский (pl) | [ty или Pan и Pani] | „Кавычки”, три формы множественного числа | Слова вокруг имени игрока меняются по роду |
| [Язык] | [...] | [...] | [...] |
Длина
Оставляйте запас: переводы с английского часто длиннее, в некоторых языках до трети. Задавайте max_length по месту на экране, а не по английскому тексту.
Множественное число и числа
Языки считают по-разному: в польском три формы множественного числа, в английском две. Ставьте число после метки (Соль: {count}) или используйте систему множественного числа движка, а числа и даты форматируйте для каждого языка.
Как им пользоваться
Замените строки-примеры
Сохраните столбцы и правила именования ключей и вставьте свои строки. Дайте каждой строке контекст и ограничение длины до того, как она уйдёт переводчику.
Начните глоссарий рано
Добавляйте термин, когда переводчик впервые спрашивает о нём, с переводом на каждый язык. Слово, переведённое двумя способами, сбивает игроков с толку и удваивает вопросы в поддержку.
Договоритесь о стиле каждого языка
До начала перевода решите, как каждый язык обращается к игроку и каковы его типографские правила. Поменять это позже значит перечитать каждую строку.
Заморозьте исходник перед отправкой
Отправляйте строки на перевод, когда их английский текст окончательный. Если исходник потом изменится, его переводы нужно проверить снова.
Импортируйте его в Nodary и используйте как таблицу перевода
Nodary представляет собой рабочее пространство, созданное для ИИ, где документы команды связаны, а не копятся в кучу. Импортируйте .zip, и CSV появится как лист под обзором, рядом с глоссарием и руководством по стилю. На листе «Таблица перевода» читает роли из заголовков (key, context, max_length и по столбцу на язык), затем проверяет длину и плейсхолдеры каждого перевода, присваивает ему статус, помечает перевод устаревшим, когда меняется исходник, и экспортирует файлы для Unity, Unreal и Godot: CSV, JSON, gettext .po и XLIFF.
- Откройте карту проекта и нажмите «Импорт».
- Выберите вкладку «Папка или ZIP», затем «Выбрать ZIP-архив», укажите файл и импортируйте.
- Откройте «Строки», выберите «Таблица перевода», проверьте роли, прочитанные из заголовков, затем нажмите «Использовать как таблицу перевода».
Бесплатный тариф вмещает десять документов на рабочее пространство, включая страницу самого проекта: четыре документа шаблона помещаются с запасом. Исходный столбец английский: если ваша игра написана на другом языке, сделайте исходным тот столбец, когда Nodary покажет роли.
Как 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 распознаёт коды и названия языков в заголовках, а его таблица перевода тоже умеет добавлять столбец для языка.
Держите тексты игры там, где работает команда.
Импортируйте шаблон в Nodary, и таблица строк окажется на одной карте с дизайном и диалогами, а статус каждого перевода будет на виду. Бесплатно для двух участников, одного проекта и десяти документов, без карты.