Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
215c7f4
New translations en.json (Portuguese)
elibosley Jul 22, 2026
fc5e6f1
New translations en.json (Portuguese, Brazilian)
elibosley Jul 22, 2026
d4cbd26
New translations en.json (Romanian)
elibosley Jul 23, 2026
8d2ce3e
New translations en.json (French)
elibosley Jul 23, 2026
5752434
New translations en.json (Spanish)
elibosley Jul 23, 2026
f37424a
New translations en.json (Arabic)
elibosley Jul 23, 2026
c6f6e46
New translations en.json (Catalan)
elibosley Jul 23, 2026
fd6d376
New translations en.json (Czech)
elibosley Jul 23, 2026
1b646a7
New translations en.json (Danish)
elibosley Jul 23, 2026
abebab2
New translations en.json (German)
elibosley Jul 23, 2026
f008f1c
New translations en.json (Hungarian)
elibosley Jul 23, 2026
b9e9d95
New translations en.json (Italian)
elibosley Jul 23, 2026
270e859
New translations en.json (Japanese)
elibosley Jul 23, 2026
f4874d7
New translations en.json (Korean)
elibosley Jul 23, 2026
c829870
New translations en.json (Dutch)
elibosley Jul 23, 2026
fa94323
New translations en.json (Norwegian)
elibosley Jul 23, 2026
4f9a821
New translations en.json (Polish)
elibosley Jul 23, 2026
03dc697
New translations en.json (Portuguese)
elibosley Jul 23, 2026
4eb1c59
New translations en.json (Russian)
elibosley Jul 23, 2026
7b8cf81
New translations en.json (Swedish)
elibosley Jul 23, 2026
5be7429
New translations en.json (Ukrainian)
elibosley Jul 23, 2026
310cfdf
New translations en.json (Chinese Simplified)
elibosley Jul 23, 2026
5f5a57b
New translations en.json (Portuguese, Brazilian)
elibosley Jul 23, 2026
f301e63
New translations en.json (Bengali)
elibosley Jul 23, 2026
ed7ecdf
New translations en.json (Croatian)
elibosley Jul 23, 2026
42784f0
New translations en.json (Latvian)
elibosley Jul 23, 2026
bf8c6f5
New translations en.json (Hindi)
elibosley Jul 23, 2026
2bceb15
New translations en.json (Hungarian)
elibosley Jul 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions web/src/locales/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "تم تحديث إعدادات API",
"downgradeOs.downgradeUnraidOs": "تخفيض نسخة نظام Unraid",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "الرجاء إنهاء التحديث المُبادر بتمكين عملية التخفيض.",
"headerArrayUsage.array": "المصفوفة",
"headerArrayUsage.offline": "غير متصل",
"headerArrayUsage.usedOfArray": "%{0} من المصفوفة مستخدم",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== files =="
git ls-files | rg '(^|/)locales/ar\.json$|(^|/)translation|react-intl|vue-i18n|formatMessage|messageformat|format-number|number-format|format-percent' || true

echo "== ar.json relevant lines =="
if [ -f web/src/locales/ar.json ]; then
  nl -ba web/src/locales/ar.json | sed -n '415,430p'
fi

echo "== i18n libraries/config =="
rg -n '"react-intl"|"vue-i18n"|`@formatjs`|formatMessage|formatNumber|format-percent|headerArrayUsage.usedOfArray|usedOfArray' . --glob '!node_modules/**' --glob '!dist/**' --glob '!build/**' | head -n 200

Repository: unraid/api

Length of output: 355


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== ar.json relevant lines =="
awk 'NR>=415 && NR<=430 { printf "%6d\t%s\n", NR, $0 }' web/src/locales/ar.json

