I18n#11382
Conversation
|
Thank you for your pull request and welcome to our community. We could not parse the GitHub identity of the following contributors: Dmitry.
|
|
This PR is not linked to an issue that is marked with Issue-state enforcement details:
To continue, link this PR to a same-repo issue such as Powered by Oz |
There was a problem hiding this comment.
This PR is not linked to an issue that is marked with ready-to-implement.
Issue-state enforcement details:
-
Associated same-repo issues checked: none
-
Required readiness label:
ready-to-implement
To continue, link this PR to a same-repo issue such as Closes #123 in the PR description, and make sure that issue has ready-to-implement.
Powered by Oz
|
Oh wow — I just noticed there are already several i18n PRs open (#10630, #10990, #9458, #9922). I should have checked first before opening mine. My apologies for the noise!
|
|
Thank you for your pull request and welcome to our community. We could not parse the GitHub identity of the following contributors: Dmitry.
|
2 similar comments
|
Thank you for your pull request and welcome to our community. We could not parse the GitHub identity of the following contributors: Dmitry.
|
|
Thank you for your pull request and welcome to our community. We could not parse the GitHub identity of the following contributors: Dmitry.
|
|
Update:** I've rewritten this PR to match @ZacharyZcR's YAML approach from #10630 / #10990:
|
|
@cla-bot check |
|
The cla-bot has been summoned, and re-checked this pull request! |
|
@oss-maintainers This PR now follows the same YAML-based approach as #10630 / #10990 by @ZacharyZcR — matching It's blocked by the issue-state enforcement check (needs a Russian Cheers, |
|
Hello! Maybe we can collaborate on a project! You can reach out to the Warp Slack channel. |
|
@ZacharyZcR Thanks for reaching out! Happy to collaborate. We've matched your YAML approach — We have some merge conflicts with master to fix first (3 files). Will resolve those and update the PR. How can we help with #10630? Happy to contribute Russian translations in your format, or collaborate however makes sense. Cheers, |
Thank you very much! Perhaps we could reach out to Warp’s Slack channel together and let them decide how to proceed with development. Also, your PR needs to be linked to an issue with a specific tag; you can take a look at my PR and issue. |
|
@ZacharyZcR Just to clarify — I don't speak English myself, I'm communicating through DeepSeek AI (which also built this PR). So I'm a bit nervous about posting in the Slack channel directly — I don't want to say something wrong. If you could mention me (@ErshovDmitry) in the #oss-contributors Slack channel, I'd be happy to help! My AI assistant can handle the technical discussion, just need someone to bridge the intro. Also — merge conflicts with master are now resolved. PR is clean: 0 warnings, 1191 i18n calls, 59 files covered. Cheers, |
|
Ah, just realized — Slack doesn't work in Russia, and VPN isn't straightforward either. So I won't be able to join the Slack channel, sorry about that. But I'm still here on GitHub and happy to collaborate! We can discuss anything here or on the PRs directly. Dmitry (via DeepSeek) |
Oh, no problem—I’m not an English major either. |
|
Status update — synced with upstream master, squashed to 1 commit. @ZacharyZcR — our @oss-maintainers — this PR is merge-ready following the same YAML approach as #10630. Would appreciate a |
- Sync with origin/master (28 commits behind) - Restore i18n crate, menu_label(), init_locale() - Re-apply menu_label() to ai_page, features_page, agent_management, workspace/view, workspace/mod, local_code_editor - Convert 11 const strings to fn() -> &'static str for runtime i18n - Add 4 menu_label tests in app/src/lib.rs - 0 errors, 0 warnings (cargo check -p warp) - 11/11 tests pass (cargo test -p i18n)
|
Status update — synced with upstream master (June 1, 2026) Changes since last update:
@oss-maintainers — PR is merge-ready. Would appreciate cc @ZacharyZcR |
|
Status update — synced with upstream master (June 6, 2026) Changes since last update:
@oss-maintainers — PR is merge-ready following the same YAML approach as #10630. Would appreciate cc @ZacharyZcR |
…wraps, 2 inline) - workspace.tab_group.* (13 keys) — view.rs:tab_group_menu_items - workspace.tab_grouping.* (4 keys) — tab_grouping.rs + tab.rs inline - terminal.osc52.* (7 keys) — terminal/view.rs OSC 52 banner - MOVE_TO_GROUP_LABEL const retained as SavePosition anchor key (display text via menu_label() in 2 tab.rs callsites) - 24 keys added to en.yml + ru.yml (balance test passes) Plan: 9872d72d-ea99-4a7e-9972-2f86f8f59515 Review: 64adc82d-76f4-4662-8784-92ff159e021d (PASS, 0/0) Trace: 8a3fb5f8-9cac-47bc-9755-98056509002d Code map: 6 verified=true
|
Synced with upstream master (62 new commits, 2026-06-10, commit bdcf11c). 24 new i18n keys added (workspace.tab_group., workspace.tab_grouping., terminal.osc52.*), 24 menu_label() wraps, 2 inline wraps, en.yml/ru.yml balance test passes (11/11 i18n tests, cargo check 0 errors). This PR remains blocked on issue #1194 needing the Fully compatible with @ZacharyZcR's YAML approach (#10630 / #10990). Happy to adjust the PR description, split into smaller PRs, or coordinate however the team prefers. |
|
Hi @ErshovDmitry — a reviewer requested changes on this PR and it hasn't had activity from you in 7 days. When you get a chance, please push updates or reply to the review so a reviewer can take another look. Without activity, this PR will be automatically closed after 14 days of inactivity. |
# Conflicts: # app/src/workspace/view/tab_grouping.rs
…commits, 521 files)
Resolved conflicts: - mod.rs: i18n menu_label + master's InstallOz/UninstallOz enums - view.rs: merge imports (TAB_PIN_INDICATOR_ICON_SIZE), refactored handle_cli_command_result with i18n menu_label for Learn more cargo check: 0 warnings, cargo test -p i18n: 11/11
provider_keys_modal.rs: 7 strings (Add API key, OpenAI/Anthropic/Google labels, Cancel, Add keys, description) free_ai_removal_modal.rs: 7 strings (notice titles/bodies, bonus credits, prompt_suggestions texts, Bring your own AI, View pricing) en.yml + ru.yml: +22 keys each (provider_keys + free_ai_removal sections) cargo check: 0 warnings, cargo test -p i18n: 11/11, key balance OK
onboarding/Cargo.toml: added i18n dependency onboarding/src/lib.rs: added menu_label() helper ai_access_slide.rs: 14 strings wrapped ai_setup_slide.rs: 16 strings (12 UI + 4 feature checklist) en.yml + ru.yml: +33 keys each (onboarding.ai_access + onboarding.ai_setup) cargo check: 0 warnings, cargo test -p i18n: 11/11, key balance OK
|
Status update — synced with upstream master (June 23, 2026) Changes since last update (June 10):
@oss-maintainers — PR remains merge-ready following the same YAML approach as #10630. Would appreciate guidance on next steps. cc @ZacharyZcR |
…xecution_profile, platform, about, scripting)
…nt_form namespace)
Wrap user-visible English strings in 9 onboarding files via crate::menu_label:
- slides/intro_slide.rs (onboarding.intro.*, common.get_started)
- slides/third_party_slide.rs (onboarding.third_party.*, common.{back,next,enabled,disabled})
- slides/project_slide.rs (onboarding.project.*, common.{back,next,skip,get_warping})
- slides/customize_slide.rs (onboarding.customize.*, common.{back,next,enabled,disabled})
- slides/intention_slide.rs (onboarding.intention.*, common.{back,next,get_warping})
- slides/theme_picker_slide.rs (onboarding.theme_picker.*, common.{back,next,get_warping})
- slides/agent_slide.rs (onboarding.agent_slide.*, common.{back,next,recommended})
- slides/ai_setup_slide.rs (onboarding.ai_setup.* [wired from existing YAML], common.{back,next}; WARP_AGENT_FEATURES const -> warp_agent_features() fn)
- callout/view.rs (onboarding.callout.*, common.{next,skip,submit,finish}; format!() -> menu_label + placeholder .replace())
Reuses common.* for cross-slide UI labels (Back/Next/Enabled/Disabled/etc.).
ai_setup.* keys already present in en.yml; only code wiring added.
…s_page namespace) - Convert PAGE_TITLE_TEXT const to page_title_text() fn - Wrap 3 format! interpolations in handle_log_out + autoinstall_from_gallery with i18n::interpolate + crate::menu_label - Wrap 2 plain error-toast literals with crate::menu_label - Wrap search_terms() literal 7 sites wrapped. YAML keys already exist (no YAML edit needed). cargo check -p warp: clean
• Convert all team_page const strings (placeholders, button labels, instructions) to fn helpers using crate::menu_label() • Wrap inline literals: section headers (By link/email/discovery, Team members), success/error toasts, menu action labels, badge text, tooltip, pricing info • Use i18n::interpolate for format strings: team member count, member limit tooltip, teammate count, success/failure with counts • Display impl for TeamsInviteOption also wrapped • Settings teams.* namespace — fallback to English strings works without YAML updates
Wrap ~156 user-visible strings in app/src/settings_view/features_page.rs using crate::menu_label() with settings.features.* namespaced keys. Includes: - const→fn conversion for cfg_if! EXTRA_META_KEYS_* (Left/Right Option/Alt) - FixedBinding labels: Configure Global Hotkey, Make Warp the default terminal - 42 ToggleSettingActionPair command palette labels (toggle.* sub-namespace) - Pin to top/bottom/left/right dropdown items - Active Screen, After all/After current tab, Default (graphics backend) - Width %, Height %, Autohides on loss of keyboard focus - When a command takes longer than / seconds to complete - Keybinding label, Click to set global hotkey, Change keybinding - Press new keyboard shortcut - common.cancel / common.save for shared buttons - All render_body_item() labels for the ~50 widget renders - Dropdown items: Code editor line numbers, Ctrl+Tab behavior, etc. - Clipboard access (OSC 52) + tooltip, New tab placement - Default mode for new sessions, Global Workflows in Command Search - Linux selection clipboard + tooltip - Preferred graphics backend + Current backend interpolation - Wayland setting + description (with restart_for_changes concat) - Asynchronous find + tooltip - tab behavior keybinding info strings with i18n::interpolate() - block_maximum_rows_description() with 10M/1M interpolation - All changes wrapped inline without editing YAML files cargo check -p warp passes (0 errors in features_page.rs). DOES NOT touch telemetry PascalCase .to_string() action names.
Add 250 missing en+ru keys across 14 namespaces: codereview.git_dialog, common, onboarding, settings.*, terminal.share_block Plan→Review(×4)→Code cycle. All checks pass: cargo check 0e, cargo test 11/11, 0 collisions, 0 orphans, 0 missing 3 review fixes: toggle lowercase, billing_and_usage consistency
|
Thank you for your pull request and welcome to our community. We could not parse the GitHub identity of the following contributors: i18n-bot.
|
|
Status update — 2026-06-30 Full sync + wrap + YAML merge cycle completed: Upstream sync:
String wrapping (2 rounds):
YAML merge (Phase 2):
Build: ✅ green Remaining out of scope: ~108 appearance keys, 15 unwrapped files, 6 share_block fallback strings — will address in next iteration. |
What
Adds i18n (internationalization) support to Warp with Russian locale. Compatible with @ZacharyZcR's YAML approach (#10630 / #10990).
Architecture
crates/i18n/—t!()/t_required!()macros,TranslationLookup, locale switchingresources/bundled/locales/{en,ru}.yml— ~2000 keys each (100% Russian coverage)WARP_LANGenv var → system locale →enfallbackcrate::menu_label()helper — 481 call sites, returns&'static strCompatibility
Fully drop-in compatible with ZacharyZcR's YAML framework.
Status
Related