Skip to content

Localize Hinge into 17 languages with a language picker - #26

Merged
pulkitxm merged 5 commits into
Noveum:mainfrom
ReffWu:localization
Sep 15, 2026
Merged

pulkitxm merged 5 commits into
Noveum:mainfrom
ReffWu:localization

Conversation

@ReffWu

@ReffWu ReffWu commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Add 17 languages including Hindi in Resources/Localizations, detect and save the system language on first launch, and allow manual language selection in Settings.

Summary by CodeRabbit

  • New Features

    • Added localized interface support for English, Arabic, German, Spanish, French, Hindi, Italian, Japanese, Korean, Dutch, Polish, Portuguese (Brazil), Russian, Turkish, Vietnamese, and Simplified and Traditional Chinese.
    • Added a language selector under Settings > Controls > Language, with relaunch support.
    • Added localized status messages, instructions, alerts, and error messages.
    • Replaced the effect-strength “Default” text button with a reset icon.
  • Documentation

    • Documented supported languages and translation guidelines.

Every string people see, from the main screen, Settings and the menu to
error messages, now goes through a string catalog with translations for
Simplified and Traditional Chinese, Japanese, Korean, German, French,
Spanish, Italian, Brazilian Portuguese, Russian, Dutch, Turkish, Polish,
Arabic and Vietnamese. Terms follow the names macOS uses in each
language, such as Screen Recording and Login Items. Percentages and the
open angle use the system's number formatting.

Hinge follows the system language by default. Settings > Controls >
Language picks another one for Hinge alone and offers to relaunch. The
Default button next to the strength slider became a reset icon with a
tooltip, so longer translations of the row fit. The Makefile compiles the
catalog with xcstringstool, the Xcode project lists it as a resource,
and the policy check treats .xcstrings files as JSON.
@vercel

vercel Bot commented Sep 11, 2026

Copy link
Copy Markdown

@ReffWu is attempting to deploy a commit to the MagicAPI Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Sep 11, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 8707d658-4a56-455e-b1e9-5f1e3e625e6d

📥 Commits

Reviewing files that changed from the base of the PR and between 43b03d0 and fd958b5.

📒 Files selected for processing (27)
  • Hinge.xcodeproj/project.pbxproj
  • Info.plist
  • Makefile
  • README.md
  • Resources/Localizations/ar.lproj/Localizable.strings
  • Resources/Localizations/de.lproj/Localizable.strings
  • Resources/Localizations/en.lproj/Localizable.strings
  • Resources/Localizations/es.lproj/Localizable.strings
  • Resources/Localizations/fr.lproj/Localizable.strings
  • Resources/Localizations/hi.lproj/Localizable.strings
  • Resources/Localizations/it.lproj/Localizable.strings
  • Resources/Localizations/ja.lproj/Localizable.strings
  • Resources/Localizations/ko.lproj/Localizable.strings
  • Resources/Localizations/nl.lproj/Localizable.strings
  • Resources/Localizations/pl.lproj/Localizable.strings
  • Resources/Localizations/pt-BR.lproj/Localizable.strings
  • Resources/Localizations/ru.lproj/Localizable.strings
  • Resources/Localizations/tr.lproj/Localizable.strings
  • Resources/Localizations/vi.lproj/Localizable.strings
  • Resources/Localizations/zh-Hans.lproj/Localizable.strings
  • Resources/Localizations/zh-Hant.lproj/Localizable.strings
  • Sources/DesktopRenderer.swift
  • Sources/HingeApp.swift
  • Sources/LiveDesktop.swift
  • Sources/MainView.swift
  • Sources/SettingsView.swift
  • scripts/check.py

📝 Walkthrough

Walkthrough

The application adds 17 localized string tables, packages them in the app bundle, localizes user-facing messages, and adds persisted language selection with relaunch support. The README and validation script document and check the localization files.

Changes

Localization support

Layer / File(s) Summary
Bundle localization resources
Hinge.xcodeproj/project.pbxproj, Info.plist, Makefile, Resources/Localizations/*
The project packages 17 .lproj resources. Bundle metadata declares the supported languages, and the build copies localized directories into the app resources.
Runtime string localization
Sources/DesktopRenderer.swift, Sources/HingeApp.swift, Sources/LiveDesktop.swift, Sources/MainView.swift
Renderer, menu, view, status, permission, sensor, and error messages now use String(localized:).
Language selection and persistence
Sources/SettingsView.swift, Sources/HingeApp.swift
Settings adds a language picker and relaunch control. AppLanguage detects, persists, names, and applies language choices.
Localization documentation and validation
README.md, scripts/check.py
The README documents supported languages and .strings file rules. The checker lints .strings files with plutil.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant SettingsView
  participant AppLanguage
  participant UserDefaults
  participant HingeApp
  SettingsView->>AppLanguage: choose selected language
  AppLanguage->>UserDefaults: save AppleLanguages
  SettingsView->>AppLanguage: request relaunch
  AppLanguage->>HingeApp: reopen application
  HingeApp->>AppLanguage: initialize language at launch
Loading
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@pulkitxm pulkitxm changed the title Localize Hinge into 16 languages and add a language picker Localize Hinge into 17 languages with a language picker Sep 15, 2026
@pulkitxm
pulkitxm merged commit a9fd639 into Noveum:main Sep 15, 2026
1 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants