diff --git a/I18N_README.md b/I18N_README.md index 8f7f1de..823d4cc 100644 --- a/I18N_README.md +++ b/I18N_README.md @@ -15,6 +15,8 @@ This repository supports multiple languages via JSON translation files in `app/l - 🇮🇳 Hindi (hi) - 🇨🇳 Chinese (zh) - 🇯🇵 Japanese (ja) +- 🇭🇷 Croatian (hr) +- 🇷🇸 Serbian (sr) ## Features diff --git a/app/locales/hr.json b/app/locales/hr.json new file mode 100644 index 0000000..8b28c67 --- /dev/null +++ b/app/locales/hr.json @@ -0,0 +1,91 @@ +{ + "appName": "Call-me", + "appTitle": "Call-me - Trenutni video pozivi", + "appDescription": "Vaš izbor za trenutne video pozive!", + "signIn": { + "title": "Prijava", + "username": "Unesite korisničko ime", + "button": "Prijavi se", + "enterUsername": "Molimo unesite svoje korisničko ime" + }, + "room": { + "sessionTime": "Trajanje sesije", + "localUsername": "Vi", + "remoteUsername": "Udaljeni korisnik", + "waiting": "Čekanje da se netko pridruži...", + "connecting": "Povezivanje...", + "userJoined": "__username__ se pridružio pozivu", + "userLeft": "__username__ je napustio poziv", + "users": "Korisnici", + "chat": "Chat", + "searchUsers": "Pretraži korisnike...", + "closeSidebar": "Zatvori bočnu traku" + }, + "controls": { + "microphone": "Mikrofon", + "camera": "Kamera", + "screenShare": "Dijeli zaslon", + "endCall": "Završi poziv", + "settings": "Postavke", + "fullscreen": "Cijeli zaslon", + "shareRoom": "Podijeli sobu", + "toggleHideMe": "Prikaži/sakrij mene", + "toggleAudio": "Uključi/isključi zvuk", + "toggleVideo": "Uključi/isključi video", + "swapCamera": "Promijeni kameru", + "toggleScreen": "Uključi/isključi dijeljenje zaslona", + "toggleUsers": "Prikaži/sakrij korisnike", + "leave": "Napusti" + }, + "messages": { + "microphoneEnabled": "Mikrofon uključen", + "microphoneDisabled": "Mikrofon isključen", + "cameraEnabled": "Kamera uključena", + "cameraDisabled": "Kamera isključena", + "screenShareStarted": "Dijeljenje zaslona pokrenuto", + "screenShareStopped": "Dijeljenje zaslona zaustavljeno", + "callEnded": "Poziv završen", + "connectionFailed": "Povezivanje nije uspjelo", + "permissionDenied": "Dozvola odbijena", + "error": "Došlo je do pogreške", + "copied": "Kopirano u međuspremnik", + "invalidPassword": "Neispravna lozinka" + }, + "errors": { + "noUsername": "Korisničko ime je obavezno", + "connectionLost": "Veza je prekinuta", + "mediaDevices": "Nije moguće pristupiti medijskim uređajima", + "noSupport": "Vaš preglednik ne podržava ovu značajku" + }, + "settings": { + "language": "Jezik", + "selectLanguage": "Odaberite jezik", + "mediaDevicesTitle": "Medijski uređaji", + "chatSettingsTitle": "Postavke chata", + "audioInput": "Mikrofon", + "videoInput": "Kamera", + "audioOutput": "Zvučnik", + "loadingCameras": "Učitavanje kamera...", + "loadingMicrophones": "Učitavanje mikrofona...", + "loadingSpeakers": "Učitavanje zvučnika...", + "resolution": "Razlučivost videa", + "save": "Spremi", + "cancel": "Odustani", + "settings": "Postavke", + "testDevices": "Testiraj uređaje", + "refresh": "Osvježi", + "saveMessages": "Spremi poruke", + "clearAll": "Obriši sve" + }, + "chat": { + "addEmoji": "Dodaj emoji", + "typeMessage": "Upišite poruku...", + "sendMessage": "Pošalji poruku" + }, + "api": { + "unauthorized": "Neovlašten pristup", + "invalidApiKey": "Neispravan API ključ", + "serverError": "Pogreška poslužitelja", + "notFound": "Resurs nije pronađen" + } +} diff --git a/app/locales/sr.json b/app/locales/sr.json new file mode 100644 index 0000000..a3e1de6 --- /dev/null +++ b/app/locales/sr.json @@ -0,0 +1,91 @@ +{ + "appName": "Call-me", + "appTitle": "Call-me - Trenutni video pozivi", + "appDescription": "Vaš izbor za trenutne video pozive!", + "signIn": { + "title": "Prijava", + "username": "Unesite korisničko ime", + "button": "Prijavi se", + "enterUsername": "Molimo unesite svoje korisničko ime" + }, + "room": { + "sessionTime": "Trajanje sesije", + "localUsername": "Vi", + "remoteUsername": "Udaljeni korisnik", + "waiting": "Čekanje da se neko pridruži...", + "connecting": "Povezivanje...", + "userJoined": "__username__ se pridružio pozivu", + "userLeft": "__username__ je napustio poziv", + "users": "Korisnici", + "chat": "Ćaskanje", + "searchUsers": "Pretraži korisnike...", + "closeSidebar": "Zatvori bočnu traku" + }, + "controls": { + "microphone": "Mikrofon", + "camera": "Kamera", + "screenShare": "Podeli ekran", + "endCall": "Završi poziv", + "settings": "Podešavanja", + "fullscreen": "Ceo ekran", + "shareRoom": "Podeli sobu", + "toggleHideMe": "Prikaži/sakrij mene", + "toggleAudio": "Uključi/isključi zvuk", + "toggleVideo": "Uključi/isključi video", + "swapCamera": "Promeni kameru", + "toggleScreen": "Uključi/isključi deljenje ekrana", + "toggleUsers": "Prikaži/sakrij korisnike", + "leave": "Napusti" + }, + "messages": { + "microphoneEnabled": "Mikrofon uključen", + "microphoneDisabled": "Mikrofon isključen", + "cameraEnabled": "Kamera uključena", + "cameraDisabled": "Kamera isključena", + "screenShareStarted": "Deljenje ekrana pokrenuto", + "screenShareStopped": "Deljenje ekrana zaustavljeno", + "callEnded": "Poziv završen", + "connectionFailed": "Povezivanje nije uspelo", + "permissionDenied": "Dozvola odbijena", + "error": "Došlo je do greške", + "copied": "Kopirano u ostavu", + "invalidPassword": "Neispravna lozinka" + }, + "errors": { + "noUsername": "Korisničko ime je obavezno", + "connectionLost": "Veza je izgubljena", + "mediaDevices": "Nije moguće pristupiti medijskim uređajima", + "noSupport": "Vaš pregledač ne podržava ovu funkciju" + }, + "settings": { + "language": "Jezik", + "selectLanguage": "Izaberite jezik", + "mediaDevicesTitle": "Medijski uređaji", + "chatSettingsTitle": "Podešavanja ćaskanja", + "audioInput": "Mikrofon", + "videoInput": "Kamera", + "audioOutput": "Zvučnik", + "loadingCameras": "Učitavanje kamera...", + "loadingMicrophones": "Učitavanje mikrofona...", + "loadingSpeakers": "Učitavanje zvučnika...", + "resolution": "Rezolucija videa", + "save": "Sačuvaj", + "cancel": "Otkaži", + "settings": "Podešavanja", + "testDevices": "Testiraj uređaje", + "refresh": "Osveži", + "saveMessages": "Sačuvaj poruke", + "clearAll": "Obriši sve" + }, + "chat": { + "addEmoji": "Dodaj emoji", + "typeMessage": "Unesite poruku...", + "sendMessage": "Pošalji poruku" + }, + "api": { + "unauthorized": "Neovlašćen pristup", + "invalidApiKey": "Neispravan API ključ", + "serverError": "Greška servera", + "notFound": "Resurs nije pronađen" + } +} diff --git a/package-lock.json b/package-lock.json index dba3264..6a011b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "call-me", - "version": "1.2.94", + "version": "1.2.95", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "call-me", - "version": "1.2.94", + "version": "1.2.95", "license": "AGPLv3", "dependencies": { "@ngrok/ngrok": "1.7.0", diff --git a/package.json b/package.json index 5827974..30e3203 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "call-me", - "version": "1.2.94", + "version": "1.2.95", "description": "Your Go-To for Instant Video Calls", "author": "Miroslav Pejic - miroslav.pejic.85@gmail.com", "license": "AGPLv3", diff --git a/public/i18n.js b/public/i18n.js index 74f2de0..6e6215a 100644 --- a/public/i18n.js +++ b/public/i18n.js @@ -18,7 +18,7 @@ async function fetchAvailableLocales() { } catch (error) { console.warn('Unable to fetch available locales, using fallback list', error); } - return ['en', 'es', 'fr', 'it', 'de', 'pt', 'ru', 'ar', 'hi', 'zh', 'ja']; // Fallback list + return ['en', 'es', 'fr', 'it', 'de', 'pt', 'ru', 'ar', 'hi', 'zh', 'ja', 'hr', 'sr']; // Fallback list } function getLocaleLabel(locale) { @@ -34,6 +34,8 @@ function getLocaleLabel(locale) { hi: '🇮🇳 हिन्दी', zh: '🇨🇳 中文', ja: '🇯🇵 日本語', + hr: '🇭🇷 Hrvatski', + sr: '🇷🇸 Srpski', }; return labels[locale] || locale; }