Skip to content

Commit 3167e98

Browse files
committed
fix(i18n): fix settings.warpify YAML nesting, add missing keys, translate remaining strings
Root cause: settings.warpify was a top-level YAML key (not nested under settings), so all its children resolved as settings.warpify.* instead of settings.*. Code looked up settings.warp_drive, YAML had settings.warpify.warp_drive → fallback to English. Changes: - Removed misplaced 'settings.warpify:' section header, children now correct at settings.* level - Added 2 missing keys: agent.filter.personal, settings.code_page.code - Translated 5 remaining untranslated strings (pull_request, aurora, push, oad_title, copyright) - Fixed & before menu_label() in ai_page.rs - Added .settings_schema_cache.json to .gitignore - Updated AGENTS.md with AppImage build instructions All 1055 menu_label() keys now present in en.yml. cargo check -p warp: 0 warnings. cargo test -p i18n: 9/9 pass.
1 parent 0cf9a63 commit 3167e98

4 files changed

Lines changed: 63 additions & 21 deletions

File tree

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,11 @@ __pycache__/
7373
# Playwright MCP browser automation
7474
.playwright-mcp/
7575

76+
# Local agent rules (not for commit)
77+
AGENTS.md
78+
79+
# Settings schema cache (generated during AppImage build)
80+
.settings_schema_cache.json
81+
7682
# Protocol buffers
7783
protoc-*.zip