echo "== i18n usage/usages =="
python3 - <<'PY'
from pathlib import Path
patterns = ['react-intl', 'vue-i18n', '`@formatjs`', 'formatMessage', 'formatNumber', 'format-percent', 'headerArrayUsage.usedOfArray', 'usedOfArray']
for p in patterns:
    print(f"\n--- {p} ---")
    for path in Path('.').rglob('*'):
        if any(part in {'node_modules','dist','build','.git'} for part in path.parts):
            continue
        if not path.is_file():
            continue
        try:
            text = path.read_text(errors='ignore')
        except Exception:
            continue
        if p in text:
            print(f"matches: {path}")
    print("(done)")
PY

echo "== package/locale metadata =="
for f in package.json web/package.json; do
  [ -f "$f" ] && python3 - <<'PY' "$f"
import json, sys
p=sys.argv[1]
data=json.load(open(p))
for sec in ('dependencies','devDependencies'):
    if sec in data:
        hits={k:v for k,v in data[sec].items() if any(s in k for s in ('react-intl','vue-i18n','formatjs','i18n'))}
        if hits:
            print(p, sec, hits)
PY
done

Repository: unraid/api

Length of output: 7682


🌐 Web query:

ICU NumberFormat percent symbol position Arabic numberFormat percent percentSignBeforeNumber locale

💡 Result:

In ICU (International Components for Unicode), the positioning of the percent sign (%) is locale-dependent and is determined by the locale's CLDR (Common Locale Data Repository) data [1][2]. For the Arabic locale (ar), the percent sign is conventionally placed after the number (when read in the direction of the script) to reflect correct linguistic and typographic standards [3][4][5]. Key points regarding ICU number formatting and the percent sign: 1. Locale-Driven Positioning: ICU automatically handles the placement of the percent sign based on the provided locale [6][7]. When you use a percent instance of NumberFormat (e.g., NumberFormat.getPercentInstance(new Locale("ar"))), ICU selects the correct pattern from the locale's data [4][2]. In the Arabic locale, this pattern is configured so the percent sign appears in the correct position for Right-to-Left (RTL) text rendering [3][4]. 2. CLDR Configuration: The specific pattern used for percentages is stored in the CLDR data for each locale [4][2]. For Arabic, the pattern is defined to ensure the percent sign (which may be the standard '%' or the Arabic-specific '٪') is placed appropriately relative to the digits [4][5]. 3. Handling Issues: If you encounter an issue where the percent sign appears at the "start" of the string (e.g., %100) instead of the "end" (100%), it is often due to how the resulting string is rendered in a UI component rather than the ICU formatting itself [3]. Because Arabic is an RTL language, the visual ordering is handled by the Bidi (bidirectional) algorithm [3][5]. Simply concatenating the percent sign to a number can bypass this logic, causing it to render incorrectly [3]. To ensure correct display, it is recommended to let ICU's NumberFormatter perform the full formatting of the number and the percent sign as a single unit [7]. 4. Numbering Systems: ICU also supports different numbering systems (e.g., Western digits vs. Arabic-Indic digits) [6][8][2]. You can specify the numbering system using the u-nu- extension (e.g., ar-u-nu-latn for Arabic language with Western digits) [2]. The percent sign's position remains consistent with the chosen locale's conventions regardless of the numbering system used [9]. There is no "percentSignBeforeNumber" configuration setting in the ICU API because the position is inherently defined by the locale's data for consistency and correctness [1][2]. If manual formatting is required, you should use the symbols provided by DecimalFormatSymbols for that specific locale to maintain accuracy [8][9].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
import pathlib, json
root = pathlib.Path('web')
for p in root.rglob('*.ts'):
    if any(part in {'node_modules','dist','build','.git'} for part in p.parts):
        continue
    text = p.read_text(errors='ignore')
    if 'percent' in text.lower() or 'formatNumber' in text or 'Number' in text:
        print(f"\n--- {p} ---")
        for i,line in enumerate(text.splitlines(),1):
            if any(s in line for s in ['percent','formatNumber','Number']):
                print(f"{i}: {line}")
PY

