From 96a92c3ebe720416e235c7bb2001e6198fb42f27 Mon Sep 17 00:00:00 2001 From: Igor Date: Fri, 26 Dec 2025 14:07:40 +0100 Subject: [PATCH] feat: add Croatian language support (#50) - Add Croatian (hr) locale file with complete translations - Add Croatian to i18n configuration - Update supported languages list in README --- README.md | 2 +- scripts/sync-locales.js | 2 + src/i18n.ts | 4 +- src/locales/hr.json | 125 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 src/locales/hr.json diff --git a/README.md b/README.md index 0a2d22a..1bc0406 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ On first launch, macOS may block the application because it is not signed. If th ### Supported Languages -English, Italian, German, French, Spanish, Portuguese, Dutch, Polish, Russian, Chinese, Japanese, Korean, Ukrainian, Turkish, Slovenian, Swedish +English, Italian, German, French, Spanish, Portuguese, Dutch, Polish, Russian, Chinese, Japanese, Korean, Ukrainian, Turkish, Slovenian, Swedish, Croatian ## Development diff --git a/scripts/sync-locales.js b/scripts/sync-locales.js index ddcec93..e4f0fda 100644 --- a/scripts/sync-locales.js +++ b/scripts/sync-locales.js @@ -33,6 +33,8 @@ const LANGUAGE_NAMES = { 'sl': 'Slovenian', 'tr': 'Turkish', 'uk': 'Ukrainian', + 'hr': 'Croatian', + 'sv': 'Swedish', 'zh': 'Chinese (Simplified)' }; diff --git a/src/i18n.ts b/src/i18n.ts index d67758a..b0653bb 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -17,6 +17,7 @@ import ko from './locales/ko.json'; import uk from './locales/uk.json'; import tr from './locales/tr.json'; import sl from './locales/sl.json'; +import hr from './locales/hr.json'; import sv from './locales/sv.json'; const resources = { @@ -35,11 +36,12 @@ const resources = { uk: { translation: uk }, tr: { translation: tr }, sl: { translation: sl }, + hr: { translation: hr }, sv: { translation: sv }, }; // Supported languages -const supportedLanguages = ['en', 'it', 'de', 'fr', 'es', 'pt', 'nl', 'pl', 'ru', 'zh', 'ja', 'ko', 'uk', 'tr', 'sl', 'sv']; +const supportedLanguages = ['en', 'it', 'de', 'fr', 'es', 'pt', 'nl', 'pl', 'ru', 'zh', 'ja', 'ko', 'uk', 'tr', 'sl', 'sv', 'hr']; /** * Extract language code from locale string diff --git a/src/locales/hr.json b/src/locales/hr.json new file mode 100644 index 0000000..2f0e98c --- /dev/null +++ b/src/locales/hr.json @@ -0,0 +1,125 @@ +{ + "home": { + "manufacturer": "Proizvođač", + "board": "Ploča", + "operatingSystem": "Operativni sustav", + "storage": "Pohrana", + "chooseBrand": "ODABERI PROIZVOĐAČA", + "chooseBoard": "ODABERI PLOČU", + "chooseOs": "ODABERI OS", + "chooseStorage": "ODABERI POHRANU", + "useCustomImage": "Koristi prilagođenu sliku", + "changeCustomImage": "Promijeni prilagođenu sliku", + "imageCount_one": "{{count}} slika", + "imageCount_other": "{{count}} slika", + "boardCount_one": "{{count}} ploča", + "boardCount_other": "{{count}} ploča" + }, + + "flash": { + "downloading": "Preuzimanje slike...", + "verifyingSha": "Provjera integriteta preuzimanja...", + "decompressing": "Raspakiravanje slike...", + "writing": "Zapisivanje slike na uređaj...", + "verifying": "Provjera zapisanih podataka...", + "complete": "Snimanje završeno!", + "failed": "Dogodila se greška", + "cancel": "Odustani", + "retry": "Pokušaj ponovno", + "done": "Gotovo", + "flashAnother": "Snimi drugu sliku", + "authorizing": "Traženje dopuštenja...", + "confirmTitle": "Potvrda odabira", + "confirmText": "Spremate se zapisati na:", + "confirmWarning": "SVI PODACI BIT ĆE TRAJNO IZBRISANI", + "eraseAndFlash": "Izbriši i snimi", + "dataWarning": "Svi podaci na odabranom uređaju bit će izbrisani", + "successHint": "Vaša SD kartica je spremna! Možete sigurno ukloniti uređaj i umetnuti ga u {{boardName}}.", + "successHintCustom": "Vaša SD kartica je spremna! Možete sigurno ukloniti uređaj." + }, + + "modal": { + "selectManufacturer": "Odaberi proizvođača", + "selectBoard": "Odaberi ploču", + "selectImage": "Odaberi operativni sustav", + "selectDevice": "Odaberi uređaj za pohranu", + "searchManufacturer": "Pretraži proizvođače...", + "searchBoard": "Pretraži ploče...", + "noManufacturers": "Nema pronađenih proizvođača", + "noBoards": "Nema pronađenih ploča", + "noImages": "Nema pronađenih slika", + "noDevices": "Nema pronađenih uređaja", + "promoted": "Preporučeno", + "stable": "Stabilno", + "nightly": "Noćno", + "apps": "Aplikacije", + "minimal": "Minimalno", + "allImages": "Sve slike", + "scanningDevices": "Pretraživanje uređaja...", + "insertDevice": "Umetnite SD karticu ili USB uređaj", + "refreshDevices": "Osvježi uređaje" + }, + + "device": { + "system": "Sustav", + "sdCard": "SD kartica", + "usb": "USB", + "sata": "SATA", + "sas": "SAS", + "nvme": "NVMe", + "refresh": "Osvježi" + }, + + "header": { + "stepManufacturer": "Proizvođač", + "stepBoard": "Ploča", + "stepOs": "OS", + "stepStorage": "Pohrana", + "stepImage": "Slika", + "resetTooltip": "Počni ispočetka", + "stepTooltip": "Promijeni {{step}}" + }, + + "errorDisplay": { + "retry": "Pokušaj ponovno", + "uploadLogs": "Pošalji zapise", + "uploading": "Slanje...", + "uploadingLogs": "Slanje zapisa...", + "uploadLogsForSupport": "Pošalji zapise za podršku", + "viewLogs": "Pregledaj zapise", + "scanQrOrShare": "Skenirajte QR kod ili podijelite ovu poveznicu:" + }, + + "error": { + "downloadFailed": "Preuzimanje neuspješno", + "flashFailed": "Snimanje neuspješno", + "authFailed": "Autorizacija neuspješna", + "authCancelled": "Autorizaciju je otkazao korisnik", + "decompressionFailed": "Raspakiravanje neuspješno", + "uploadFailed": "Slanje neuspješno", + "deviceDisconnected": "Uređaj je isključen" + }, + + "custom": { + "customImage": "Prilagođena slika" + }, + + "common": { + "unknown": "Nepoznato", + "confirm": "Potvrda" + }, + + "update": { + "title": "Dostupno ažuriranje", + "later": "Kasnije", + "downloading": "Preuzimanje ažuriranja...", + "ready": "Ažuriranje spremno", + "error": "Ažuriranje neuspješno", + "installNow": "Instaliraj sada", + "restartNow": "Ponovno pokreni", + "cancel": "Odustani", + "retry": "Pokušaj ponovno", + "readyMessage": "Ažuriranje je preuzeto. Ponovno pokrenite aplikaciju za dovršetak instalacije.", + "errorMessage": "Preuzimanje ažuriranja nije uspjelo. Pokušajte kasnije." + } +}