Skip to content

feat: add Arabic localization support for editor, launch, settings, s…#529

Merged
siddharthvaddem merged 5 commits intosiddharthvaddem:mainfrom
i1Zeus:arabic-support
May 6, 2026
Merged

feat: add Arabic localization support for editor, launch, settings, s…#529
siddharthvaddem merged 5 commits intosiddharthvaddem:mainfrom
i1Zeus:arabic-support

Conversation

@i1Zeus
Copy link
Copy Markdown
Contributor

@i1Zeus i1Zeus commented May 3, 2026

Description

Adds Arabic (ar) localization support across the application, including translations for shortcuts, timeline, common, and dialogs modules.

Motivation

The application previously lacked support for Arabic-speaking users. This change introduces full Arabic localization to improve accessibility and usability for a broader audience, particularly right-to-left (RTL) language users.

Type of Change

  • New Feature
  • Bug Fix
  • Refactor / Code Cleanup
  • Documentation Update
  • Other (please specify)

Testing

To verify the changes:

  1. Start the application:

    npm install
    npm run dev
  2. Switch language to Arabic:

    • Via settings (if supported), or
    • Manually set locale to ar
  3. Validate:

    • All UI strings in shortcuts, timeline, common, and dialogs are translated
    • Layout behaves correctly in RTL direction
    • No missing keys or fallback to default language

Checklist

  • I have performed a self-review of my code.
  • I have added any necessary screenshots or videos.
  • I have linked related issue(s) and updated the changelog if applicable.

Thank you for contributing!

Summary by CodeRabbit

  • New Features
    • Full Arabic language support across the app (UI strings for recording, editor, launch, dialogs, settings, shortcuts, timeline, playback, and file dialogs).
  • Refactor
    • Cursor highlight/settings UI now use localized strings so toggles, labels, and accessibility prompts display translations.
  • New Features
    • English settings expanded with cursor highlight controls and explicit on/off states for select effects.

…hortcuts, timeline, common, and dialogs modules
@i1Zeus i1Zeus requested a review from siddharthvaddem as a code owner May 3, 2026 16:53
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 3, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds full Arabic localization (seven new locale JSON files), registers "ar" in frontend and Electron i18n, localizes several main-process menu/tray labels, and replaces hardcoded cursor-highlight UI strings in SettingsPanel with i18n lookups; English settings.json adds matching cursorHighlight keys.

Changes

Arabic localization bundle

Layer / File(s) Summary
Data Shape / New Resources
src/i18n/locales/ar/common.json, src/i18n/locales/ar/dialogs.json, src/i18n/locales/ar/editor.json, src/i18n/locales/ar/launch.json, src/i18n/locales/ar/settings.json, src/i18n/locales/ar/shortcuts.json, src/i18n/locales/ar/timeline.json
Adds seven Arabic locale JSON files covering common UI labels, dialogs, editor messages, launch UI, settings, keyboard shortcuts, and timeline strings; includes parameterized placeholders (e.g., {{error}}, {{count}}, {{source}}).
Electron wiring
electron/i18n.ts
Imports Arabic JSONs, extends Locale union with "ar", registers ar in the messages map, and permits "ar" in setMainLocale.
Main-process UI labels
electron/main.ts
Replaces several menu/tray hardcoded or role-only labels with localized mainT(...) lookups (app menu items, File/Edit/View/Window menu labels, and tray recording tooltip).
English reference strings
src/i18n/locales/en/common.json
Extends actions with new keys used by main-process menus/tray (undo/redo/cut/copy/paste/selectAll/minimize/reload/forceReload/toggleDevTools/actualSize/zoomIn/zoomOut/toggleFullScreen/recordingStatus/about/services/hide/hideOthers/unhide).
Supported locales
src/i18n/config.ts
Adds "ar" to SUPPORTED_LOCALES.

Cursor highlight i18n wiring