python3 - <<'PY'
from pathlib import Path
for p in ['web/src/plugins/i18n.ts','web/src/i18n.ts','web/src/helpers/i18n-loader.ts']:
    if Path(p).exists():
        print(f"\n--- {p} ---")
        for i,line in enumerate(Path(p).read_text(errors='ignore').splitlines(),1):
            print(f"{i}: {line}")
PY

echo "== Node Intl NumberFormat probe =="
node - <<'JS'
for (const digitSystem of ['latn','arab']) {
  for (const currency of ['USD','EUR']) {
    for (const display of ['currency', 'percent', 'decimal']) {
      console.log(`${display} ar-${digitSystem}`, new Intl.NumberFormat(`ar-${digitSystem}`, { style: display, currency }).format(50));
    }
  }
}
JS

Repository: unraid/api

Length of output: 11035


🌐 Web query:

CLDR Arabic percentage symbol after_number or before_number ICU ar.txt percent

💡 Result:

In the Unicode Common Locale Data Repository (CLDR) and the ICU (International Components for Unicode) library, the percentage format for the Arabic (ar) locale is defined with the percent symbol placed after the number [1][2]. The standard percent pattern for the Arabic locale is defined as #,##0% [1][2]. When rendered in a Right-to-Left (RTL) context, this pattern results in the percent symbol (the Arabic percent sign ٪) appearing to the left of the number [3]. Technical details: - Pattern: The CLDR pattern #,##0% instructs the formatter to place the percent sign adjacent to the number [4][5]. - Symbol: The Arabic locale uses the specific ARABIC PERCENT SIGN (U+066A, ٪) rather than the ASCII percent sign (%) [5][6]. - Behavior: Because Arabic is an RTL script, placing the sign "after" the number in the data pattern results in the symbol being displayed on the left side of the number visually [3]. While the CLDR data defines the default, implementations may vary depending on the specific rendering engine or if Western numerals (0-9) are used instead of Arabic-Indic digits [3]. However, the core library configuration in ar.txt maintains the #,##0% pattern [2].

Citations:


Use percentage interpolation for Arabic usage labels.

