You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(cloud-connection): localize the Cloud Connection panel (objectstack#3589 follow-up) (#2865)
`CloudConnectionPanel` — the `cloud-connection:panel` SDUI widget that is the
entire body of the Cloud Connection Setup page — had no i18n at all: no
`@object-ui/i18n` import, and no `cloudConnection` namespace in any of the ten
built-in locale packs. Its siblings (`marketplace:installed-list`,
`mcp:connect-agent`) were already fully localized, so once the framework-side
`page:header` resolution landed (objectstack#3648) this page rendered a
translated header above an English body.
- New `cloudConnection` namespace in all ten packs, covering every phase of the
device-code flow: checking, error + retry, waiting, bound, unbound.
- The three hard-coded failure messages are translated where they are raised
rather than where they are rendered, since they live in component state.
- The "code is pre-filled…" line was one sentence stitched across JSX with a
conditional tail and a bare '.'; it is now two self-contained strings.
- `bound_at` formats with the active UI language instead of the browser default.
Adds a locale-parity test over the `cloudConnection` key set — partial coverage
degrades quietly, since i18next falls back to `en` and the page merely looks
half-translated.
Copy file name to clipboardExpand all lines: packages/i18n/src/locales/ar.ts
+35Lines changed: 35 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1842,6 +1842,41 @@ const ar = {
1842
1842
done: 'تم — إخفاء',
1843
1843
},
1844
1844
},
1845
+
cloudConnection: {
1846
+
checking: "جارٍ التحقق من الاتصال…",
1847
+
retry: "إعادة المحاولة",
1848
+
errors: {
1849
+
expired: "انتهت صلاحية الطلب قبل الموافقة عليه. ابدأ من جديد.",
1850
+
bindFailed: "فشل الربط.",
1851
+
deviceCodeFailed: "فشل طلب رمز الجهاز.",
1852
+
},
1853
+
waiting: {
1854
+
popupOpened: "وافق على الاتصال في النافذة التي فُتحت للتو — سيتم تحديث هذه الصفحة تلقائيًا.",
1855
+
polling: "في انتظار الموافقة في وحدة التحكم السحابية…",
1856
+
openApproval: "فتح صفحة الموافقة",
1857
+
copy: "نسخ",
1858
+
copied: "تم النسخ",
1859
+
codePrefilled: "الرمز مُعبَّأ مسبقًا في صفحة الموافقة.",
1860
+
openItHere: "لم تظهر النافذة؟ افتحها من هنا",
1861
+
cancel: "إلغاء",
1862
+
},
1863
+
bound: {
1864
+
title: "متصل بـ ObjectStack Cloud",
1865
+
runtime: "بيئة التشغيل",
1866
+
organization: "المؤسسة",
1867
+
approvedBy: "تمت الموافقة بواسطة",
1868
+
runtimeId: "معرّف بيئة التشغيل",
1869
+
environment: "البيئة",
1870
+
since: "متصل منذ",
1871
+
privatePackages: "تظهر الآن الحزم الخاصة بمؤسستك في السوق ضمن «مؤسستك».",
1872
+
disconnect: "قطع الاتصال",
1873
+
},
1874
+
unbound: {
1875
+
title: "غير متصل",
1876
+
body: "اربط بيئة التشغيل هذه بمستوى تحكم ObjectStack لتصفّح الحزم الخاصة بمؤسستك وتثبيتها هنا. الموافقة بنقرة واحدة في حسابك السحابي — دون إدخال أي معرّفات أو بيانات اعتماد في هذه الصفحة.",
1877
+
connect: "اتصال",
1878
+
},
1879
+
},
1845
1880
marketplace: {
1846
1881
title: "سوق التطبيقات",
1847
1882
subtitle: "استعرض التطبيقات المعتمدة المنشورة في كتالوج ObjectStack. انقر على تطبيق لرؤية التفاصيل وتثبيته في أحد بيئاتك.",
Copy file name to clipboardExpand all lines: packages/i18n/src/locales/de.ts
+35Lines changed: 35 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1844,6 +1844,41 @@ const de = {
1844
1844
done: 'Fertig — ausblenden',
1845
1845
},
1846
1846
},
1847
+
cloudConnection: {
1848
+
checking: "Verbindung wird geprüft…",
1849
+
retry: "Erneut versuchen",
1850
+
errors: {
1851
+
expired: "Die Anfrage ist abgelaufen, bevor sie genehmigt wurde. Starten Sie erneut.",
1852
+
bindFailed: "Verbindung fehlgeschlagen.",
1853
+
deviceCodeFailed: "Anforderung des Gerätecodes fehlgeschlagen.",
1854
+
},
1855
+
waiting: {
1856
+
popupOpened: "Genehmigen Sie die Verbindung im soeben geöffneten Fenster — diese Seite aktualisiert sich von selbst.",
1857
+
polling: "Warten auf die Genehmigung in der Cloud-Konsole…",
1858
+
openApproval: "Genehmigungsseite öffnen",
1859
+
copy: "Kopieren",
1860
+
copied: "Kopiert",
1861
+
codePrefilled: "Der Code ist auf der Genehmigungsseite bereits eingetragen.",
1862
+
openItHere: "Fenster nicht erschienen? Hier öffnen",
1863
+
cancel: "Abbrechen",
1864
+
},
1865
+
bound: {
1866
+
title: "Mit ObjectStack Cloud verbunden",
1867
+
runtime: "Runtime",
1868
+
organization: "Organisation",
1869
+
approvedBy: "Genehmigt von",
1870
+
runtimeId: "Runtime-ID",
1871
+
environment: "Umgebung",
1872
+
since: "Verbunden seit",
1873
+
privatePackages: "Die privaten Pakete Ihrer Organisation erscheinen jetzt im Marktplatz unter „Ihre Organisation“.",
1874
+
disconnect: "Verbindung trennen",
1875
+
},
1876
+
unbound: {
1877
+
title: "Nicht verbunden",
1878
+
body: "Verbinden Sie diese Runtime mit einer ObjectStack Control Plane, um die privaten Pakete Ihrer Organisation zu durchsuchen und hier zu installieren. Die Genehmigung erfolgt mit einem einzigen Klick in Ihrem Cloud-Konto — es werden keine IDs oder Zugangsdaten auf dieser Seite eingegeben.",
1879
+
connect: "Verbinden",
1880
+
},
1881
+
},
1847
1882
marketplace: {
1848
1883
title: "App-Marktplatz",
1849
1884
subtitle: "Durchsuchen Sie genehmigte Apps, die im ObjectStack-Katalog veröffentlicht wurden. Klicken Sie auf eine App, um Details zu sehen und sie in eine Ihrer Umgebungen zu installieren.",
0 commit comments