mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-13 23:08:09 +00:00
i18n(ru): fix counted status agreement and font weight labels (#4787)
This commit is contained in:
1 parent
00802b03de
commit
a999ce4a77
3 files changed
+109
-17
No files matched your search
@@ -150,3 +150,7 @@ sync_github_name = false
|
||||
|
||||
[people.sssehnsuchttt]
|
||||
sync_github_name = true
|
||||
|
||||
[people.VanTan666]
|
||||
display_name = "VanTan"
|
||||
sync_github_name = false
|
||||
@@ -626,6 +626,94 @@ mod tests {
|
||||
assert_eq!(trn(ru(), 111, "{n} item", "{n} items"), "111 элементов");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn russian_status_messages_agree_with_counts() {
|
||||
let ru = Lang::from_code("ru").expect("ru registered");
|
||||
let cases = [
|
||||
(
|
||||
"Exported {n} swatch to {file}",
|
||||
"Exported {n} swatches to {file}",
|
||||
["Экспортирован {n} образец в {file}", "Экспортированы {n} образца в {file}", "Экспортировано {n} образцов в {file}"],
|
||||
),
|
||||
(
|
||||
"Imported {n} brush from {group}",
|
||||
"Imported {n} brushes from {group}",
|
||||
["Импортирована {n} кисть из {group}", "Импортированы {n} кисти из {group}", "Импортировано {n} кистей из {group}"],
|
||||
),
|
||||
(
|
||||
"Imported {n} swatch from {file}",
|
||||
"Imported {n} swatches from {file}",
|
||||
["Импортирован {n} образец из {file}", "Импортированы {n} образца из {file}", "Импортировано {n} образцов из {file}"],
|
||||
),
|
||||
("Played {n} step", "Played {n} steps", ["Воспроизведён {n} шаг", "Воспроизведены {n} шага", "Воспроизведено {n} шагов"]),
|
||||
(
|
||||
"Updated {n} linked smart object changed on disk",
|
||||
"Updated {n} linked smart objects changed on disk",
|
||||
[
|
||||
"Обновлён {n} связанный смарт-объект, изменённый на диске",
|
||||
"Обновлены {n} связанных смарт-объекта, изменённых на диске",
|
||||
"Обновлено {n} связанных смарт-объектов, изменённых на диске",
|
||||
],
|
||||
),
|
||||
(
|
||||
"{n} layer recorded by this comp was deleted. Update the comp, or clear the warning.",
|
||||
"{n} layers recorded by this comp were deleted. Update the comp, or clear the warning.",
|
||||
[
|
||||
"Удалён {n} слой, записанный в этом варианте. Обновите вариант или сбросьте предупреждение.",
|
||||
"Удалены {n} слоя, записанных в этом варианте. Обновите вариант или сбросьте предупреждение.",
|
||||
"Удалено {n} слоёв, записанных в этом варианте. Обновите вариант или сбросьте предупреждение.",
|
||||
],
|
||||
),
|
||||
("{n} sample point removed", "{n} sample points removed", ["Удалена {n} точка замера", "Удалены {n} точки замера", "Удалено {n} точек замера"]),
|
||||
(
|
||||
"Loaded {n} action from {file}",
|
||||
"Loaded {n} actions from {file}",
|
||||
["Загружена {n} операция из {file}", "Загружены {n} операции из {file}", "Загружено {n} операций из {file}"],
|
||||
),
|
||||
(
|
||||
"Saved {n} action to {file}",
|
||||
"Saved {n} actions to {file}",
|
||||
["Сохранена {n} операция в {file}", "Сохранены {n} операции в {file}", "Сохранено {n} операций в {file}"],
|
||||
),
|
||||
(
|
||||
"{n} step with no Photoshop equivalent left out",
|
||||
"{n} steps with no Photoshop equivalent left out",
|
||||
[
|
||||
"Пропущен {n} шаг без эквивалента в Photoshop",
|
||||
"Пропущены {n} шага без эквивалента в Photoshop",
|
||||
"Пропущено {n} шагов без эквивалента в Photoshop",
|
||||
],
|
||||
),
|
||||
];
|
||||
// Include zero, teens, and compound counts as well as each basic form.
|
||||
for (n, form) in [(0, 2), (1, 0), (2, 1), (3, 1), (4, 1), (5, 2), (11, 2), (12, 2), (14, 2), (21, 0), (22, 1), (25, 2), (101, 0), (112, 2)] {
|
||||
for (one, other, forms) in cases {
|
||||
let expected = forms[form].replace("{n}", &n.to_string());
|
||||
assert_eq!(trn(ru, n, one, other), expected, "{one}, n={n}");
|
||||
}
|
||||
}
|
||||
assert_eq!(
|
||||
fmt(&trn(ru, 2, "Imported {n} brush from {group}", "Imported {n} brushes from {group}"), &[("group", "Кисти")]),
|
||||
"Импортированы 2 кисти из Кисти"
|
||||
);
|
||||
assert_eq!(
|
||||
fmt(&trn(ru, 22, "Loaded {n} action from {file}", "Loaded {n} actions from {file}"), &[("file", "actions.atn")]),
|
||||
"Загружены 22 операции из actions.atn"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn russian_font_weights_and_reviewed_labels() {
|
||||
let ru = Lang::from_code("ru").expect("ru registered");
|
||||
assert_eq!(tr_ctx(ru, "fontWeight", "ExtraLight"), "Сверхтонкий");
|
||||
assert_eq!(tr_ctx(ru, "fontWeight", "Light"), "Лёгкий");
|
||||
assert_eq!(tr_ctx(ru, "fontWeight", "ExtraBold"), "Сверхжирный");
|
||||
assert_eq!(tr_ctx(ru, "fontWeight", "Black"), "Сверхжирный (Black)");
|
||||
assert_eq!(tr(ru, "Delete and Fill Selection"), "Удалить и залить выделение");
|
||||
assert_eq!(tr(ru, "Discard the embedded profile (don't color manage)"), "Не использовать встроенный профиль (без управления цветом)");
|
||||
assert_eq!(tr(ru, "No object found there — drag a rectangle around it"), "Объект не найден — обведите его прямоугольником");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ukrainian_resolves_locales_and_preferences() {
|
||||
let uk = Lang::from_code("uk").expect("uk registered");
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
Fill… Выполнить заливку…
|
||||
Stroke… Обвести…
|
||||
Content-Aware Fill… Заливка с учётом содержимого…
|
||||
Delete and Fill Selection Удалить и заполнить выделение
|
||||
Delete and Fill Selection Удалить и залить выделение
|
||||
Define Brush Preset… Определить кисть…
|
||||
Define Pattern… Определить паттерн…
|
||||
Define Custom Shape… Определить свою фигуру…
|
||||
@@ -904,7 +904,7 @@
|
||||
Assign working space Назначить рабочее пространство
|
||||
Use the embedded profile (instead of the working space) Использовать встроенный профиль (вместо рабочего пространства)
|
||||
Leave as is (don't color manage) Оставить как есть (без управления цветом)
|
||||
Discard the embedded profile (don't color manage) Отклонить встроенный профиль (без управления цветом)
|
||||
Discard the embedded profile (don't color manage) Не использовать встроенный профиль (без управления цветом)
|
||||
Embed Color Profile Встроить цветовой профиль
|
||||
Assign Profile… Назначить профиль…
|
||||
Convert to Profile… Преобразовать в профиль…
|
||||
@@ -2694,14 +2694,14 @@ cameraRaw Roughness Неровность
|
||||
Its layers don't fit the GPU memory budget. Raising Memory usage in Preferences › Performance raises the budget, up to a quarter of this computer's memory. Слои не помещаются в бюджет памяти GPU. Увеличение параметра «Память» в разделе Настройки › Производительность повышает бюджет, но не больше четверти памяти этого компьютера.
|
||||
The GPU compositor wasn't used: {reason} Компоновщик GPU не использовался: {reason}
|
||||
fontWeight Thin Тонкий
|
||||
fontWeight ExtraLight Особо светлый
|
||||
fontWeight Light Светлый
|
||||
fontWeight ExtraLight Сверхтонкий
|
||||
fontWeight Light Лёгкий
|
||||
fontWeight Regular Обычный
|
||||
fontWeight Medium Средний
|
||||
fontWeight SemiBold Полужирный
|
||||
fontWeight Bold Жирный
|
||||
fontWeight ExtraBold Особо жирный
|
||||
fontWeight Black Чёрный
|
||||
fontWeight ExtraBold Сверхжирный
|
||||
fontWeight Black Сверхжирный (Black)
|
||||
fontWeight Italic Курсив
|
||||
|
||||
# Pattern Stamp tool
|
||||
@@ -3015,16 +3015,16 @@ curves Smooth Сгладить
|
||||
The layer or its mask changed. Drag the mask onto the Trash again. Слой или его маска изменились. Перетащите маску в корзину ещё раз.
|
||||
Delete the vector mask? Удалить векторную маску?
|
||||
# Counted status messages and labels (#3454; adapted from PR #3821)
|
||||
@plural Exported {n} swatch to {file}|Exported {n} swatches to {file} Экспортирован {n} образец в {file}|Экспортировано {n} образца в {file}|Экспортировано {n} образцов в {file}
|
||||
@plural Imported {n} brush from {group}|Imported {n} brushes from {group} Импортирована {n} кисть из {group}|Импортировано {n} кисти из {group}|Импортировано {n} кистей из {group}
|
||||
@plural Imported {n} swatch from {file}|Imported {n} swatches from {file} Импортирован {n} образец из {file}|Импортировано {n} образца из {file}|Импортировано {n} образцов из {file}
|
||||
@plural Played {n} step|Played {n} steps Воспроизведён {n} шаг|Воспроизведено {n} шага|Воспроизведено {n} шагов
|
||||
@plural Updated {n} linked smart object changed on disk|Updated {n} linked smart objects changed on disk Обновлён {n} связанный смарт-объект, изменённый на диске|Обновлено {n} связанных смарт-объекта, изменённых на диске|Обновлено {n} связанных смарт-объектов, изменённых на диске
|
||||
@plural Exported {n} swatch to {file}|Exported {n} swatches to {file} Экспортирован {n} образец в {file}|Экспортированы {n} образца в {file}|Экспортировано {n} образцов в {file}
|
||||
@plural Imported {n} brush from {group}|Imported {n} brushes from {group} Импортирована {n} кисть из {group}|Импортированы {n} кисти из {group}|Импортировано {n} кистей из {group}
|
||||
@plural Imported {n} swatch from {file}|Imported {n} swatches from {file} Импортирован {n} образец из {file}|Импортированы {n} образца из {file}|Импортировано {n} образцов из {file}
|
||||
@plural Played {n} step|Played {n} steps Воспроизведён {n} шаг|Воспроизведены {n} шага|Воспроизведено {n} шагов
|
||||
@plural Updated {n} linked smart object changed on disk|Updated {n} linked smart objects changed on disk Обновлён {n} связанный смарт-объект, изменённый на диске|Обновлены {n} связанных смарт-объекта, изменённых на диске|Обновлено {n} связанных смарт-объектов, изменённых на диске
|
||||
@plural Saved for Web: {n} file|Saved for Web: {n} files Сохранено для Web: {n} файл|Сохранено для Web: {n} файла|Сохранено для Web: {n} файлов
|
||||
@plural {n} layer recorded by this comp was deleted. Update the comp, or clear the warning.|{n} layers recorded by this comp were deleted. Update the comp, or clear the warning. Удалён {n} слой, записанный в этом варианте. Обновите вариант или сбросьте предупреждение.|Удалено {n} слоя, записанных в этом варианте. Обновите вариант или сбросьте предупреждение.|Удалено {n} слоёв, записанных в этом варианте. Обновите вариант или сбросьте предупреждение.
|
||||
@plural {n} layer recorded by this comp was deleted. Update the comp, or clear the warning.|{n} layers recorded by this comp were deleted. Update the comp, or clear the warning. Удалён {n} слой, записанный в этом варианте. Обновите вариант или сбросьте предупреждение.|Удалены {n} слоя, записанных в этом варианте. Обновите вариант или сбросьте предупреждение.|Удалено {n} слоёв, записанных в этом варианте. Обновите вариант или сбросьте предупреждение.
|
||||
@plural {n} plane|{n} planes {n} плоскость|{n} плоскости|{n} плоскостей
|
||||
@plural {n} preset|{n} presets {n} набор|{n} набора|{n} наборов
|
||||
@plural {n} sample point removed|{n} sample points removed Удалена {n} точка замера|Удалено {n} точки замера|Удалено {n} точек замера
|
||||
@plural {n} sample point removed|{n} sample points removed Удалена {n} точка замера|Удалены {n} точки замера|Удалено {n} точек замера
|
||||
@plural {n} slice|{n} slices {n} фрагмент|{n} фрагмента|{n} фрагментов
|
||||
@plural {n} step|{n} steps {n} шаг|{n} шага|{n} шагов
|
||||
@plural {warning} (+{n} more brush preset warning)|{warning} (+{n} more brush preset warnings) {warning} (и ещё {n} предупреждение о наборах кистей)|{warning} (и ещё {n} предупреждения о наборах кистей)|{warning} (и ещё {n} предупреждений о наборах кистей)
|
||||
@@ -3035,7 +3035,7 @@ curves Smooth Сгладить
|
||||
Medium Blue Средне-синий
|
||||
Light Gray Светло-серый
|
||||
Object Finder Поиск объектов
|
||||
No object found there — drag a rectangle around it Там не найден объект — обведите его прямоугольником
|
||||
No object found there — drag a rectangle around it Объект не найден — обведите его прямоугольником
|
||||
Remove after each stroke Удалять после каждого штриха
|
||||
Apply the removal ({key}) Применить удаление ({key})
|
||||
Strokes to remove: {n} (Enter applies, Esc cancels) Штрихов к удалению: {n} (Enter применяет, Esc отменяет)
|
||||
@@ -3048,10 +3048,10 @@ curves Smooth Сгладить
|
||||
Save Actions… Сохранить операции…
|
||||
{name} (Photoshop) {name} (Photoshop)
|
||||
{message} ({note}) {message} ({note})
|
||||
@plural Loaded {n} action from {file}|Loaded {n} actions from {file} Загружена {n} операция из {file}|Загружено {n} операции из {file}|Загружено {n} операций из {file}
|
||||
@plural Loaded {n} action from {file}|Loaded {n} actions from {file} Загружена {n} операция из {file}|Загружены {n} операции из {file}|Загружено {n} операций из {file}
|
||||
@plural {n} step has no PhotoCraft equivalent yet|{n} steps have no PhotoCraft equivalent yet {n} шаг пока не имеет эквивалента в PhotoCraft|{n} шага пока не имеют эквивалента в PhotoCraft|{n} шагов пока не имеют эквивалента в PhotoCraft
|
||||
@plural Saved {n} action to {file}|Saved {n} actions to {file} Сохранена {n} операция в {file}|Сохранено {n} операции в {file}|Сохранено {n} операций в {file}
|
||||
@plural {n} step with no Photoshop equivalent left out|{n} steps with no Photoshop equivalent left out Пропущен {n} шаг без эквивалента в Photoshop|Пропущено {n} шага без эквивалента в Photoshop|Пропущено {n} шагов без эквивалента в Photoshop
|
||||
@plural Saved {n} action to {file}|Saved {n} actions to {file} Сохранена {n} операция в {file}|Сохранены {n} операции в {file}|Сохранено {n} операций в {file}
|
||||
@plural {n} step with no Photoshop equivalent left out|{n} steps with no Photoshop equivalent left out Пропущен {n} шаг без эквивалента в Photoshop|Пропущены {n} шага без эквивалента в Photoshop|Пропущено {n} шагов без эквивалента в Photoshop
|
||||
|
||||
# Actions panel: set folders, dialog toggle, Insert Stop
|
||||
Insert Stop… Вставить остановку…
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
Reference in new issue
Block a user