"%{0}" bypasses % formatting and may display the sign before the value in Arabic; render the value as a locale-aware percentage instead of interpolating %{0} into the translation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/locales/ar.json` at line 424, Update the Arabic
headerArrayUsage.usedOfArray translation to use the locale-aware percentage
interpolation format instead of the raw %{0} placeholder, ensuring the rendered
percentage has correct Arabic formatting and sign placement.

"headerOsVersion.apiVersionCopiedToClipboard": "إصدار API تم نسخه إلى الحافظة",
"headerOsVersion.osVersionCopiedToClipboard": "إصدار نظام التشغيل تم نسخه إلى الحافظة",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/bn.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "API সেটিংস আপডেট হয়েছে",
"downgradeOs.downgradeUnraidOs": "Unraid OS নিচে পাঠান",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "ডাউনগ্রেড সক্রিয় করতে শুরু করা আপডেট পূরণ করুন।",
"headerArrayUsage.array": "অ্যারে",
"headerArrayUsage.offline": "অফলাইন",
"headerArrayUsage.usedOfArray": "অ্যারের {0}% ব্যবহৃত",
"headerOsVersion.apiVersionCopiedToClipboard": "API সংস্করণ ক্লিপবোর্ডে কপি করা হয়েছে",
"headerOsVersion.osVersionCopiedToClipboard": "OS সংস্করণ ক্লিপবোর্ডে কপি করা হয়েছে",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/ca.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Configuració API actualitzada",
"downgradeOs.downgradeUnraidOs": "Degrada Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Si us plau, completa l'actualització iniciada per habilitar una degradació.",
"headerArrayUsage.array": "Matriu",
"headerArrayUsage.offline": "Desconnectat",
"headerArrayUsage.usedOfArray": "{0}% de la matriu utilitzada",
"headerOsVersion.apiVersionCopiedToClipboard": "Versió de l'API copiada al porta-retalls",
"headerOsVersion.osVersionCopiedToClipboard": "Versió OS copiada al porta-retalls",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/cs.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Aktualizovaná nastavení API",
"downgradeOs.downgradeUnraidOs": "Downgrade Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Pro povolení downgradů prosím dokončete zahájenou aktualizaci.",
"headerArrayUsage.array": "Pole disků",
"headerArrayUsage.offline": "Offline",
"headerArrayUsage.usedOfArray": "{0}% pole využito",
"headerOsVersion.apiVersionCopiedToClipboard": "Verze API zkopírována do schránky",
"headerOsVersion.osVersionCopiedToClipboard": "Verze OS zkopírována do schránky",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/da.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Opdaterede API-indstillinger",
"downgradeOs.downgradeUnraidOs": "Nedgrader Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Afslut venligst den påbegyndte opdatering for at muliggøre en nedgradering.",
"headerArrayUsage.array": "Array",
"headerArrayUsage.offline": "Offline",
"headerArrayUsage.usedOfArray": "{0}% af arrayet er brugt",
"headerOsVersion.apiVersionCopiedToClipboard": "API-version kopieret til udklipsholder",
"headerOsVersion.osVersionCopiedToClipboard": "OS-version kopieret til udklipsholder",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "API-Einstellungen aktualisiert",
"downgradeOs.downgradeUnraidOs": "Unraid OS herabstufen",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Bitte beenden Sie das gestartete Update, um eine Herabstufung zu ermöglichen.",
"headerArrayUsage.array": "Array",
"headerArrayUsage.offline": "Offline",
"headerArrayUsage.usedOfArray": "{0}% des Arrays verwendet",
"headerOsVersion.apiVersionCopiedToClipboard": "API-Version in die Zwischenablage kopiert",
"headerOsVersion.osVersionCopiedToClipboard": "Betriebssystemversion in die Zwischenablage kopiert",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Configuraciones del API actualizadas",
"downgradeOs.downgradeUnraidOs": "Degradar Sistemas Operativos de Unraid",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Por favor termine la actualización iniciada para permitir una degradación.",
"headerArrayUsage.array": "Arreglo",
"headerArrayUsage.offline": "Sin conexión",
"headerArrayUsage.usedOfArray": "{0}% del arreglo utilizado",
"headerOsVersion.apiVersionCopiedToClipboard": "Versión del API copiada al portapapeles",
"headerOsVersion.osVersionCopiedToClipboard": "Versión del SO copiada al portapapeles",
"headerOsVersion.unraidApi": "API de Unraid",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Paramètres API mis à jour",
"downgradeOs.downgradeUnraidOs": "Rétrograder le système Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Veuillez terminer la mise à jour initiée pour autoriser une rétrogradation.",
"headerArrayUsage.array": "Tableau",
"headerArrayUsage.offline": "Hors ligne",
"headerArrayUsage.usedOfArray": "{0}% du tableau utilisé",
"headerOsVersion.apiVersionCopiedToClipboard": "Version de l'API copiée dans le presse-papiers",
"headerOsVersion.osVersionCopiedToClipboard": "Version de l'OS copiée dans le presse-papiers",
"headerOsVersion.unraidApi": "API Unraid",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/hi.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "अपडेटेड एपीआई सेटिंग्स",
"downgradeOs.downgradeUnraidOs": "Unraid OS डाउनग्रेड करें",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "डाउनग्रेड को सक्षम करने के लिए शुरू की गई अपडेट को पूरा करें।",
"headerArrayUsage.array": "ऐरे",
"headerArrayUsage.offline": "ऑफ़लाइन",
"headerArrayUsage.usedOfArray": "ऐरे का {0}% उपयोग हुआ",
"headerOsVersion.apiVersionCopiedToClipboard": "एपीआई संस्करण क्लिपबोर्ड में कॉपी किया गया",
"headerOsVersion.osVersionCopiedToClipboard": "OS संस्करण क्लिपबोर्ड में कॉपी किया गया",
"headerOsVersion.unraidApi": "Unraid एपीआई",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/hr.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Ažurirane API postavke",
"downgradeOs.downgradeUnraidOs": "Nadogradite Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Završite započeto ažuriranje kako biste omogućili nadogradnju.",
"headerArrayUsage.array": "Polje",
"headerArrayUsage.offline": "Offline",
"headerArrayUsage.usedOfArray": "{0}% polja je iskorišteno",
"headerOsVersion.apiVersionCopiedToClipboard": "API verzija kopirana u međuspremnik",
"headerOsVersion.osVersionCopiedToClipboard": "OS verzija kopirana u međuspremnik",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
11 changes: 7 additions & 4 deletions web/src/locales/hu.json
Original file line number Diff line number Diff line change
Expand Up @@ -245,8 +245,8 @@
"onboarding.summaryStep.activationLabel": "Aktiválás",
"onboarding.summaryStep.configuration": "Konfiguráció",
"onboarding.summaryStep.pluginsSelected": "{count} bővítmény kiválasztva",
"onboarding.summaryStep.viewSelected": "Kiválasztott megtekintése",
"onboarding.summaryStep.hideSelected": "Kiválasztott elrejtése",
"onboarding.summaryStep.viewSelected": "Megtekintés",
"onboarding.summaryStep.hideSelected": "Elrejtés",
"onboarding.summaryStep.noPluginsSelected": "Nincsenek kiválasztott bővítmények.",
"onboarding.summaryStep.bootConfig.title": "Rendszerindítás konfigurációja",
"onboarding.summaryStep.bootConfig.bootMethod": "Rendszerindítás módja",
Expand Down Expand Up @@ -336,9 +336,9 @@
"onboarding.summaryStep.result.warningsTitle": "A beállítás figyelmeztetésekkel ugyan, de megtörtént",
"onboarding.summaryStep.result.warningsMessage": "Néhány beállítást nem lehetett teljesen alkalmazni vagy ellenőrizni. A beállításokat bármikor átnézheti és módosíthatja az Unraid Irányítópultján.",
"onboarding.summaryStep.result.sshUnverifiedMessage": "Az SSH-beállítás frissítése elküldve, de a végleges állapot még nem ellenőrizhető. Később ellenőrizheti és módosíthatja az Unraid Irányítópultján.",
"onboarding.summaryStep.result.bestEffortMessage": "Az üzembe helyezési beállítások alkalmazásra kerültek. Egyes műveletek végrehajtása a lehető legjobb módon történt, és ez eltarthat egy ideig. Később módosíthatja a beállításokat az Unraid Irányítópultján.",
"onboarding.summaryStep.result.bestEffortMessage": "Az üzembe helyezési beállítások alkalmazásra kerültek. Egyes műveletek végrehajtása a lehető legjobb módon történt, ami eltarthat pár pillanatig. Később módosíthatja a beállításokat az Unraid Irányítópultján.",
"onboarding.summaryStep.result.noChangesTitle": "Nincs szükség frissítésekre",
"onboarding.summaryStep.result.noChangesMessage": "Nem voltak alkalmazandó üzembe helyezési frissítések, ezért semmi sem változott.",
"onboarding.summaryStep.result.noChangesMessage": "Nem voltak alkalmazandó üzembe helyezési frissítések, így a beállításokban nem történt változás.",
"onboarding.summaryStep.result.successTitle": "Beállítás alkalmazva",
"onboarding.summaryStep.result.successMessage": "Az üzembe helyezés beállításai sikeresen alkalmazásra kerültek.",
"onboarding.summaryStep.result.failedTitle": "A beállítás sikertelen",
Expand Down Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "API-beállítások frissítve",
"downgradeOs.downgradeUnraidOs": "Unraid OS visszaállítása korábbi verzióra",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Kérjük, fejezze be a megkezdett frissítést a korábbi verzióra történő visszaállítás engedélyezéséhez.",
"headerArrayUsage.array": "Lemeztömb",
"headerArrayUsage.offline": "Offline",
"headerArrayUsage.usedOfArray": "A lemeztömb {0}%-a van használatban.",
"headerOsVersion.apiVersionCopiedToClipboard": "API-verzió vágólapra másolva",
"headerOsVersion.osVersionCopiedToClipboard": "Unraid OS-verzió vágólapra másolva",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Impostazioni API aggiornate",
"downgradeOs.downgradeUnraidOs": "Downgrade Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Completa l'aggiornamento avviato per abilitare un downgrade.",
"headerArrayUsage.array": "Array",
"headerArrayUsage.offline": "Offline",
"headerArrayUsage.usedOfArray": "{0}% dell'array utilizzato",
"headerOsVersion.apiVersionCopiedToClipboard": "Versione API copiata negli appunti",
"headerOsVersion.osVersionCopiedToClipboard": "Versione OS copiata negli appunti",
"headerOsVersion.unraidApi": "API di Unraid",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "API設定を更新しました",
"downgradeOs.downgradeUnraidOs": "Unraid OSのダウングレード",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "ダウングレードを有効にするには、開始されたアップデートを完了してください。",
"headerArrayUsage.array": "配列",
"headerArrayUsage.offline": "オフライン",
"headerArrayUsage.usedOfArray": "アレイの{0}%が使用されています",
"headerOsVersion.apiVersionCopiedToClipboard": "APIバージョンがクリップボードにコピーされました",
"headerOsVersion.osVersionCopiedToClipboard": "OSバージョンがクリップボードにコピーされました",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "API 설정 업데이트됨",
"downgradeOs.downgradeUnraidOs": "Unraid OS 다운그레이드",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "다운그레이드를 활성화하려면 시작된 업데이트를 마치십시오.",
"headerArrayUsage.array": "어레이",
"headerArrayUsage.offline": "오프라인",
"headerArrayUsage.usedOfArray": "어레이의 {0}% 사용됨",
"headerOsVersion.apiVersionCopiedToClipboard": "API 버전이 클립보드에 복사됨",
"headerOsVersion.osVersionCopiedToClipboard": "OS 버전이 클립보드에 복사됨",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/lv.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Atjaunināta API iestatījumi",
"downgradeOs.downgradeUnraidOs": "Pazemināt Unraid OS versiju",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Lūdzu, pabeidziet ierosināto atjauninājumu, lai aktivizētu pazemināšanu.",
"headerArrayUsage.array": "Masīvs",
"headerArrayUsage.offline": "Bezsaistē",
"headerArrayUsage.usedOfArray": "Izmantoti {0}% no masīva",
"headerOsVersion.apiVersionCopiedToClipboard": "API versija nokopēta klipīšdēlī",
"headerOsVersion.osVersionCopiedToClipboard": "OS versija nokopēta klipīšdēlī",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Bijgewerkte API-instellingen",
"downgradeOs.downgradeUnraidOs": "Downgrade Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Voltooi de gestarte update om een downgrading mogelijk te maken.",
"headerArrayUsage.array": "Array",
"headerArrayUsage.offline": "Offline",
"headerArrayUsage.usedOfArray": "{0}% van de array gebruikt",
"headerOsVersion.apiVersionCopiedToClipboard": "API-versie gekopieerd naar klembord",
"headerOsVersion.osVersionCopiedToClipboard": "OS-versie gekopieerd naar klembord",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/no.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Oppdaterte API-innstillinger",
"downgradeOs.downgradeUnraidOs": "Nedgradering av Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Vennligst fullfør den påbegynte oppdateringen for å muliggjøre en nedgradering.",
"headerArrayUsage.array": "Array",
"headerArrayUsage.offline": "Frakoblet",
"headerArrayUsage.usedOfArray": "{0}% av arrayet brukt",
"headerOsVersion.apiVersionCopiedToClipboard": "API-versjon kopiert til utklippstavlen",
"headerOsVersion.osVersionCopiedToClipboard": "OS-versjon kopiert til utklippstavlen",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Zaktualizowane ustawienia API",
"downgradeOs.downgradeUnraidOs": "Obniż wersję Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Proszę dokończyć zainicjowaną aktualizację, aby umożliwić obniżenie wersji.",
"headerArrayUsage.array": "Macierz",
"headerArrayUsage.offline": "Offline",
"headerArrayUsage.usedOfArray": "{0}% macierzy użyte",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Locate locale files and inspect relevant strings"
wc -l web/src/locales/pl.json web/src/locales/*.json 2>/dev/null | sed -n '1,80p'

python3 - <<'PY'
import json, pathlib
p=pathlib.Path('web/src/locales/pl.json')
data=json.loads(p.read_text())
key='headerArrayUsage.usedOfArray'
print(key, data.get(key))
for f in pathlib.Path('web/src/locales').glob('*.json'):
    d=json.loads(f.read_text())
    v=d.get(key)
    if v:
        print(f'{f.name}: {v!r}')
PY

echo
echo "Search for headerArrayUsage keys across locales"
rg -n '"headerArrayUsage' web/src/locales || true

Repository: unraid/api

Length of output: 7328


Use idiomatic Polish wording for array usage.

"{0}% macierzy użyte" is awkward for UI copy; a natural form such as "Wykorzystano {0}% macierzy" reads better and matches the intended “usedOfArray” message.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/locales/pl.json` at line 424, Update the
“headerArrayUsage.usedOfArray” translation to use idiomatic Polish wording, such
as placing “Wykorzystano” before the percentage and “macierzy” after it, while
preserving the {0} placeholder.