Layer / File(s) Summary
Core UI change
src/components/video-editor/SettingsPanel.tsx
Replaces hardcoded cursor-highlight labels, toggle text, style labels, and size/offset/color labels with t(...) lookups (effects.cursorHighlight.*, effects.on/effects.off); accessibility-denied toast now uses translated title/description. Behavior and handlers unchanged.
English locale addition
src/i18n/locales/en/settings.json
Adds effects.on and effects.cursorHighlight section (title, style labels, size, onlyOnClicks, color, offsetX/offsetY, accessibility permission strings).
Locale resource
src/i18n/locales/ar/settings.json
Provides Arabic translations for the same cursorHighlight keys as part of the larger settings file.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • siddharthvaddem

Poem

arabic strings slip in, right-to-left and neat
JSONs hum translations, menus learn to speak
cursor labels swapped for t(...) — tidy, not cursed
electron now says "ar" — routing rehearsed
small patch, big reach ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change—adding Arabic localization support—and is clear and specific, though slightly truncated mid-word.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description check ✅ Passed PR description covers purpose, motivation, type of change, and testing steps well. However, it's missing screenshots/videos and hasn't linked related issues or changelog updates.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 679e306d31

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/i18n/locales/ar/common.json
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/i18n/locales/ar/common.json`:
- Line 3: The Arabic UI strings need standard spelling updates: replace the
value for the "cancel" key with the standard form "إلغاء", and similarly update
the other non-standard entries referenced in the comment (e.g., change "اغلاق"
to "إغلاق", "ايقاف" to "إيقاف", and "عربي" to "العربية") so all UI copy in
common.json uses the correct diacritics/hamza forms; locate these keys
("cancel", "close", "stop", "arabic" or their equivalents) in the same JSON and
update their string values accordingly to the standard Arabic spellings.

In `@src/i18n/locales/ar/dialogs.json`:
- Around line 59-60: The Arabic labels for file-save dialogs use "المصدر" which
is misleading; update the translation values for the keys "saveGif" and
"saveVideo" in dialogs.json to a neutral/exported-file wording (e.g., change
"حفظ GIF المصدر" → "حفظ ملف GIF" and "حفظ الفيديو المصدر" → "حفظ ملف الفيديو")
and ensure these match the intent/terminology used by other locales for
post-export save dialogs.

In `@src/i18n/locales/ar/editor.json`:
- Line 20: The translation key failedToSaveExportedVideo currently uses wording
that translates to “source video”; update the Arabic string for
failedToSaveExportedVideo in editor.json so it correctly refers to the exported
video (i.e., change the value to the Arabic phrase meaning “failed to save
exported video”) while keeping the key name unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ca567bdc-4840-46f8-bd52-f87476816c76

📥 Commits

Reviewing files that changed from the base of the PR and between 78f5797 and 679e306.

📒 Files selected for processing (7)
  • src/i18n/locales/ar/common.json
  • src/i18n/locales/ar/dialogs.json
  • src/i18n/locales/ar/editor.json
  • src/i18n/locales/ar/launch.json
  • src/i18n/locales/ar/settings.json
  • src/i18n/locales/ar/shortcuts.json
  • src/i18n/locales/ar/timeline.json

Comment thread src/i18n/locales/ar/common.json
Comment thread src/i18n/locales/ar/dialogs.json
Comment thread src/i18n/locales/ar/editor.json Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/components/video-editor/SettingsPanel.tsx (1)

1078-1100: ⚠️ Potential issue | 🟠 Major

Don't enable the toggle unless the permission request actually succeeds.

The code currently shows a denial toast but still falls through and calls onCursorHighlightChange with onlyOnClicks: true, leaving the UI claiming the feature works when it can't. Also, the direct window.electronAPI.requestAccessibilityAccess() call should be guarded—other parts of the codebase show the pattern either doesn't exist in non-Electron environments or fails silently.

🔧 Suggested fix
-													const result = await window.electronAPI.requestAccessibilityAccess();
-													if (!result.granted) {
-														toast.message(
-															t("effects.cursorHighlight.accessibilityPermissionTitle"),
-															{
-																description: t(
-																	"effects.cursorHighlight.accessibilityPermissionDescription",
-																),
-															},
-														);
-													}
+													const result =
+														await window.electronAPI?.requestAccessibilityAccess?.();
+													if (!result?.granted) {
+														toast.message(
+															t("effects.cursorHighlight.accessibilityPermissionTitle"),
+															{
+																description: t(
+																	"effects.cursorHighlight.accessibilityPermissionDescription",
+																),
+															},
+														);
+														return;
+													}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/video-editor/SettingsPanel.tsx` around lines 1078 - 1100, The
toggle currently flips UI state regardless of whether the accessibility
permission was granted; update the onClick handler so it first checks that the
Electron API exists (e.g., typeof window !== "undefined" && window.electronAPI
&& typeof window.electronAPI.requestAccessibilityAccess === "function"), then
when turningOn call requestAccessibilityAccess() inside try/catch and if
result.granted is false (or the call throws) show the toast and DO NOT call
onCursorHighlightChange; only call onCursorHighlightChange({...cursorHighlight,
onlyOnClicks: turningOn}) when either turningOff (no permission needed) or
turningOn and result.granted is true, keeping references to cursorHighlight and
onCursorHighlightChange intact.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/i18n/locales/ar/settings.json`:
- Around line 173-176: The Arabic locale's Google Fonts helper text (keys
dialogTitle, urlLabel, urlPlaceholder, urlHelp) still contains the English
phrase "Get font"; update the urlHelp value to fully Arabic text (e.g., replace
'Get font' with 'الحصول على الخط' or 'احصل على الخط') so the entire helper
string is localized and reads naturally in Arabic.

---

Outside diff comments:
In `@src/components/video-editor/SettingsPanel.tsx`:
- Around line 1078-1100: The toggle currently flips UI state regardless of
whether the accessibility permission was granted; update the onClick handler so
it first checks that the Electron API exists (e.g., typeof window !==
"undefined" && window.electronAPI && typeof
window.electronAPI.requestAccessibilityAccess === "function"), then when
turningOn call requestAccessibilityAccess() inside try/catch and if
result.granted is false (or the call throws) show the toast and DO NOT call
onCursorHighlightChange; only call onCursorHighlightChange({...cursorHighlight,
onlyOnClicks: turningOn}) when either turningOff (no permission needed) or
turningOn and result.granted is true, keeping references to cursorHighlight and
onCursorHighlightChange intact.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: acc4dcc7-1617-4617-8f73-fd12093180e5

📥 Commits

Reviewing files that changed from the base of the PR and between 679e306 and b5d37c4.

📒 Files selected for processing (4)
  • src/components/video-editor/SettingsPanel.tsx
  • src/i18n/locales/ar/editor.json
  • src/i18n/locales/ar/settings.json
  • src/i18n/locales/en/settings.json
✅ Files skipped from review due to trivial changes (1)
  • src/i18n/locales/ar/editor.json

Comment thread src/i18n/locales/ar/settings.json Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
electron/i18n.ts (1)

23-52: ⚠️ Potential issue | 🟠 Major

locale registry mismatch will cause inconsistent Arabic support across the app.

Arabic translations are fully implemented and wired in electron/i18n.ts, but src/i18n/config.ts still doesn't list "ar" in SUPPORTED_LOCALES. this creates a pretty kinda cursed situation: the UI dropdowns will show Arabic via the dynamic availableLocales, but the test coverage won't validate Arabic strings (only iterates SUPPORTED_LOCALES), and anything keying off the config list might reject it.

plus there's now three separate copies of the locale list floating around — the electron hardcoded allow-list, the config constant, and the dynamic loader — all prone to drift.

consolidate to one source of truth. at minimum, add "ar" to SUPPORTED_LOCALES in src/i18n/config.ts and update the test's dialogsByLocale mapping to include Arabic, so it actually gets validated.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@electron/i18n.ts` around lines 23 - 52, The codebase has an inconsistent
locale registry: although electron/i18n.ts defines Locale including "ar" and
wires Arabic messages (messages, Locale, setMainLocale), src/i18n/config.ts’s
SUPPORTED_LOCALES and the test mapping (dialogsByLocale) are missing "ar";
update src/i18n/config.ts to include "ar" in SUPPORTED_LOCALES and add the
Arabic entry to the test’s dialogsByLocale mapping so Arabic strings are
validated, and preferably centralize the canonical locale list by exporting a
single SUPPORTED_LOCALES (or Locale array) used by electron/i18n.ts,
src/i18n/config.ts and tests to avoid drift.
🧹 Nitpick comments (1)
electron/i18n.ts (1)

