mirror of
https://github.com/penpot/penpot.git
synced 2026-10-28 21:40:34 +00:00
🌐 Complete Russian translations to 100% (#11956)
Complete ru.po from 1460 to 2275 keys (100%), add words.ru.txt catalog, fix two dropped %s placeholders and normalize board/layout/shortcut terms. Documents Russian conventions in the translations memory. AI-assisted-by: muse-spark-1.3-contributor
This commit is contained in:
parent
0c0336da42
commit
4023642acb
@ -47,7 +47,6 @@ high-coverage support reference, never the base.
|
||||
- Preserve verbatim: `%s`/`%d`, `{var}`/`{{...}}`, markdown `[text](%s)`, HTML tags, `\n` positions, brand names (Penpot), key names (Ctrl/Shift/Alt), technical terms (SVG, CSS, HSV, RGB).
|
||||
|
||||
## Catalan (ca) conventions
|
||||
|
||||
- Normative IEC/Termcat Catalan. Address the user in VOSALTRES (2nd person plural): "Deseu", "Creeu", "Ja teniu un compte?". Buttons/menus use short imperatives ("Crea", "Mou", "Restaura").
|
||||
- Established glossary (reuse exactly, do not re-coin): layer=capa, board=tauler, stroke=traç, fill=Emplenat, blur=Difuminat, shadow=Ombra, clipboard=porta-retalls, delete=Elimina, rename=Canvia el nom, shortcut=drecera, grid=graella (keep "grid" where the file already does, e.g. grid-layout editing), plugins/extensions UI=extensions, layout=Disposició, gradient=Degradat, wireframing kept as loanword.
|
||||
- Ela geminada uses the middle dot: Cancel·la, paral·lel, al·lega.
|
||||
@ -55,6 +54,20 @@ high-coverage support reference, never the base.
|
||||
- Shortcut/action names (`shortcuts.*`) are noun/infinitive labels, not sentences. Error strings are direct, no hedging.
|
||||
- Same English source in different contexts may legitimately differ (verb "Copia" vs noun "Còpia"; "Desactivat" vs "Deshabilitada" agreeing with "drecera"). Normalize only true duplicates.
|
||||
|
||||
## Russian (ru) conventions
|
||||
|
||||
- Formal address with capital ВЫ ("Вы уверены…", "Вы собираетесь…"). Buttons/menus use infinitives ("Создать", "Удалить", "Дублировать"), never imperatives.
|
||||
- Established glossary (reuse exactly, do not re-coin): layer=слой, board=доска (EN `board` is NEVER кадр — normalized in lote1: toolbar/viewer/shape-menu/header-menu/export-frames/undo/num-of-frames), path/draw tool=контур, stroke=обводка, fill=заливка, blur=размытие, shadow=тень, grid=сетка, clipboard=буфер обмена, shortcuts=сочетания клавиш (normalized in lote1: title/show-shortcuts/not-found), plugin=плагин, layout=макет (`labels.layout` fixed in lote1), gradient=градиент, token=токен, set=набор, theme=тема, file=файл, project=проект, team=команда, library=библиотека, component=компонент.
|
||||
- No external RU style guide applies verbatim (Mozilla ru guide is marketing-only, GNOME glossary unmaintained, Adobe uses монтажная область for artboard but `ru.po` majority already says доска — keep доска for consistency).
|
||||
- `words.ru.txt` `[function]` DELIBERATELY omits 1-letter words (в/с/к/о/у/а/и) and ending-colliding particles (на/по/не/ли/же/бы/его/их/те/или…): Russian inflects (проект→проекта, запросили=запрос+или), so listing them flags every inflected noun/verb. Never "complete" that list; put tripped valid words in `[ok]`.
|
||||
- Never abbreviate т. д. / т. е. in `ru.po`: the lone т/д tokens poison the glue detector's frequency map and flag short words (тон→т+он). Write и так далее out.
|
||||
- Tokens-domain glossary (lote2, reuse): alias=алиас, remap=переназначить, viewport=вьюпорт, set=набор, theme=тема, spread (shadow)=распространение, margins=внешние отступы, paddings=внутренние отступы, gaps=промежутки, type identifiers stay in English (Line Height, Font Size, innerShadow/dropShadow, none/Uppercase/Lowercase/Capitalize, thin/light/regular/bold/Italic).
|
||||
- Editor-domain glossary (lote3, reuse): variant=вариант, property=свойство, guide=направляющая, board guide=направляющая доски, MCP server=MCP-сервер, size preset=пресет размера, border-radius section=скругление, path handler=маркер, canvas=холст, render=рендер/рендеринг, plugin (never extensión)=плагин.
|
||||
- Avoid standalone те (those) in phrasing ("те же" → "такие же"): one lone те validates те+мы splits and flags every темы. Same poisoning class as т. д.
|
||||
- `words.ru.txt` `[function]` also omits пока (dropped in lote4): with standalone за anywhere in the file, пока+за flags показа. Rare-typo detection loss accepted.
|
||||
- Billing-domain glossary (lote4, reuse): plan names follow shipped `ru.po`, NOT es: Enterprise=Корпоративный, Professional=Профессиональный, Unlimited=Безлимитный, trial=пробный; subscription=подписка, storage=хранилище, seat editors=редакторы, viewer role=наблюдатель, amounts as `175 $/мес.` / `10 ГБ`; access token=токен доступа, MCP key=MCP-ключ (regenerate=перевыпустить), markdown `[text|target:self](%s)` kept verbatim.
|
||||
- Closing-domain glossary (lote5, reuse): shortcut noun everywhere=сочетание (shortcuts section titles are noun/infinitive labels, never ярлыки); node=узел, segment=сегмент, measurements=размеры; WebGL unavailable flow uses гайд/руководство по неполадкам + рендеринг WebGL выключен/включён; `ru.po` reached 2275/2275 keys (100%) with 0 fuzzy, 0 untranslated per `msgfmt --statistics`.
|
||||
|
||||
## QA before commit
|
||||
|
||||
- Run `node ./scripts/translations.js check -l <locale>` from `frontend/` (no default locale: pass `-l` explicitly): 0 errors required; review warnings by hand. Word lists live in `frontend/scripts/check-translations/words.<locale>.txt` (`[elision]` `[function]` `[common]` `[ok]` `[brands]`); new valid words that trip the gate go to `[ok]`; `check --self-test` covers the detector rules. Without a catalog only the universal checks run. `#, fuzzy` entries are skipped (known-pending, owned elsewhere).
|
||||
|
||||
352
frontend/scripts/check-translations/words.ru.txt
Normal file
352
frontend/scripts/check-translations/words.ru.txt
Normal file
@ -0,0 +1,352 @@
|
||||
# Word catalog for check-translations.js (Russian).
|
||||
# Comment lines start with #. Blank lines are ignored.
|
||||
# [function] short function words; a token starting with one of
|
||||
# these is likely missing a space (ивкладка style).
|
||||
# [common] ordinary words used to judge the other half of a split.
|
||||
# [ok] correct words the splitter would flag; never report
|
||||
# these. Add new valid words here when the gate trips.
|
||||
# [brands] extra locale-specific brands/terms kept as-is.
|
||||
# [elision] letters elided with an apostrophe (Russian has none).
|
||||
#
|
||||
# NOTE (Russian): Russian inflects (проект -> проекта, файл -> файла),
|
||||
# so one-letter words (в, с, к, о, у, а, и) and common endings/particles
|
||||
# (на, по, не, ли, же, бы, его, их, ...) are DELIBERATELY absent from
|
||||
# [function]: listing them flags every inflected noun as a glued word.
|
||||
# The gate still catches placeholder/plural/punctuation errors plus
|
||||
# long content-word glues (review warnings).
|
||||
|
||||
[elision]
|
||||
|
||||
[function]
|
||||
без
|
||||
для
|
||||
как
|
||||
что
|
||||
чтобы
|
||||
чтоб
|
||||
если
|
||||
когда
|
||||
хотя
|
||||
пусть
|
||||
даже
|
||||
лишь
|
||||
только
|
||||
тоже
|
||||
также
|
||||
уже
|
||||
ведь
|
||||
вот
|
||||
между
|
||||
через
|
||||
перед
|
||||
после
|
||||
возле
|
||||
вокруг
|
||||
вдоль
|
||||
внутри
|
||||
вне
|
||||
кроме
|
||||
мимо
|
||||
около
|
||||
против
|
||||
среди
|
||||
сверху
|
||||
снизу
|
||||
слева
|
||||
справа
|
||||
вы
|
||||
мы
|
||||
он
|
||||
она
|
||||
оно
|
||||
они
|
||||
меня
|
||||
тебя
|
||||
себя
|
||||
нас
|
||||
вас
|
||||
это
|
||||
этот
|
||||
эта
|
||||
эти
|
||||
тот
|
||||
та
|
||||
здесь
|
||||
там
|
||||
тут
|
||||
где
|
||||
куда
|
||||
откуда
|
||||
почему
|
||||
зачем
|
||||
сколько
|
||||
какой
|
||||
какая
|
||||
какое
|
||||
какие
|
||||
|
||||
[common]
|
||||
создать
|
||||
удалить
|
||||
удаление
|
||||
удалён
|
||||
добавить
|
||||
сохранить
|
||||
сохранён
|
||||
открыть
|
||||
закрыть
|
||||
изменить
|
||||
выбрать
|
||||
выбрано
|
||||
показать
|
||||
скрыть
|
||||
переместить
|
||||
перемещён
|
||||
копировать
|
||||
вставить
|
||||
отменить
|
||||
вернуть
|
||||
дублировать
|
||||
обновить
|
||||
загрузить
|
||||
загрузка
|
||||
скачать
|
||||
найти
|
||||
искать
|
||||
поиск
|
||||
поделиться
|
||||
пригласить
|
||||
приглашение
|
||||
приглашения
|
||||
покинуть
|
||||
восстановить
|
||||
восстановлены
|
||||
закрепить
|
||||
открепить
|
||||
опубликовать
|
||||
настроить
|
||||
настройки
|
||||
отправить
|
||||
получить
|
||||
проверить
|
||||
использовать
|
||||
перейти
|
||||
продолжить
|
||||
начать
|
||||
выйти
|
||||
войти
|
||||
файл
|
||||
файлы
|
||||
файлов
|
||||
файла
|
||||
проект
|
||||
проекты
|
||||
проектов
|
||||
проекта
|
||||
команда
|
||||
команды
|
||||
участник
|
||||
участники
|
||||
участников
|
||||
библиотека
|
||||
библиотеки
|
||||
библиотек
|
||||
компонент
|
||||
компоненты
|
||||
цвет
|
||||
цвета
|
||||
цветов
|
||||
слой
|
||||
слои
|
||||
слоёв
|
||||
доска
|
||||
доски
|
||||
досок
|
||||
кадр
|
||||
кадры
|
||||
контур
|
||||
обводка
|
||||
заливка
|
||||
размытие
|
||||
тень
|
||||
тени
|
||||
сетка
|
||||
сетки
|
||||
макет
|
||||
градиент
|
||||
шрифт
|
||||
шрифты
|
||||
шрифтов
|
||||
текст
|
||||
текста
|
||||
изображение
|
||||
комментарий
|
||||
комментарии
|
||||
уведомление
|
||||
уведомления
|
||||
пароль
|
||||
почта
|
||||
почту
|
||||
аккаунт
|
||||
профиль
|
||||
роль
|
||||
доступ
|
||||
ошибка
|
||||
ошибки
|
||||
версия
|
||||
история
|
||||
экспорт
|
||||
импорт
|
||||
тема
|
||||
темы
|
||||
набор
|
||||
наборы
|
||||
токен
|
||||
токены
|
||||
токенов
|
||||
панель
|
||||
окно
|
||||
вкладка
|
||||
кнопка
|
||||
поле
|
||||
список
|
||||
таблица
|
||||
строка
|
||||
столбец
|
||||
строки
|
||||
высота
|
||||
ширина
|
||||
размер
|
||||
имя
|
||||
название
|
||||
описание
|
||||
время
|
||||
дата
|
||||
право
|
||||
права
|
||||
владелец
|
||||
администратор
|
||||
редактор
|
||||
наблюдатель
|
||||
гость
|
||||
новый
|
||||
новая
|
||||
новые
|
||||
общий
|
||||
общая
|
||||
последний
|
||||
следующий
|
||||
предыдущий
|
||||
выбранное
|
||||
непрозрачность
|
||||
выравнивание
|
||||
выровнять
|
||||
направляющие
|
||||
линейки
|
||||
пиксельный
|
||||
масштаб
|
||||
приблизить
|
||||
отдалить
|
||||
группировать
|
||||
разгруппировать
|
||||
маска
|
||||
узел
|
||||
узлы
|
||||
фигура
|
||||
фигуры
|
||||
элемент
|
||||
элементы
|
||||
свойства
|
||||
стиль
|
||||
эффект
|
||||
ссылка
|
||||
ссылку
|
||||
вектор
|
||||
растр
|
||||
код
|
||||
плагин
|
||||
вебхук
|
||||
шаблон
|
||||
шаблоны
|
||||
черновик
|
||||
корзина
|
||||
папка
|
||||
область
|
||||
холст
|
||||
фон
|
||||
граница
|
||||
угол
|
||||
центр
|
||||
край
|
||||
верх
|
||||
низ
|
||||
право
|
||||
лево
|
||||
горизонталь
|
||||
вертикаль
|
||||
сверху
|
||||
снизу
|
||||
слева
|
||||
справа
|
||||
внутрь
|
||||
наружу
|
||||
сплошной
|
||||
пунктирный
|
||||
точечный
|
||||
круг
|
||||
квадрат
|
||||
треугольник
|
||||
стрелка
|
||||
эллипс
|
||||
прямоугольник
|
||||
многоугольник
|
||||
звезда
|
||||
кривая
|
||||
путь
|
||||
|
||||
[ok]
|
||||
автосохранение
|
||||
автовысота
|
||||
автоширина
|
||||
медиафайл
|
||||
цветовой
|
||||
командой
|
||||
чтобы
|
||||
чтоб
|
||||
какой
|
||||
какая
|
||||
какое
|
||||
какие
|
||||
какого
|
||||
каких
|
||||
каком
|
||||
какую
|
||||
горизонтально
|
||||
вертикально
|
||||
какой-либо
|
||||
адресата
|
||||
последний
|
||||
последняя
|
||||
последнее
|
||||
последние
|
||||
последней
|
||||
последнего
|
||||
последнем
|
||||
последнюю
|
||||
доступна
|
||||
автомакета
|
||||
запросили
|
||||
верхняя
|
||||
верхнее
|
||||
верхние
|
||||
верхнего
|
||||
верхней
|
||||
верхнем
|
||||
верхнюю
|
||||
библиотекой
|
||||
автоверсии
|
||||
подорганизации
|
||||
прочитать
|
||||
просмотреть
|
||||
|
||||
[brands]
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user