"headerOsVersion.apiVersionCopiedToClipboard": "Wersja API skopiowana do schowka",
"headerOsVersion.osVersionCopiedToClipboard": "Wersja OS skopiowana do schowka",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Configurações da API Atualizadas",
"downgradeOs.downgradeUnraidOs": "Reduzir Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Por favor, termine a atualização iniciada para permitir uma redução de versão.",
"headerArrayUsage.array": "Array",
"headerArrayUsage.offline": "Offline",
"headerArrayUsage.usedOfArray": "{0}% do array utilizado",
"headerOsVersion.apiVersionCopiedToClipboard": "Versão da API copiada para a área de transferência",
"headerOsVersion.osVersionCopiedToClipboard": "Versão do SO copiada para a área de transferência",
"headerOsVersion.unraidApi": "API Unraid",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/ro.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Setări API actualizate",
"downgradeOs.downgradeUnraidOs": "Retrogradare Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Finalizați actualizarea inițiată pentru a permite o retrogradare.",
"headerArrayUsage.array": "Array",
"headerArrayUsage.offline": "Offline",
"headerArrayUsage.usedOfArray": "{0}% din array utilizat",
"headerOsVersion.apiVersionCopiedToClipboard": "Versiune API copiată în clipboard",
"headerOsVersion.osVersionCopiedToClipboard": "Versiunea OS copiată în clipboard",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Обновлены настройки API",
"downgradeOs.downgradeUnraidOs": "Понизить версию Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Пожалуйста, завершите начатое обновление для включения понижения версии.",
"headerArrayUsage.array": "Массив",
"headerArrayUsage.offline": "Не в сети",
"headerArrayUsage.usedOfArray": "Использовано {0}% массива",
"headerOsVersion.apiVersionCopiedToClipboard": "Версия API скопирована в буфер обмена",
"headerOsVersion.osVersionCopiedToClipboard": "Версия ОС скопирована в буфер обмена",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/sv.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Uppdaterade API-inställningar",
"downgradeOs.downgradeUnraidOs": "Nedgradera Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Avsluta den påbörjade uppdateringen för att kunna nedgradera.",
"headerArrayUsage.array": "Array",
"headerArrayUsage.offline": "Offline",
"headerArrayUsage.usedOfArray": "{0}% av arrayen används",
"headerOsVersion.apiVersionCopiedToClipboard": "API-version kopierad till urklipp",
"headerOsVersion.osVersionCopiedToClipboard": "OS-version kopierad till urklipp",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/uk.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "Оновлені налаштування API",
"downgradeOs.downgradeUnraidOs": "Знизити версію Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "Будь ласка, завершіть ініційоване оновлення, щоб увімкнути зниження версії.",
"headerArrayUsage.array": "Масивом",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Locate locale files:\n'
fd -a 'uk\.json$' . | sed 's#^\./##'