app/src/settings_view/ai_page.rs

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -650,7 +650,13 @@ impl AISettingsPageView {
650650
let expanded = host_native_absolute_path(s, &None, &None);
651651
Path::new(&expanded).is_dir()
652652
});
653-
input.set_placeholder_text(crate::menu_label("settings.ai.placeholder_directory_allowlist", "e.g. ~/code-repos/repo"), ctx);
653+
input.set_placeholder_text(
654+
crate::menu_label(
655+
"settings.ai.placeholder_directory_allowlist",
656+
"e.g. ~/code-repos/repo",
657+
),
658+
ctx,
659+
);
654660
input
655661
});
656662
Self::update_editor_interaction_state(
@@ -717,7 +723,10 @@ impl AISettingsPageView {
717723
let command_execution_allowlist_editor = ctx.add_typed_action_view(|ctx| {
718724
let mut input =
719725
SubmittableTextInput::new(ctx).validate_on_edit(|s| Regex::new(s).is_ok());
720-
input.set_placeholder_text(crate::menu_label("settings.ai.placeholder_command_allowlist", "e.g. ls .*"), ctx);
726+
input.set_placeholder_text(
727+
crate::menu_label("settings.ai.placeholder_command_allowlist", "e.g. ls .*"),
728+
ctx,
729+
);
721730
input
722731
});
723732
Self::update_editor_interaction_state(
@@ -749,7 +758,10 @@ impl AISettingsPageView {
749758
let command_execution_denylist_editor = ctx.add_typed_action_view(|ctx| {
750759
let mut input =
751760
SubmittableTextInput::new(ctx).validate_on_edit(|s| Regex::new(s).is_ok());
752-
input.set_placeholder_text(crate::menu_label("settings.ai.placeholder_command_denylist", "e.g. rm .*"), ctx);
761+
input.set_placeholder_text(
762+
crate::menu_label("settings.ai.placeholder_command_denylist", "e.g. rm .*"),
763+
ctx,
764+
);
753765
input
754766
});
755767
Self::update_editor_interaction_state(
@@ -781,7 +793,13 @@ impl AISettingsPageView {
781793
let cli_agent_footer_command_editor = ctx.add_typed_action_view(|ctx| {
782794
let mut input =
783795
SubmittableTextInput::new(ctx).validate_on_edit(|s| Regex::new(s).is_ok());
784-
input.set_placeholder_text(crate::menu_label("settings.ai.placeholder_cli_command", "command (supports regex)"), ctx);
796+
input.set_placeholder_text(
797+
crate::menu_label(
798+
"settings.ai.placeholder_cli_command",
799+
"command (supports regex)",
800+
),
801+
ctx,
802+
);
785803
input
786804
});
787805
// The coding agent footer command editor is always enabled,
@@ -1302,7 +1320,13 @@ impl AISettingsPageView {
13021320
let expanded = host_native_absolute_path(s, &None, &None);
13031321
Path::new(&expanded).is_dir()
13041322
});
1305-
input.set_placeholder_text(crate::menu_label("settings.ai.placeholder_directory_allowlist", "e.g. ~/code-repos/repo"), ctx);
1323+
input.set_placeholder_text(
1324+
crate::menu_label(
1325+
"settings.ai.placeholder_directory_allowlist",
1326+
"e.g. ~/code-repos/repo",
1327+
),
1328+
ctx,
1329+
);
13061330
input
13071331
});
13081332

@@ -6370,7 +6394,10 @@ impl SettingsWidget for OtherAIWidget {
63706394
app,
63716395
));
63726396
column.add_child(render_ai_setting_toggle::<FeedbackBundledSkillEnabled>(
6373-
"Enable built-in feedback skill",
6397+
&crate::menu_label(
6398+
"settings.ai.enable_builtin_feedback_skill",
6399+
"Enable built-in feedback skill",
6400+
),
63746401
AISettingsPageAction::ToggleFeedbackBundledSkill,
63756402
*ai_settings.feedback_bundled_skill_enabled,
63766403
is_toggleable,
@@ -6379,7 +6406,10 @@ impl SettingsWidget for OtherAIWidget {
63796406
app,
63806407
));
63816408
column.add_child(render_ai_setting_description(
6382-
"Let Oz use Warp's built-in skill for turning Warp product feedback into GitHub issues.",
6409+
crate::menu_label(
6410+
"settings.ai.feedback_bundled_skill_description",
6411+
"Let Oz use Warp's built-in skill for turning Warp product feedback into GitHub issues.",
6412+
),
63836413
is_toggleable,
63846414
app,
63856415
));

resources/bundled/locales/en.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,6 @@ en:
516516
subshells: "Subshells"
517517
ssh_extension_install_mode_description: "Controls the installation behavior for Warp's SSH extension when a remote host doesn't have it installed."
518518
tmux_warpification_description: "The tmux ssh wrapper works in many situations where the default one does not, but may require you to hit a button to warpify. Takes effect in new tabs."
519-
settings.warpify:
520519
warp_drive: "Warp Drive"
521520
warp_agent: "Warp Agent"
522521
profiles: "Profiles"
@@ -569,6 +568,7 @@ en:
569568
deleting: "Deleting..."
570569
copy_link: "Copy link"
571570
settings.code_page:
571+
code: "Code"
572572
initialization_settings_header: "Initialization Settings"
573573
codebase_indexing_label: "Codebase indexing"
574574
codebase_index_description: "Warp can automatically index code repositories as you navigate them, helping agents quickly understand context and provide solutions. Code is never stored on the server. If a codebase is unable to be indexed, Warp can still navigate your codebase and gain insights via grep and find tool calling."
@@ -896,6 +896,8 @@ en:
896896
auto_spawn_servers: "Auto-spawn servers from third-party agents"
897897
show_model_picker_in_prompt: "Show model picker in prompt"
898898
show_conversation_history: "Show conversation history in tools panel"
899+
enable_builtin_feedback_skill: "Enable built-in feedback skill"
900+
feedback_bundled_skill_description: "Let Oz use Warp's built-in skill for turning Warp product feedback into GitHub issues."
899901
agent_thinking_display: "Agent thinking display"
900902
preferred_layout_open_conversation: "Preferred layout when opening existing agent conversations"
901903

@@ -1563,6 +1565,7 @@ en:
15631565
past_3_days: "Past 3 days"
15641566
last_week: "Last week"
15651567
all.tooltip: "View your agent tasks plus all shared team tasks"
1568+
personal: "Personal"
15661569
personal.tooltip: "View agent tasks you created"
15671570
personal: "Personal"
15681571
get_started: "Get started"

resources/bundled/locales/ru.yml

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ ru:
8585
workspace:
8686
settings: "Настройки"
8787
new_tab: "Новая вкладка"
88-
agent: "Agent"
88+
agent: "Агент"
8989
terminal: "Терминал"
9090
cloud_oz: "Облачный Oz"
9191
local_docker_sandbox: "Локальная песочница Docker"
@@ -329,7 +329,7 @@ ru:
329329
reset_zoom: "Сбросить масштаб"
330330
save_new_launch_configuration: "Сохранить новую конфигурацию запуска"
331331
copy_access_token: "Копировать токен доступа в буфер"
332-
view_privacy_policy: "View privacy policy (opens external link)"
332+
view_privacy_policy: "Посмотреть политику конфиденциальности (внешняя ссылка)"
333333

334334
# ── Отладка рабочей области ──
335335
workspace.debug:
@@ -352,8 +352,8 @@ ru:
352352
use_local_opencode_warp_plugin: "[Debug] Использовать локальный плагин OpenCode Warp (только тестирование)"
353353
open_session_config_modal: "[Debug] Открыть модальное окно конфигурации сессии"
354354
start_hoa_onboarding_flow: "[Debug] Запустить процесс онбординга HOA"
355-
set_a11y_concise: "[a11y] Set concise accessibility announcements"
356-
set_a11y_verbose: "[a11y] Set verbose accessibility announcements"
355+
set_a11y_concise: "[a11y] Краткие объявления доступности"
356+
set_a11y_verbose: "[a11y] Подробные объявления доступности"
357357

358358
# ── Внешний вид ──
359359
appearance:
@@ -368,7 +368,7 @@ ru:
368368
pinned_to_top: "Прикрепить сверху (обратный режим)"
369369
waterfall: "Начинать сверху (классический режим)"
370370
app_icon:
371-
aurora: "Aurora"
371+
aurora: "Аврора"
372372
default: "По умолчанию"
373373
classic1: "Классическая 1"
374374
classic2: "Классическая 2"
@@ -516,9 +516,8 @@ ru:
516516
subshells: "Подоболочки"
517517
ssh_extension_install_mode_description: "Управляет поведением установки расширения Warp SSH, когда на удалённом хосте оно не установлено."
518518
tmux_warpification_description: "Обёртка tmux ssh работает во многих ситуациях, где стандартная не работает, но может потребовать нажатия кнопки для warpify. Вступает в силу в новых вкладках."
519-
settings.warpify:
520519
warp_drive: "Warp Drive"
521-
warp_agent: "Warp Agent"
520+
warp_agent: "Warp Агент"
522521
profiles: "Профили"
523522
mcp_servers_lower: "Серверы MCP"
524523
mcp_servers_page:
@@ -569,6 +568,7 @@ ru:
569568
deleting: "Удаление..."
570569
copy_link: "Копировать ссылку"
571570
settings.code_page:
571+
code: "Код"
572572
initialization_settings_header: "Настройки инициализации"
573573
codebase_indexing_label: "Индексация кодовой базы"
574574
codebase_index_description: "Warp может автоматически индексировать репозитории кода по мере навигации по ним, помогая агентам быстро понимать контекст и предлагать решения. Код никогда не хранится на сервере. Если кодовую базу невозможно проиндексировать, Warp всё равно может ориентироваться в ней и получать информацию с помощью grep и вызовов инструмента find."
@@ -623,7 +623,7 @@ ru:
623623
terminal_input: "Ввод в терминале"
624624
terminal: "Терминал"
625625
notifications: "Уведомления"
626-
workflows: "Workflows"
626+
workflows: "Рабочие процессы"
627627
system: "Система"
628628

629629
settings.keybindings:
@@ -896,6 +896,8 @@ ru:
896896
auto_spawn_servers: "Автозапуск серверов от сторонних агентов"
897897
show_model_picker_in_prompt: "Показывать выбор модели в подсказке"
898898
show_conversation_history: "Показывать историю разговоров в панели инструментов"
899+
enable_builtin_feedback_skill: "Включить встроенный навык обратной связи"
900+
feedback_bundled_skill_description: "Позволяет Oz использовать встроенный навык Warp для превращения отзывов о продукте в задачи на GitHub."
899901
agent_thinking_display: "Отображение размышлений агента"
900902
preferred_layout_open_conversation: "Предпочитаемый макет при открытии существующих разговоров"
901903

@@ -1096,7 +1098,7 @@ ru:
10961098
contribute_title: "Внести вклад"
10971099
contribute_description: "Клиентский код Warp теперь открыт. Начните с использования навыка /feedback, чтобы создать задачу, и следуйте руководству по внесению вклада здесь."
10981100
contribute_link_text: "здесь"
1099-
oad_title: "Open Automated Development"
1101+
oad_title: "Открытая автоматизированная разработка"
11001102
oad_description: "Репозиторий Warp управляется agent-first подходом на базе Oz, нашей облачной платформы оркестрации агентов."
11011103
oz_link_text: "Oz"
11021104
auto_open_weights_title: "Представляем 'auto (open-weights)'"
@@ -1297,7 +1299,7 @@ ru:
12971299

12981300
# ── Настройки «О программе» ──
12991301
settings.about:
1300-
copyright: "Copyright 2026 Warp"
1302+
copyright: "© Warp, 2026"
13011303

13021304
# ── Code Review ──
13031305
codereview:
@@ -1333,9 +1335,9 @@ ru:
13331335
commit: "Коммит"
13341336
no_changes_to_commit: "Нет изменений для коммита"
13351337
no_git_actions: "Нет доступных git-действий"
1336-
push: "Push"
1338+
push: "Запушить"
13371339
create_pr: "Создать PR"
1338-
pr_number: "PR #{number}"
1340+
pr_number: "PR {number}"
13391341
refreshing_pr_info: "Обновление информации о PR"
13401342
publish: "Опубликовать"
13411343
add_diff_set_context: "Добавить набор диффов как контекст"
@@ -1555,14 +1557,15 @@ ru:
15551557
environment: "Окружение"
15561558
created_by: "Создатель"
15571559
none: "Нет"
1558-
pull_request: "Pull Request"
1560+
pull_request: "Пул-реквест"
15591561
plan: "План"
15601562
screenshot: "Скриншот"
15611563
file: "Файл"
15621564
last_24_hours: "Последние 24 часа"
15631565
past_3_days: "Последние 3 дня"
15641566
last_week: "Последняя неделя"
15651567
all.tooltip: "Просмотр ваших задач агентов и всех общих задач команды"
1568+
personal: "Личные"
15661569
personal.tooltip: "Просмотр задач агентов, созданных вами"
15671570
personal: "Личные"
15681571
get_started: "Начать"

0 commit comments

Comments
 (0)