41-52: ⚡ Quick win

nit: derive the allow-list instead of repeating it.

setMainLocale() is already duplicating the locale list, which makes drift like this easy to ship again. Pulling this from a shared locale source would keep future additions from getting kinda cursed.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@electron/i18n.ts` around lines 41 - 52, The setMainLocale function duplicates
the hard-coded allow-list; instead import or reference the shared locale list
(e.g., the central locales constant/array used elsewhere) and derive the
allow-list from that source rather than repeating values. Update setMainLocale
to check membership against the shared locale array (or export a derived Set) so
additions are centralized (refer to the setMainLocale function name and the
shared locales constant used across the app) and remove the inline repeated
strings.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@electron/i18n.ts`:
- Around line 23-52: The codebase has an inconsistent locale registry: although
electron/i18n.ts defines Locale including "ar" and wires Arabic messages
(messages, Locale, setMainLocale), src/i18n/config.ts’s SUPPORTED_LOCALES and
the test mapping (dialogsByLocale) are missing "ar"; update src/i18n/config.ts
to include "ar" in SUPPORTED_LOCALES and add the Arabic entry to the test’s
dialogsByLocale mapping so Arabic strings are validated, and preferably
centralize the canonical locale list by exporting a single SUPPORTED_LOCALES (or
Locale array) used by electron/i18n.ts, src/i18n/config.ts and tests to avoid
drift.