printf '\nInspect target entry and nearby keys:\n'
python3 - <<'PY'
import json
from pathlib import Path
p = Path('web/src/locales/uk.json')
if not p.exists():
    # try find
    for path in Path('.').rglob('uk.json'):
        if 'web/src' in str(path):
            p = path
            break
print(p)
data = json.loads(p.read_text())
print(type(data))
if isinstance(data, dict):
    print(data.get('headerArrayUsage'))
    for k, v in data.items():
        if 'headerArrayUsage' in k or k == 'array' or k.endswith('.array'):
            print(f'{k}: {v}')
else:
    head = data[:50] if isinstance(data, list) else None
    print(head)
PY

printf '\nSearch for headerArrayUsage/headerArrayUsage array references:\n'
rg -n 'headerArrayUsage|headerArrayUsage\.array|headerArrayUsage' web/src -S || true

Repository: unraid/api

Length of output: 5886


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Find source keys/components mentioning HeaderArrayUsage or headerArrayUsage:\n'
rg -n 'HeaderArrayUsage|headerArrayUsage|headerArrayUsage\.array|T\(' web/src -S --glob '!**/locales/**/*.json' -g '*.tsx' -g '*.ts' -g '*.js' -g '*.jsx' || true

printf '\nLocate language-related files:\n'
fd -i 'language|locale|i18n|translation|localization' web/src | sed 's#^\./##' | head -80

