Skip to content

[Feature]: Spanish and Portuguese language #218

Open

Description

@rushwhq

User problem

Hi!

Proposed behavior

Can i help to translate manually (Not ai or translator) to spanish and portuguese?

Related scrcpy option or documentation

No response

Activity

  1. SimonAKing commented on Sep 14, 2026

    @SimonAKing
    Owner

    Yes, please — that would be very welcome, and hand-written translations are exactly what this needs. Thanks for offering.

    Here is everything you need to add a language.

    Where the strings live

    src/renderer/i18n.ts holds one flat table per locale. en is the reference with 177 keys. Add a new block next to the existing ones and register it in the messages map at the bottom of the file:

    const es: Record<string, string> = {
      appTitle: '...',
      // ...
    }
    
    const messages: Record<Locale, Record<string, string>> = { en, 'zh-CN': zhCN, 'zh-TW': zhTW, ru, es }

    Translate only the values and keep every key exactly as it appears in en.

    You do not need all 177 keys to start. translate() falls back to the English string key by key, so a partial translation ships safely and can grow over time. For reference, the existing zh-TW block has 27 keys and ru has 37. Feel free to send whatever subset you are confident about.

    The four other places a locale has to be registered

    • src/shared/types.ts — add the code to the Locale union (around line 463).
    • src/main/configRepository.ts — add the code to the locales set (around line 29), otherwise a saved config with the new language is rejected.
    • src/renderer/AppV2.vue — detectedLocale() (around line 78) for system-language auto-detection, and the language <select> in the header (around line 1447). Please use the native name in the picker, matching English / 简体中文 / Русский.
    • README.md and README.zh_CN.md — the interface-languages line (line 51 in both), plus a CHANGELOG.md entry under ## Unreleased.

    One thing to decide

    For Portuguese, let me know whether you are translating Brazilian or European Portuguese. The project uses plain codes when there is no regional split (en, ru) and region-qualified codes when there is (zh-CN, zh-TW), so it would be pt-BR or pt-PT if you want to be specific, or just pt if one variant is meant to serve both.

    Verifying it locally

    npm ci
    npm run dev          # switch language with the picker in the top-right corner
    npm test
    npm run typecheck

    Separate pull requests for Spanish and Portuguese are easier to review, but one combined PR is fine too. CONTRIBUTING.md covers the rest of the workflow. Ask here if anything in the string table is ambiguous — some keys are terse and the surrounding UI context matters.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions