Add Croatian and Slovenian localizations, implement locale preferences, and update settings screen

- Created `app_localizations_hr.dart` and `app_localizations_sl.dart` for Croatian and Slovenian translations.
- Added `app_sl.arb` file for Slovenian localization strings.
- Enhanced `main.dart` to support locale selection and initialization.
- Updated `home_screen.dart` and `settings_screen.dart` to handle locale changes and display current language.
- Implemented `locale_preferences.dart` service for managing locale settings using SharedPreferences.
- Modified `pubspec.yaml` to include `flutter_localizations` and enable localization file generation.
This commit is contained in:
Janez T
2025-10-16 14:42:43 +02:00
parent 95333a13b8
commit 4c8e0e5d61
15 changed files with 2615 additions and 214 deletions

View File

@@ -0,0 +1,281 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Croatian (`hr`).
class AppLocalizationsHr extends AppLocalizations {
AppLocalizationsHr([String locale = 'hr']) : super(locale);
@override
String get appTitle => 'MeshCore SAR';
@override
String get messages => 'Poruke';
@override
String get contacts => 'Kontakti';
@override
String get map => 'Karta';
@override
String get settings => 'Postavke';
@override
String get connect => 'Poveži';
@override
String get disconnect => 'Prekini';
@override
String get scanningForDevices => 'Skeniranje uređaja...';
@override
String get noDevicesFound => 'Nisu pronađeni uređaji';
@override
String get scanAgain => 'Skeniraj ponovno';
@override
String get tapToConnect => 'Dodirnite za povezivanje';
@override
String get deviceNotConnected => 'Uređaj nije povezan';
@override
String get locationPermissionDenied => 'Dopuštenje za lokaciju odbijeno';
@override
String get locationPermissionPermanentlyDenied =>
'Dopuštenje za lokaciju trajno odbijeno. Molimo omogućite u Postavkama.';
@override
String get locationServicesDisabled =>
'Usluge lokacije su onemogućene. Molimo omogućite ih u Postavkama.';
@override
String get failedToGetGpsLocation => 'Neuspjelo dobivanje GPS lokacije';
@override
String advertisedAtLocation(String latitude, String longitude) {
return 'Objavljeno na $latitude, $longitude';
}
@override
String failedToAdvertise(String error) {
return 'Neuspjela objava: $error';
}
@override
String reconnecting(int attempt, int max) {
return 'Ponovno povezivanje... ($attempt/$max)';
}
@override
String get cancelReconnection => 'Otkaži ponovno povezivanje';
@override
String get mapManagement => 'Upravljanje kartom';
@override
String get general => 'Općenito';
@override
String get theme => 'Tema';
@override
String get chooseTheme => 'Odaberite temu';
@override
String get light => 'Svijetla';
@override
String get dark => 'Tamna';
@override
String get blueLightTheme => 'Plava svijetla tema';
@override
String get blueDarkTheme => 'Plava tamna tema';
@override
String get sarRed => 'SAR crvena';
@override
String get alertEmergencyMode => 'Način upozorenja/hitna situacija';
@override
String get sarGreen => 'SAR zelena';
@override
String get safeAllClearMode => 'Način sigurno/sve jasno';
@override
String get autoSystem => 'Automatski (Sustav)';
@override
String get followSystemTheme => 'Slijedi sistemsku temu';
@override
String get showRxTxIndicators => 'Prikaži RX/TX indikatore';
@override
String get displayPacketActivity =>
'Prikaži indikatore aktivnosti paketa u gornjoj traci';
@override
String get language => 'Jezik';
@override
String get chooseLanguage => 'Odaberite jezik';
@override
String get english => 'Engleski';
@override
String get slovenian => 'Slovenski';
@override
String get croatian => 'Hrvatski';
@override
String get locationBroadcasting => 'Emitiranje lokacije';
@override
String get autoLocationTracking => 'Automatsko praćenje lokacije';
@override
String get automaticallyBroadcastPosition =>
'Automatski emitiraj ažuriranja pozicije';
@override
String get configureTracking => 'Konfiguriraj praćenje';
@override
String get distanceAndTimeThresholds => 'Pragovi udaljenosti i vremena';
@override
String get locationTrackingConfiguration => 'Konfiguracija praćenja lokacije';
@override
String get configureWhenLocationBroadcasts =>
'Konfigurirajte kada se emitiranja lokacije šalju u mesh mrežu';
@override
String get minimumDistance => 'Minimalna udaljenost';
@override
String broadcastAfterMoving(String distance) {
return 'Emitiraj tek nakon pomicanja $distance metara';
}
@override
String get maximumDistance => 'Maksimalna udaljenost';
@override
String alwaysBroadcastAfterMoving(String distance) {
return 'Uvijek emitiraj nakon pomicanja $distance metara';
}
@override
String get minimumTimeInterval => 'Minimalni vremenski interval';
@override
String alwaysBroadcastEvery(String duration) {
return 'Uvijek emitiraj svakih $duration';
}
@override
String get save => 'Spremi';
@override
String get cancel => 'Otkaži';
@override
String get close => 'Zatvori';
@override
String get about => 'O aplikaciji';
@override
String get appVersion => 'Verzija aplikacije';
@override
String get appName => 'Ime aplikacije';
@override
String get aboutMeshCoreSar => 'O MeshCore SAR';
@override
String get aboutDescription =>
'Aplikacija za potragu i spašavanje dizajnirana za timove za hitne slučajeve. Značajke uključuju:\n\n• BLE mesh mrežu za komunikaciju uređaj-uređaj\n• Offline karte s više slojeva\n• Praćenje članova tima u stvarnom vremenu\n• SAR taktički markeri (pronađena osoba, požar, zbirno mjesto)\n• Upravljanje kontaktima i razmjena poruka\n• GPS praćenje s kompasnim smjerom\n• Predmemoriranje karata za offline upotrebu';
@override
String get technologiesUsed => 'Korištene tehnologije:';
@override
String get technologiesList =>
'• Flutter za višeplatformski razvoj\n• BLE (Bluetooth Low Energy) za mesh mrežu\n• OpenStreetMap za kartografiju\n• Provider za upravljanje stanjem\n• SharedPreferences za lokalno pohranu';
@override
String get developer => 'Programer';
@override
String get packageName => 'Ime paketa';
@override
String get sampleData => 'Primjer podataka';
@override
String get sampleDataDescription =>
'Učitajte ili očistite primjere kontakata, poruka kanala i SAR markera za testiranje';
@override
String get loadSampleData => 'Učitaj primjer podataka';
@override
String get clearAllData => 'Očisti sve podatke';
@override
String get clearAllDataConfirmTitle => 'Očisti sve podatke';
@override
String get clearAllDataConfirmMessage =>
'Ovo će očistiti sve kontakte i SAR markere. Jeste li sigurni?';
@override
String get clear => 'Očisti';
@override
String loadedSampleData(
int teamCount,
int channelCount,
int sarCount,
int messageCount,
) {
return 'Učitano $teamCount članova tima, $channelCount kanala, $sarCount SAR markera, $messageCount poruka';
}
@override
String failedToLoadSampleData(String error) {
return 'Neuspjelo učitavanje primjera podataka: $error';
}
@override
String get allDataCleared => 'Svi podaci očišćeni';
@override
String get failedToStartBackgroundTracking =>
'Neuspjelo pokretanje praćenja u pozadini. Provjerite dopuštenja i BLE vezu.';
@override
String locationBroadcast(String latitude, String longitude) {
return 'Emitiranje lokacije: $latitude, $longitude';
}
@override
String get defaultPinInfo =>
'Zadani PIN za uređaje bez zaslona je 123456. Problemi s uparivanjem? Zaboravite bluetooth uređaj u postavkama sustava.';
}