Repository: unraid/api

Length of output: 539


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'i18n loader and util snippets:\n'
wc -l web/src/helpers/i18n-loader.ts web/src/helpers/i18n-utils.ts
sed -n '1,220p' web/src/helpers/i18n-loader.ts
printf '\n--- i18n-utils ---\n'
sed -n '1,220p' web/src/helpers/i18n-utils.ts

printf '\nFind headerArrayUsage in all tracked source files:\n'
git ls-files | rg '\.(m?js|tsx?|vue|jsx)$' | xargs rg -n 'headerArrayUsage|HeaderArrayUsage|headerArrayUsage\.array' -S || true

Repository: unraid/api

Length of output: 4804


Use the nominative Ukrainian label.

"Масивом" is instrumental case; this standalone array label should use "Масив".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/locales/uk.json` at line 422, Update the "headerArrayUsage.array"
localization value in uk.json from the instrumental form to the nominative label
"Масив", leaving surrounding translations unchanged.

"headerArrayUsage.offline": "Не в мережі",
"headerArrayUsage.usedOfArray": "Використано {0}% масиву",
"headerOsVersion.apiVersionCopiedToClipboard": "Версія API скопійована в буфер обміну",
"headerOsVersion.osVersionCopiedToClipboard": "Версія OS скопійована в буфер обміну",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down
3 changes: 3 additions & 0 deletions web/src/locales/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,9 @@
"connectSettings.updatedApiSettingsToast": "已更新 API 设置",
"downgradeOs.downgradeUnraidOs": "降级 Unraid OS",
"downgradeOs.pleaseFinishTheInitiatedUpdateTo": "请完成已经初始化的更新以启用降级。",
"headerArrayUsage.array": "阵列",
"headerArrayUsage.offline": "离线",
"headerArrayUsage.usedOfArray": "阵列已使用 {0}%",
"headerOsVersion.apiVersionCopiedToClipboard": "API 版本已复制到剪贴板",
"headerOsVersion.osVersionCopiedToClipboard": "OS 版本已复制到剪贴板",
"headerOsVersion.unraidApi": "Unraid API",
Expand Down