---

Nitpick comments:
In `@electron/i18n.ts`:
- Around line 41-52: The setMainLocale function duplicates the hard-coded
allow-list; instead import or reference the shared locale list (e.g., the
central locales constant/array used elsewhere) and derive the allow-list from
that source rather than repeating values. Update setMainLocale to check
membership against the shared locale array (or export a derived Set) so
additions are centralized (refer to the setMainLocale function name and the
shared locales constant used across the app) and remove the inline repeated
strings.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 7229be87-f7fc-4ab7-b80e-b5dbe4e50180

📥 Commits

Reviewing files that changed from the base of the PR and between b5d37c4 and bb30e20.

📒 Files selected for processing (1)
  • electron/i18n.ts

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
electron/main.ts (2)

127-150: 💤 Low value

|| fallbacks are dead for missing keys — only fire on empty-string translations

mainT (from electron/i18n.ts) always returns a non-empty string: it falls back to English, and if that's also absent it returns "namespace.key" — never falsy. So mainT("common", "actions.about") || "About OpenScreen" only actually uses the right-hand side when a locale file contains an empty string for the key, not when the key is outright missing.

This isn't a breakage, but the pattern reads like a "missing-key guard" when it isn't — could mislead future maintainers into thinking the hardcoded string is the real safety net.

