From d925584af80e2db54804e1f0bb1458a02b5470bd Mon Sep 17 00:00:00 2001 From: notmalicik <98515894+notmalicik@users.noreply.github.com> Date: Wed, 3 Dec 2025 20:57:07 +0200 Subject: [PATCH] Romanian language added (#1962) --- frontend/apps/remark42/app/locales/ro.json | 182 ++++++++++++++++++ .../apps/remark42/app/utils/loadLocale.ts | 7 +- .../apps/remark42/tasks/supportedLocales.json | 2 +- 3 files changed, 187 insertions(+), 4 deletions(-) create mode 100644 frontend/apps/remark42/app/locales/ro.json diff --git a/frontend/apps/remark42/app/locales/ro.json b/frontend/apps/remark42/app/locales/ro.json new file mode 100644 index 00000000..033e6002 --- /dev/null +++ b/frontend/apps/remark42/app/locales/ro.json @@ -0,0 +1,182 @@ +{ + "auth.back": "Înapoi", + "auth.email-address": "Adresă de email", + "auth.loading": "Se încarcă...", + "auth.oauth-button": "Autentifică-te cu {provider}", + "auth.oauth-source": "Folosește rețeaua socială", + "auth.open-profile": "Deschide profilul meu", + "auth.or": "sau", + "auth.signin": "Autentificare", + "auth.signout": "Deconectare", + "auth.submit": "Trimite", + "auth.symbols-restriction": "Numele de utilizator trebuie să conțină doar litere, cifre, liniuțe jos sau spații", + "auth.telegram-check": "Verifică", + "auth.telegram-link": "prin link", + "auth.telegram-message-1": "Deschide Telegram", + "auth.telegram-message-2": "și apasă „Start” acolo.", + "auth.telegram-message-3": "Apoi apasă „Verifică” mai jos.", + "auth.telegram-optional-qr": "sau prin scanarea codului QR", + "auth.telegram-qr": "Cod QR Telegram", + "auth.user-not-found": "Nu a fost găsit niciun utilizator", + "auth.username": "Nume de utilizator", + "authPanel.disable-comments": "Dezactivează comentariile", + "authPanel.disabled-cookies": "Dezactivează blocarea cookie-urilor terțe pentru a te autentifica sau deschide comentariile în", + "authPanel.enable-comments": "Activează comentariile", + "authPanel.enable-cookies": "Permite cookie-urile pentru a te autentifica și a comenta", + "authPanel.hide-settings": "Ascunde setările", + "authPanel.new-page": "pagină nouă", + "authPanel.read-only": "Doar citire", + "authPanel.show-settings": "Afișează setările", + "blockingDuration.day": "Pentru o zi", + "blockingDuration.month": "Pentru o lună", + "blockingDuration.permanently": "Permanent", + "blockingDuration.week": "Pentru o săptămână", + "comment.block": "Blochează", + "comment.block-user": "Dorești să-l blochezi pe {userName} {duration}?", + "comment.blocked-user": "Blocat", + "comment.blocking-period": "Perioadă de blocare", + "comment.cancel": "Anulează", + "comment.copied": "Copiat!", + "comment.copy": "Copiază", + "comment.delete": "Șterge", + "comment.delete-message": "Dorești să ștergi acest comentariu?", + "comment.deleted-comment": "Acest comentariu a fost șters", + "comment.deleted-user": "Șters", + "comment.edit": "Editează", + "comment.edit-countdown": "Editarea va fi dezactivată", + "comment.expired-time": "Timpul de editare a expirat.", + "comment.go-to-parent": "Mergi la comentariul părinte", + "comment.hide": "Ascunde", + "comment.hide-user-comment": "Dorești să ascunzi comentariile utilizatorului {userName}?", + "comment.paid-patreon": "Abonat plătitor pe Patreon", + "comment.pin": "Fixează", + "comment.pin-comment": "Dorești să fixezi acest comentariu?", + "comment.reply": "Răspunde", + "comment.time": "{day} la {time}", + "comment.toggle-verification": "Comută verificarea", + "comment.unblock": "Deblochează", + "comment.unblock-user": "Dorești să deblochezi acest utilizator?", + "comment.unpin": "Anulează fixarea", + "comment.unpin-comment": "Dorești să anulezi fixarea acestui comentariu?", + "comment.unverified-user": "Utilizator neverificat", + "comment.unverify-user": "Dorești să anulezi verificarea lui {userName}?", + "comment.verified-user": "Utilizator verificat", + "comment.verify-user": "Dorești să verifici pe {userName}?", + "commentForm.anonymous-uploading-disabled": "Încărcarea imaginilor este dezactivată pentru utilizatorii anonimi. Autentifică-te cu un cont neanonim pentru a putea atașa imagini.", + "commentForm.exceeded-size": "{fileName} depășește limita de mărime de {maxImageSize}", + "commentForm.input-placeholder": "Comentariul tău aici", + "commentForm.new-comment": "Comentariu nou", + "commentForm.notice-about-styling": "Stilizarea cu Markdown este acceptată", + "commentForm.preview": "Previzualizare", + "commentForm.reply": "Răspunde", + "commentForm.save": "Salvează", + "commentForm.send": "Trimite", + "commentForm.subscribe-by": "Abonează-te prin", + "commentForm.subscribe-or": "sau", + "commentForm.unauthorized-uploading-disabled": "Încărcarea imaginilor este dezactivată pentru utilizatorii neautentificați. Trebuie să te autentifici înainte de a încărca.", + "commentForm.unexpected-error": "Ceva nu a mers bine. Te rugăm să încerci din nou puțin mai târziu.", + "commentForm.upload-file-fail": "Încărcarea {fileName} a eșuat cu „{errorMessage}”", + "commentForm.uploading": "Se încarcă...", + "commentForm.uploading-file": "se încarcă {fileName}...", + "commentsSort.best": "Cele mai bune", + "commentsSort.least-controversial": "Cel mai puțin controversate", + "commentsSort.least-recently-updated": "Actualizate cel mai demult", + "commentsSort.most-controversial": "Cele mai controversate", + "commentsSort.newest": "Cele mai noi", + "commentsSort.oldest": "Cele mai vechi", + "commentsSort.recently-updated": "Actualizate recent", + "commentsSort.worst": "Cele mai slabe", + "empty-state": "Încă nu există comentarii", + "errors.0": "Ceva nu a mers bine. Te rugăm să încerci din nou puțin mai târziu.", + "errors.1": "Comentariul nu poate fi găsit. Reîmprospătează pagina și încearcă din nou.", + "errors.10": "Este prea târziu pentru a edita comentariul.", + "errors.11": "Comentariul are deja răspuns, editarea nu este posibilă.", + "errors.12": "Nu se poate salva rezultatul votului. Te rugăm să încerci puțin mai târziu.", + "errors.13": "Nu poți vota propriul comentariu.", + "errors.14": "Ai votat deja acest comentariu.", + "errors.15": "Prea multe voturi pentru comentariu.", + "errors.16": "Scor minim atins pentru comentariu.", + "errors.17": "Acțiune respinsă. Te rugăm să încerci mai târziu.", + "errors.18": "Fișierul solicitat nu poate fi găsit.", + "errors.19": "Comentariul conține cuvinte restricționate.", + "errors.2": "Eșec la parsarea cererii primite.", + "errors.20": "Imaginea publicată nu a fost găsită. Te rugăm să încerci să o încarci din nou.", + "errors.3": "Nu ai permisiunea pentru această operațiune.", + "errors.4": "Date de comentariu nevalide.", + "errors.5": "Comentariul nu poate fi găsit. Reîmprospătează pagina și încearcă din nou.", + "errors.6": "Site-ul nu poate fi găsit. Reîmprospătează pagina și încearcă din nou.", + "errors.7": "Utilizatorul a fost blocat.", + "errors.8": "Nu se pot posta comentarii pe această pagină. Comentariile sunt doar pentru citire.", + "errors.9": "Modificarea comentariului a eșuat. Te rugăm să încerci mai târziu.", + "errors.conflict": "Conflict.", + "errors.failed-fetch": "Eroare la preluare. Verifică conexiunea la internet sau încearcă mai târziu", + "errors.forbidden": "Interzis.", + "errors.not-authorized": "Neautorizat.", + "errors.to-many-request": "Ai atins limita maximă de cereri.", + "errors.unexpected-error": "Ceva nu a mers bine.", + "profile.close": "Închide profilul", + "profile.request-to-delete-data": "Solicită ștergerea datelor mele", + "retry": "Reîncearcă", + "root.pinned-comments": "Comentarii fixate", + "root.powered-by": "Cu sprijinul Remark42", + "root.show-more": "Afișează mai multe", + "settings.block": "blochează", + "settings.block-time": "până în {day} la {time}", + "settings.block-user": "Dorești să blochezi pe {userName}?", + "settings.blocked-users-header": "Utilizatori blocați:", + "settings.blocked-users-title": "Utilizatori blocați", + "settings.hidden-user-header": "Utilizatori ascunși:", + "settings.hidden-users-title": "Utilizatori ascunși", + "settings.hide": "ascunde", + "settings.no-blocked-users": "Nu există utilizatori blocați.", + "settings.no-hidden-users": "Nu există utilizatori ascunși.", + "settings.permanently": "permanent", + "settings.show": "arată", + "settings.unblock": "deblochează", + "settings.unblock-user": "Dorești să deblochezi pe {userName}?", + "settings.unknown": "necunoscut", + "sort-by": "Sortează după", + "subscribeByEmail.back": "Înapoi", + "subscribeByEmail.close": "Închide", + "subscribeByEmail.email": "Email", + "subscribeByEmail.have-been-subscribed": "Te-ai abonat la actualizări prin email", + "subscribeByEmail.have-been-unsubscribed": "Te-ai dezabonat prin email de la actualizări", + "subscribeByEmail.only-registered-users": "Disponibil doar pentru utilizatorii înregistrați", + "subscribeByEmail.submit": "Trimite", + "subscribeByEmail.subscribe": "Abonează-te", + "subscribeByEmail.subscribe-by-email": "Abonează-te prin Email", + "subscribeByEmail.subscribe-to-replies": "Abonează-te la răspunsuri", + "subscribeByEmail.subscribed": "Ești abonat la actualizări prin email", + "subscribeByEmail.unsubscribe": "Dezabonează-te", + "subscribeByRSS.button-title": "Abonează-te prin RSS", + "subscribeByRSS.replies": "Răspunsuri", + "subscribeByRSS.site": "Site", + "subscribeByRSS.thread": "Fir de discuție", + "subscribeByRSS.title": "RSS", + "subscribeByTelegram.have-been-subscribed": "Te-ai abonat la actualizări prin Telegram", + "subscribeByTelegram.have-been-unsubscribed": "Te-ai dezabonat prin Telegram de la actualizări", + "subscribeByTelegram.only-registered-users": "Disponibil doar pentru utilizatorii înregistrați", + "subscribeByTelegram.resubscribe": "Reabonează-te", + "subscribeByTelegram.subscribe-by-telegram": "Abonează-te prin Telegram", + "subscribeByTelegram.telegram": "Telegram", + "subscribeByTelegram.unsubscribe": "Dezabonează-te", + "token": "Copiază și lipește tokenul din email", + "token.expired": "Tokenul a expirat", + "token.invalid": "Tokenul este invalid", + "toolbar.attach-image": "Atașează imaginea, trage și plasează sau lipește din clipboard", + "toolbar.bold": "Adaugă text îngroșat {shortcut}", + "toolbar.code": "Inserează cod", + "toolbar.header": "Adaugă antet", + "toolbar.italic": "Adaugă text italic {shortcut}", + "toolbar.link": "Adaugă un link {shortcut}", + "toolbar.ordered-list": "Adaugă o listă numerotată", + "toolbar.quote": "Inserează un citat", + "toolbar.unordered-list": "Adaugă o listă cu puncte", + "user.comments": "Comentarii", + "user.load-more": "Încarcă mai multe", + "user.my-comments": "Comentariile mele", + "vote.controversy": "Controversă: {value}", + "vote.downvote": "Votează negativ", + "vote.score": "Scorul voturilor", + "vote.upvote": "Votează pozitiv" +} \ No newline at end of file diff --git a/frontend/apps/remark42/app/utils/loadLocale.ts b/frontend/apps/remark42/app/utils/loadLocale.ts index 01750859..cec4b1f6 100644 --- a/frontend/apps/remark42/app/utils/loadLocale.ts +++ b/frontend/apps/remark42/app/utils/loadLocale.ts @@ -55,9 +55,7 @@ export async function loadLocale(locale: string): Promise return import(/* webpackChunkName: "ar" */ '../locales/ar.json').then((res) => res.default).catch(() => enMessages); } if (locale === 'zh-tw') { - return import(/* webpackChunkName: "zh-tw" */ '../locales/zh-tw.json') - .then((res) => res.default) - .catch(() => enMessages); + return import(/* webpackChunkName: "zh-tw" */ '../locales/zh-tw.json').then((res) => res.default).catch(() => enMessages); } if (locale === 'th') { return import(/* webpackChunkName: "th" */ '../locales/th.json').then((res) => res.default).catch(() => enMessages); @@ -71,6 +69,9 @@ export async function loadLocale(locale: string): Promise if (locale === 'mk') { return import(/* webpackChunkName: "mk" */ '../locales/mk.json').then((res) => res.default).catch(() => enMessages); } + if (locale === 'ro') { + return import(/* webpackChunkName: "ro" */ '../locales/ro.json').then((res) => res.default).catch(() => enMessages); + } return enMessages; } diff --git a/frontend/apps/remark42/tasks/supportedLocales.json b/frontend/apps/remark42/tasks/supportedLocales.json index 4af133a8..f19340c0 100644 --- a/frontend/apps/remark42/tasks/supportedLocales.json +++ b/frontend/apps/remark42/tasks/supportedLocales.json @@ -1 +1 @@ -["en", "ru", "de", "fi", "es", "zh", "tr", "bg", "ua", "pl", "vi", "be", "fr", "ja", "ko", "bp", "it", "ar", "zh-tw", "th", "cs", "fa", "mk"] +["en", "ru", "de", "fi", "es", "zh", "tr", "bg", "ua", "pl", "vi", "be", "fr", "ja", "ko", "bp", "it", "ar", "zh-tw", "th", "cs", "fa", "mk", "ro"]