Consider dropping the || fallbacks entirely (since mainT's own "namespace.key" sentinel is the actual fallback), or at least add a comment making the intent clear. The latter also makes it easier to grep for un-translated keys.

♻️ Example cleanup for one entry
-{ role: "about", label: mainT("common", "actions.about") || "About OpenScreen" },
+{ role: "about", label: mainT("common", "actions.about") },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@electron/main.ts` around lines 127 - 150, The menu label fallbacks using "||"
are misleading because mainT always returns a non-empty string (it falls back to
English or the "namespace.key" sentinel); update the menu entries that use
constructs like label: mainT("common", "actions.about") || "About OpenScreen" to
remove the dead "||" fallback and instead rely on mainT directly (e.g., label:
mainT("common", "actions.about")), or if you prefer to keep the literal for
discoverability add a concise comment next to each use explaining that mainT
guarantees a non-empty fallback (reference mainT in electron/i18n.ts and the
menu label occurrences such as the "about", "services", "hide", "hideOthers",
"unhide", and "quit" entries).

238-256: 💤 Low value

macOS zoom and front roles missing label — Arabic users see English Electron defaults

Every other item in this Window submenu was given a mainT label, but { role: "zoom" } (line 243) and { role: "front" } (line 245) were skipped. Electron falls back to its hardcoded English strings for these, so Arabic users will see "Zoom" and "Bring All to Front" instead of localized text.

♻️ Proposed fix
-{ role: "zoom" },
+{ role: "zoom", label: mainT("common", "actions.zoom") || "Zoom" },
 { type: "separator" },
-{ role: "front" },
+{ role: "front", label: mainT("common", "actions.front") || "Bring All to Front" },

(You'll also need to add actions.zoom and actions.front keys to both en/common.json and ar/common.json.)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@electron/main.ts` around lines 238 - 256, The Window submenu entries for role
"zoom" and role "front" are missing translated labels; update the array entries
that currently use { role: "zoom" } and { role: "front" } to include label:
mainT("common", "actions.zoom") || "Zoom" and label: mainT("common",
"actions.front") || "Bring All to Front" respectively so they follow the same
pattern as other items (use the existing mainT helper); also add corresponding
keys "actions.zoom" and "actions.front" to both en/common.json and
ar/common.json with appropriate translations.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@electron/main.ts`:
- Around line 287-289: trayToolTip uses mainT(...) without the usual fallback,
so if the translation key is missing users may see an empty string or the key;
update the trayToolTip assignment (the trayToolTip constant where recording ?
mainT("common", "actions.recordingStatus", { source: selectedSourceName }) :
"OpenScreen") to append a fallback after mainT (e.g., || "Recording: {source}"
or a suitable literal like the other mainT fallbacks), ensuring the
placeholder/source is preserved when recording is true.

---

Nitpick comments:
In `@electron/main.ts`:
- Around line 127-150: The menu label fallbacks using "||" are misleading
because mainT always returns a non-empty string (it falls back to English or the
"namespace.key" sentinel); update the menu entries that use constructs like
label: mainT("common", "actions.about") || "About OpenScreen" to remove the dead
"||" fallback and instead rely on mainT directly (e.g., label: mainT("common",
"actions.about")), or if you prefer to keep the literal for discoverability add
a concise comment next to each use explaining that mainT guarantees a non-empty
fallback (reference mainT in electron/i18n.ts and the menu label occurrences
such as the "about", "services", "hide", "hideOthers", "unhide", and "quit"
entries).
- Around line 238-256: The Window submenu entries for role "zoom" and role
"front" are missing translated labels; update the array entries that currently
use { role: "zoom" } and { role: "front" } to include label: mainT("common",
"actions.zoom") || "Zoom" and label: mainT("common", "actions.front") || "Bring
All to Front" respectively so they follow the same pattern as other items (use
the existing mainT helper); also add corresponding keys "actions.zoom" and
"actions.front" to both en/common.json and ar/common.json with appropriate
translations.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 17df72cf-4bc4-4065-aa09-74da71595023

📥 Commits

Reviewing files that changed from the base of the PR and between bb30e20 and 59ecedb.

📒 Files selected for processing (3)
  • electron/main.ts
  • src/i18n/locales/ar/common.json
  • src/i18n/locales/en/common.json
✅ Files skipped from review due to trivial changes (2)
  • src/i18n/locales/en/common.json
  • src/i18n/locales/ar/common.json

Comment thread electron/main.ts
@i1Zeus
Copy link
Copy Markdown
Contributor Author

i1Zeus commented May 3, 2026

hello @siddharthvaddem I've added AR to the app and I have to help, few other things translated like the main app nav they didn't have any translation previously:
image

I loved the app the first time I used it so as a friend in web development and my little experience I had to do these changes so that the app can grow more in the Arabic area + there are few to none apps that actually support AR.

Happy to help and please if there is anything let me now.

I'll be contributing more to the app too.

@i1Zeus i1Zeus mentioned this pull request May 4, 2026
1 task
@siddharthvaddem siddharthvaddem merged commit b6af435 into siddharthvaddem:main May 6, 2026
13 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