Files
stadtbote-app/lib/tools/app_localizations.dart
T
2026-02-25 10:40:29 +01:00

1307 lines
44 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'package:stadtbote/tools/util.dart';
enum AppLanguage {
german('de', 'Deutsch', '🇩🇪'),
english('en', 'English', '🇬🇧'),
spanish('es', 'Español', '🇪🇸'),
french('fr', 'Français', '🇫🇷'),
polish('pl', 'Polski', '🇵🇱'),
russian('ru', 'Русский', '🇷🇺'),
turkish('tr', 'Türkçe', '🇹🇷'),
estonian('et', 'Eesti', '🇪🇪'),
latvian('lv', 'Latviešu', '🇱🇻'),
lithuanian('lt', 'Lietuvių', '🇱🇹');
final String code;
final String name;
final String flag;
const AppLanguage(this.code, this.name, this.flag);
static AppLanguage fromCode(String code) {
return AppLanguage.values.firstWhere(
(lang) => lang.code == code,
orElse: () => AppLanguage.german,
);
}
}
class AppLocalizations {
static final AppLocalizations _instance = AppLocalizations._internal();
factory AppLocalizations() => _instance;
AppLocalizations._internal();
static const String _prefsLanguageKey = 'app_language';
AppLanguage _currentLanguage = AppLanguage.german;
AppLanguage get currentLanguage => _currentLanguage;
void setLanguage(AppLanguage language) {
_currentLanguage = language;
Util.preferencesSaveString(_prefsLanguageKey, language.code);
}
void loadSavedLanguage() {
final savedCode = Util.preferencesGetString(_prefsLanguageKey, null);
if (savedCode != null) {
_currentLanguage = AppLanguage.fromCode(savedCode);
}
}
// Hilfsmethode für einfachen Zugriff
static String tr(String key) {
return _instance._translations[_instance._currentLanguage.code]?[key] ??
_instance._translations['de']?[key] ??
key;
}
// Alle Übersetzungen
final Map<String, Map<String, String>> _translations = {
// Deutsch
'de': {
// Hauptseite
'assigned_jobs': 'Zugewiesene Aufträge',
'accepted_jobs': 'Angenommene Aufträge',
'finished_jobs': 'Erledigte Aufträge',
'messages': 'Nachrichten',
'approach_area': 'Anfahrtsbereich',
'desired_zip': 'Wunschziel für heute',
'login': 'Anmelden',
'logout': 'Abmelden',
'courier_id': 'Kurierkennung',
'message': 'Meldung',
'location': 'Ortung',
// Dialoge
'warning': 'Warnung',
'information': 'Information',
'error': 'Fehler',
'yes': 'Ja',
'no': 'Nein',
'ok': 'OK',
'close': 'Schließen',
'back': 'Zurück',
'confirm': 'Bestätigen',
'cancel': 'Abbrechen',
// Logout Dialog
'logout_confirm': 'Wollen Sie sich wirklich abmelden?',
'logging_out': 'Sie werden abgemeldet.\nBitte warten...',
// Info Dialog
'version': 'Versionsnummer',
'connection_status': 'Verbindungsstatus',
'connected': 'Verbunden',
'not_connected': 'NICHT verbunden',
'gps_status': 'GPS-Status',
'gps_available': 'aktuell',
'gps_outdated': 'veraltet',
'gps_not_available': 'nicht verfügbar',
'loading': 'wird geladen...',
'user_status': 'User Status',
'no_info_found': 'Keine Informationen gefunden',
'language': 'Sprache',
// Job-Seiten
'new': 'Neu',
'accept': 'Annehmen',
'decline': 'Ablehnen',
'ignore': 'Ignorieren',
'order_number': 'Auftragsnummer',
'more_info': 'Weitere Infos....',
'list_of_stations': 'Liste der Stationen',
'station': 'Station',
'map': 'Karte',
// Tour Details
'station_details': 'Details der Station',
'phone': 'Tel.',
'commission_number': 'Komm-#',
'next': 'Weiter',
'files_available': 'Dateien verfügbar',
'no_remark': '* Keine Bemerkung vorhanden *',
// Tour Modus
'pickup': 'Abholung',
'delivery': 'Auslieferung',
'pickup_delivery': 'Abholung/Auslieferung',
// Fahrzeugtypen
'bicycle': 'Fahrrad',
'car': 'Pkw',
'station_wagon': 'Kombi',
'van': 'Kasten',
'bus': 'Bus',
'large_bus': 'GrBus',
'truck': 'Lkw',
'service': 'Service',
'unknown': 'Unbekannt',
// Aufgabenliste
'task_list': 'Liste der Aufgaben',
'commission_number_short': 'Komm-#',
'photos_taken': 'Fotos aufgenommen',
'signature_captured': 'Unterschrift erfasst',
'barcodes_scanned': 'Barcodes gescannt',
// Popup Dialoge
'apply': 'Übernehmen',
'add': 'Hinzufügen',
'delete': 'Löschen',
'signature': 'Unterschrift',
'signature_too_short': 'Die Unterschrift ist zu kurz.',
'photos': 'Aufgenommene Fotos',
'min_photos_error': 'Es müssen mindestens {min} Foto(s) aufgenommen werden',
'delete_photo_confirm': 'Wollen Sie das Bild wirklich löschen?',
'delete_message_confirm': 'Soll die Nachricht gelöscht werden?',
'status': 'Status',
'remark': 'Bemerkung',
'enter_remark': 'Bitte geben Sie eine Bemerkung ein',
'gender': 'Geschlecht',
'enter_text_and_gender': 'Sie müssen einen Text eingeben und ein Geschlecht auswählen',
'attention': 'Achtung',
'close_dialog_warning': 'Wenn Sie den Dialog jetzt schließen gehen erfasste Daten verloren und die Aufgabe oder Station bleibt unerledigt.',
'zip_change_warning': 'ACHTUNG: Wenn Sie Ihre PLZ ändern, verlieren Sie Ihr Ranking!',
'release': 'Freimelden',
'zip': 'Postleitzahl',
'enter_zip': 'Bitte geben Sie eine fünfstellige Postleitzahl ein',
'enter_desired_zip': 'Bitte geben Sie Ihr Wunschziel für heute ein',
'zip_hint': 'PLZ',
'zip_validation_error': 'Das Feld muss leer sein, oder es müssen fünf Zahlen eingegeben werden',
'enter_commission_number': 'Bitte geben Sie die Kommisionsnummer ein',
'commission_number_hint': 'Kommisionsnummer',
// Karte
'far': 'Fern',
'near': 'Nah',
'no_position': 'Es liegt keine Position für diese Station vor',
// Liste schließen
'close_list': 'Liste schliessen',
},
// English
'en': {
// Main Page
'assigned_jobs': 'Assigned Jobs',
'accepted_jobs': 'Accepted Jobs',
'finished_jobs': 'Finished Jobs',
'messages': 'Messages',
'approach_area': 'Approach Area',
'desired_zip': 'Desired Location for Today',
'login': 'Login',
'logout': 'Logout',
'courier_id': 'Courier ID',
'message': 'Message',
'location': 'Location',
// Dialogs
'warning': 'Warning',
'information': 'Information',
'error': 'Error',
'yes': 'Yes',
'no': 'No',
'ok': 'OK',
'close': 'Close',
'back': 'Back',
'confirm': 'Confirm',
'cancel': 'Cancel',
// Logout Dialog
'logout_confirm': 'Do you really want to logout?',
'logging_out': 'You are being logged out.\nPlease wait...',
// Info Dialog
'version': 'Version Number',
'connection_status': 'Connection Status',
'connected': 'Connected',
'not_connected': 'NOT connected',
'gps_status': 'GPS Status',
'gps_available': 'current',
'gps_outdated': 'outdated',
'gps_not_available': 'not available',
'loading': 'loading...',
'user_status': 'User Status',
'no_info_found': 'No information found',
'language': 'Language',
// Job Pages
'new': 'New',
'accept': 'Accept',
'decline': 'Decline',
'ignore': 'Ignore',
'order_number': 'Order Number',
'more_info': 'More Info....',
'list_of_stations': 'List of Stations',
'station': 'Station',
'map': 'Map',
// Tour Details
'station_details': 'Station Details',
'phone': 'Tel.',
'commission_number': 'Comm-#',
'next': 'Next',
'files_available': 'Files Available',
'no_remark': '* No remark available *',
// Tour Mode
'pickup': 'Pickup',
'delivery': 'Delivery',
'pickup_delivery': 'Pickup/Delivery',
// Vehicle Types
'bicycle': 'Bicycle',
'car': 'Car',
'station_wagon': 'Station Wagon',
'van': 'Van',
'bus': 'Bus',
'large_bus': 'Large Bus',
'truck': 'Truck',
'service': 'Service',
'unknown': 'Unknown',
// Task List
'task_list': 'Task List',
'commission_number_short': 'Comm-#',
'photos_taken': 'Photos taken',
'signature_captured': 'Signature captured',
'barcodes_scanned': 'Barcodes scanned',
// Popup Dialogs
'apply': 'Apply',
'add': 'Add',
'delete': 'Delete',
'signature': 'Signature',
'signature_too_short': 'The signature is too short.',
'photos': 'Taken Photos',
'min_photos_error': 'At least {min} photo(s) must be taken',
'delete_photo_confirm': 'Do you really want to delete this image?',
'delete_message_confirm': 'Should the message be deleted?',
'status': 'Status',
'remark': 'Remark',
'enter_remark': 'Please enter a remark',
'gender': 'Gender',
'enter_text_and_gender': 'You must enter text and select a gender',
'attention': 'Attention',
'close_dialog_warning': 'If you close this dialog now, captured data will be lost and the task or station will remain incomplete.',
'zip_change_warning': 'WARNING: If you change your ZIP code, you will lose your ranking!',
'release': 'Release',
'zip': 'ZIP Code',
'enter_zip': 'Please enter a five-digit ZIP code',
'enter_desired_zip': 'Please enter your desired location for today',
'zip_hint': 'ZIP',
'zip_validation_error': 'The field must be empty or five digits must be entered',
'enter_commission_number': 'Please enter the commission number',
'commission_number_hint': 'Commission Number',
// Map
'far': 'Far',
'near': 'Near',
'no_position': 'No position is available for this station',
// Close List
'close_list': 'Close List',
},
// Spanish
'es': {
// Main Page
'assigned_jobs': 'Trabajos Asignados',
'accepted_jobs': 'Trabajos Aceptados',
'finished_jobs': 'Trabajos Terminados',
'messages': 'Mensajes',
'approach_area': 'Área de Aproximación',
'desired_zip': 'Ubicación Deseada para Hoy',
'login': 'Iniciar Sesión',
'logout': 'Cerrar Sesión',
'courier_id': 'ID de Mensajero',
'message': 'Mensaje',
'location': 'Ubicación',
// Dialogs
'warning': 'Advertencia',
'information': 'Información',
'error': 'Error',
'yes': 'Sí',
'no': 'No',
'ok': 'OK',
'close': 'Cerrar',
'back': 'Atrás',
'confirm': 'Confirmar',
'cancel': 'Cancelar',
// Logout Dialog
'logout_confirm': '¿Realmente desea cerrar sesión?',
'logging_out': 'Se está cerrando su sesión.\nPor favor espere...',
// Info Dialog
'version': 'Número de Versión',
'connection_status': 'Estado de Conexión',
'connected': 'Conectado',
'not_connected': 'NO conectado',
'gps_status': 'Estado del GPS',
'gps_available': 'actual',
'gps_outdated': 'desactualizado',
'gps_not_available': 'no disponible',
'loading': 'cargando...',
'user_status': 'Estado del Usuario',
'no_info_found': 'No se encontró información',
'language': 'Idioma',
// Job Pages
'new': 'Nuevo',
'accept': 'Aceptar',
'decline': 'Rechazar',
'ignore': 'Ignorar',
'order_number': 'Número de Orden',
'more_info': 'Más Información....',
'list_of_stations': 'Lista de Estaciones',
'station': 'Estación',
'map': 'Mapa',
// Tour Details
'station_details': 'Detalles de la Estación',
'phone': 'Tel.',
'commission_number': 'Núm. Com.',
'next': 'Siguiente',
'files_available': 'Archivos Disponibles',
'no_remark': '* No hay observaciones disponibles *',
// Tour Mode
'pickup': 'Recogida',
'delivery': 'Entrega',
'pickup_delivery': 'Recogida/Entrega',
// Vehicle Types
'bicycle': 'Bicicleta',
'car': 'Coche',
'station_wagon': 'Familiar',
'van': 'Furgoneta',
'bus': 'Autobús',
'large_bus': 'Autobús Grande',
'truck': 'Camión',
'service': 'Servicio',
'unknown': 'Desconocido',
// Task List
'task_list': 'Lista de Tareas',
'commission_number_short': 'Núm. Com.',
'photos_taken': 'Fotos tomadas',
'signature_captured': 'Firma capturada',
'barcodes_scanned': 'Códigos escaneados',
// Popup Dialogs
'apply': 'Aplicar',
'add': 'Añadir',
'delete': 'Eliminar',
'signature': 'Firma',
'signature_too_short': 'La firma es demasiado corta.',
'photos': 'Fotos Tomadas',
'min_photos_error': 'Se deben tomar al menos {min} foto(s)',
'delete_photo_confirm': '¿Realmente desea eliminar esta imagen?',
'delete_message_confirm': '¿Se debe eliminar el mensaje?',
'status': 'Estado',
'remark': 'Observación',
'enter_remark': 'Por favor ingrese una observación',
'gender': 'Género',
'enter_text_and_gender': 'Debe ingresar texto y seleccionar un género',
'attention': 'Atención',
'close_dialog_warning': 'Si cierra este diálogo ahora, los datos capturados se perderán y la tarea o estación permanecerá incompleta.',
'zip_change_warning': '¡ATENCIÓN: Si cambia su código postal, perderá su clasificación!',
'release': 'Liberar',
'zip': 'Código Postal',
'enter_zip': 'Por favor ingrese un código postal de cinco dígitos',
'enter_desired_zip': 'Por favor ingrese su ubicación deseada para hoy',
'zip_hint': 'CP',
'zip_validation_error': 'El campo debe estar vacío o deben ingresarse cinco dígitos',
'enter_commission_number': 'Por favor ingrese el número de comisión',
'commission_number_hint': 'Número de Comisión',
// Map
'far': 'Lejos',
'near': 'Cerca',
'no_position': 'No hay posición disponible para esta estación',
// Close List
'close_list': 'Cerrar Lista',
},
// French
'fr': {
// Main Page
'assigned_jobs': 'Tâches Assignées',
'accepted_jobs': 'Tâches Acceptées',
'finished_jobs': 'Tâches Terminées',
'messages': 'Messages',
'approach_area': "Zone d'Approche",
'desired_zip': 'Lieu Souhaité pour Aujourd\'hui',
'login': 'Connexion',
'logout': 'Déconnexion',
'courier_id': 'ID Coursier',
'message': 'Message',
'location': 'Localisation',
// Dialogs
'warning': 'Avertissement',
'information': 'Information',
'error': 'Erreur',
'yes': 'Oui',
'no': 'Non',
'ok': 'OK',
'close': 'Fermer',
'back': 'Retour',
'confirm': 'Confirmer',
'cancel': 'Annuler',
// Logout Dialog
'logout_confirm': 'Voulez-vous vraiment vous déconnecter?',
'logging_out': 'Vous êtes déconnecté.\nVeuillez patienter...',
// Info Dialog
'version': 'Numéro de Version',
'connection_status': 'État de la Connexion',
'connected': 'Connecté',
'not_connected': 'NON connecté',
'gps_status': 'État du GPS',
'gps_available': 'actuel',
'gps_outdated': 'périmé',
'gps_not_available': 'non disponible',
'loading': 'chargement...',
'user_status': 'État de l\'Utilisateur',
'no_info_found': 'Aucune information trouvée',
'language': 'Langue',
// Job Pages
'new': 'Nouveau',
'accept': 'Accepter',
'decline': 'Refuser',
'ignore': 'Ignorer',
'order_number': 'Numéro de Commande',
'more_info': 'Plus d\'Infos....',
'list_of_stations': 'Liste des Stations',
'station': 'Station',
'map': 'Carte',
// Tour Details
'station_details': 'Détails de la Station',
'phone': 'Tél.',
'commission_number': 'N° Comm.',
'next': 'Suivant',
'files_available': 'Fichiers Disponibles',
'no_remark': '* Aucune remarque disponible *',
// Tour Mode
'pickup': 'Collecte',
'delivery': 'Livraison',
'pickup_delivery': 'Collecte/Livraison',
// Vehicle Types
'bicycle': 'Vélo',
'car': 'Voiture',
'station_wagon': 'Break',
'van': 'Camionnette',
'bus': 'Bus',
'large_bus': 'Grand Bus',
'truck': 'Camion',
'service': 'Service',
'unknown': 'Inconnu',
// Task List
'task_list': 'Liste des Tâches',
'commission_number_short': 'N° Comm.',
'photos_taken': 'Photos prises',
'signature_captured': 'Signature capturée',
'barcodes_scanned': 'Codes-barres scannés',
// Popup Dialogs
'apply': 'Appliquer',
'add': 'Ajouter',
'delete': 'Supprimer',
'signature': 'Signature',
'signature_too_short': 'La signature est trop courte.',
'photos': 'Photos Prises',
'min_photos_error': 'Au moins {min} photo(s) doit être prise',
'delete_photo_confirm': 'Voulez-vous vraiment supprimer cette image?',
'delete_message_confirm': 'Le message doit-il être supprimé?',
'status': 'État',
'remark': 'Remarque',
'enter_remark': 'Veuillez saisir une remarque',
'gender': 'Genre',
'enter_text_and_gender': 'Vous devez saisir du texte et sélectionner un genre',
'attention': 'Attention',
'close_dialog_warning': 'Si vous fermez cette boîte de dialogue maintenant, les données capturées seront perdues et la tâche ou la station restera incomplète.',
'zip_change_warning': 'ATTENTION: Si vous changez votre code postal, vous perdrez votre classement!',
'release': 'Libérer',
'zip': 'Code Postal',
'enter_zip': 'Veuillez saisir un code postal à cinq chiffres',
'enter_desired_zip': 'Veuillez saisir votre lieu souhaité pour aujourd\'hui',
'zip_hint': 'CP',
'zip_validation_error': 'Le champ doit être vide ou cinq chiffres doivent être saisis',
'enter_commission_number': 'Veuillez saisir le numéro de commission',
'commission_number_hint': 'Numéro de Commission',
// Map
'far': 'Loin',
'near': 'Près',
'no_position': 'Aucune position n\'est disponible pour cette station',
// Close List
'close_list': 'Fermer la Liste',
},
// Polish
'pl': {
// Main Page
'assigned_jobs': 'Przypisane Zadania',
'accepted_jobs': 'Przyjęte Zadania',
'finished_jobs': 'Zakończone Zadania',
'messages': 'Wiadomości',
'approach_area': 'Strefa Dojazdu',
'desired_zip': 'Pożądana Lokalizacja na Dziś',
'login': 'Zaloguj',
'logout': 'Wyloguj',
'courier_id': 'ID Kuriera',
'message': 'Wiadomość',
'location': 'Lokalizacja',
// Dialogs
'warning': 'Ostrzeżenie',
'information': 'Informacja',
'error': 'Błąd',
'yes': 'Tak',
'no': 'Nie',
'ok': 'OK',
'close': 'Zamknij',
'back': 'Wstecz',
'confirm': 'Potwierdź',
'cancel': 'Anuluj',
// Logout Dialog
'logout_confirm': 'Czy na pewno chcesz się wylogować?',
'logging_out': 'Trwa wylogowywanie.\nProszę czekać...',
// Info Dialog
'version': 'Numer Wersji',
'connection_status': 'Status Połączenia',
'connected': 'Połączony',
'not_connected': 'NIE połączony',
'gps_status': 'Status GPS',
'gps_available': 'aktualny',
'gps_outdated': 'przestarzały',
'gps_not_available': 'niedostępny',
'loading': 'ładowanie...',
'user_status': 'Status Użytkownika',
'no_info_found': 'Nie znaleziono informacji',
'language': 'Język',
// Job Pages
'new': 'Nowy',
'accept': 'Przyjmij',
'decline': 'Odrzuć',
'ignore': 'Ignoruj',
'order_number': 'Numer Zamówienia',
'more_info': 'Więcej Informacji....',
'list_of_stations': 'Lista Stacji',
'station': 'Stacja',
'map': 'Mapa',
// Tour Details
'station_details': 'Szczegóły Stacji',
'phone': 'Tel.',
'commission_number': 'Nr Zlec.',
'next': 'Dalej',
'files_available': 'Dostępne Pliki',
'no_remark': '* Brak dostępnych uwag *',
// Tour Mode
'pickup': 'Odbiór',
'delivery': 'Dostawa',
'pickup_delivery': 'Odbiór/Dostawa',
// Vehicle Types
'bicycle': 'Rower',
'car': 'Samochód',
'station_wagon': 'Kombi',
'van': 'Van',
'bus': 'Autobus',
'large_bus': 'Duży Autobus',
'truck': 'Ciężarówka',
'service': 'Serwis',
'unknown': 'Nieznany',
// Task List
'task_list': 'Lista Zadań',
'commission_number_short': 'Nr Zlec.',
'photos_taken': 'Zrobione zdjęcia',
'signature_captured': 'Podpis zapisany',
'barcodes_scanned': 'Zeskanowane kody',
// Popup Dialogs
'apply': 'Zastosuj',
'add': 'Dodaj',
'delete': 'Usuń',
'signature': 'Podpis',
'signature_too_short': 'Podpis jest za krótki.',
'photos': 'Zrobione Zdjęcia',
'min_photos_error': 'Musi zostać wykonane co najmniej {min} zdjęcie',
'delete_photo_confirm': 'Czy na pewno chcesz usunąć to zdjęcie?',
'delete_message_confirm': 'Czy wiadomość powinna zostać usunięta?',
'status': 'Status',
'remark': 'Uwaga',
'enter_remark': 'Proszę wprowadzić uwagę',
'gender': 'Płeć',
'enter_text_and_gender': 'Musisz wprowadzić tekst i wybrać płeć',
'attention': 'Uwaga',
'close_dialog_warning': 'Jeśli zamkniesz to okno teraz, zebrane dane zostaną utracone, a zadanie lub stacja pozostanie niezakończone.',
'zip_change_warning': 'UWAGA: Jeśli zmienisz kod pocztowy, stracisz swoją pozycję w rankingu!',
'release': 'Zwolnij',
'zip': 'Kod Pocztowy',
'enter_zip': 'Proszę wprowadzić pięciocyfrowy kod pocztowy',
'enter_desired_zip': 'Proszę wprowadzić pożądaną lokalizację na dziś',
'zip_hint': 'Kod',
'zip_validation_error': 'Pole musi być puste lub muszą zostać wprowadzone pięć cyfr',
'enter_commission_number': 'Proszę wprowadzić numer zlecenia',
'commission_number_hint': 'Numer Zlecenia',
// Map
'far': 'Daleko',
'near': 'Blisko',
'no_position': 'Brak dostępnej pozycji dla tej stacji',
// Close List
'close_list': 'Zamknij Listę',
},
// Russian
'ru': {
// Main Page
'assigned_jobs': 'Назначенные Задания',
'accepted_jobs': 'Принятые Задания',
'finished_jobs': 'Завершенные Задания',
'messages': 'Сообщения',
'approach_area': 'Зона Доступа',
'desired_zip': 'Желаемое Местоположение на Сегодня',
'login': 'Войти',
'logout': 'Выйти',
'courier_id': 'ID Курьера',
'message': 'Сообщение',
'location': 'Местоположение',
// Dialogs
'warning': 'Предупреждение',
'information': 'Информация',
'error': 'Ошибка',
'yes': 'Да',
'no': 'Нет',
'ok': 'OK',
'close': 'Закрыть',
'back': 'Назад',
'confirm': 'Подтвердить',
'cancel': 'Отмена',
// Logout Dialog
'logout_confirm': 'Вы действительно хотите выйти?',
'logging_out': 'Выход из системы.\nПожалуйста, подождите...',
// Info Dialog
'version': 'Номер Версии',
'connection_status': 'Статус Подключения',
'connected': 'Подключено',
'not_connected': 'НЕ подключено',
'gps_status': 'Статус GPS',
'gps_available': 'текущий',
'gps_outdated': 'устаревший',
'gps_not_available': 'недоступен',
'loading': 'загрузка...',
'user_status': 'Статус Пользователя',
'no_info_found': 'Информация не найдена',
'language': 'Язык',
// Job Pages
'new': 'Новое',
'accept': 'Принять',
'decline': 'Отклонить',
'ignore': 'Игнорировать',
'order_number': 'Номер Заказа',
'more_info': 'Подробнее....',
'list_of_stations': 'Список Станций',
'station': 'Станция',
'map': 'Карта',
// Tour Details
'station_details': 'Детали Станции',
'phone': 'Тел.',
'commission_number': '№ Комм.',
'next': 'Далее',
'files_available': 'Доступные Файлы',
'no_remark': '* Нет доступных примечаний *',
// Tour Mode
'pickup': 'Забор',
'delivery': 'Доставка',
'pickup_delivery': 'Забор/Доставка',
// Vehicle Types
'bicycle': 'Велосипед',
'car': 'Автомобиль',
'station_wagon': 'Универсал',
'van': 'Фургон',
'bus': 'Автобус',
'large_bus': 'Большой Автобус',
'truck': 'Грузовик',
'service': 'Сервис',
'unknown': 'Неизвестно',
// Task List
'task_list': 'Список Задач',
'commission_number_short': '№ Комм.',
'photos_taken': 'Фотографии сделаны',
'signature_captured': 'Подпись сохранена',
'barcodes_scanned': 'Штрих-коды отсканированы',
// Popup Dialogs
'apply': 'Применить',
'add': 'Добавить',
'delete': 'Удалить',
'signature': 'Подпись',
'signature_too_short': 'Подпись слишком короткая.',
'photos': 'Сделанные Фотографии',
'min_photos_error': 'Должно быть сделано не менее {min} фото',
'delete_photo_confirm': 'Вы действительно хотите удалить это изображение?',
'delete_message_confirm': 'Сообщение должно быть удалено?',
'status': 'Статус',
'remark': 'Примечание',
'enter_remark': 'Пожалуйста, введите примечание',
'gender': 'Пол',
'enter_text_and_gender': 'Вы должны ввести текст и выбрать пол',
'attention': 'Внимание',
'close_dialog_warning': 'Если вы закроете этот диалог сейчас, собранные данные будут потеряны, и задача или станция останутся незавершенными.',
'zip_change_warning': 'ВНИМАНИЕ: Если вы измените почтовый индекс, вы потеряете свой рейтинг!',
'release': 'Освободить',
'zip': 'Почтовый Индекс',
'enter_zip': 'Пожалуйста, введите пятизначный почтовый индекс',
'enter_desired_zip': 'Пожалуйста, введите желаемое местоположение на сегодня',
'zip_hint': 'Индекс',
'zip_validation_error': 'Поле должно быть пустым или должны быть введены пять цифр',
'enter_commission_number': 'Пожалуйста, введите номер комиссии',
'commission_number_hint': 'Номер Комиссии',
// Map
'far': 'Далеко',
'near': 'Близко',
'no_position': 'Для этой станции нет доступной позиции',
// Close List
'close_list': 'Закрыть Список',
},
// Turkish
'tr': {
// Main Page
'assigned_jobs': 'Atanan Görevler',
'accepted_jobs': 'Kabul Edilen Görevler',
'finished_jobs': 'Tamamlanan Görevler',
'messages': 'Mesajlar',
'approach_area': 'Yaklaşım Bölgesi',
'desired_zip': 'Bugün İçin İstenen Konum',
'login': 'Giriş',
'logout': 'Çıkış',
'courier_id': 'Kurye ID',
'message': 'Mesaj',
'location': 'Konum',
// Dialogs
'warning': 'Uyarı',
'information': 'Bilgi',
'error': 'Hata',
'yes': 'Evet',
'no': 'Hayır',
'ok': 'OK',
'close': 'Kapat',
'back': 'Geri',
'confirm': 'Onayla',
'cancel': 'İptal',
// Logout Dialog
'logout_confirm': 'Gerçekten çıkış yapmak istiyor musunuz?',
'logging_out': 'Çıkış yapılıyor.\nLütfen bekleyin...',
// Info Dialog
'version': 'Sürüm Numarası',
'connection_status': 'Bağlantı Durumu',
'connected': 'Bağlı',
'not_connected': 'BAĞLI DEĞİL',
'gps_status': 'GPS Durumu',
'gps_available': 'güncel',
'gps_outdated': 'eski',
'gps_not_available': 'mevcut değil',
'loading': 'yükleniyor...',
'user_status': 'Kullanıcı Durumu',
'no_info_found': 'Bilgi bulunamadı',
'language': 'Dil',
// Job Pages
'new': 'Yeni',
'accept': 'Kabul Et',
'decline': 'Reddet',
'ignore': 'Yoksay',
'order_number': 'Sipariş Numarası',
'more_info': 'Daha Fazla Bilgi....',
'list_of_stations': 'İstasyon Listesi',
'station': 'İstasyon',
'map': 'Harita',
// Tour Details
'station_details': 'İstasyon Detayları',
'phone': 'Tel.',
'commission_number': 'Kom. No.',
'next': 'Sonraki',
'files_available': 'Dosyalar Mevcut',
'no_remark': '* Mevcut not yok *',
// Tour Mode
'pickup': 'Alım',
'delivery': 'Teslimat',
'pickup_delivery': 'Alım/Teslimat',
// Vehicle Types
'bicycle': 'Bisiklet',
'car': 'Araba',
'station_wagon': 'Station Wagon',
'van': 'Van',
'bus': 'Otobüs',
'large_bus': 'Büyük Otobüs',
'truck': 'Kamyon',
'service': 'Servis',
'unknown': 'Bilinmiyor',
// Task List
'task_list': 'Görev Listesi',
'commission_number_short': 'Kom. No.',
'photos_taken': 'Fotoğraflar çekildi',
'signature_captured': 'İmza kaydedildi',
'barcodes_scanned': 'Barkodlar tarandı',
// Popup Dialogs
'apply': 'Uygula',
'add': 'Ekle',
'delete': 'Sil',
'signature': 'İmza',
'signature_too_short': 'İmza çok kısa.',
'photos': 'Çekilen Fotoğraflar',
'min_photos_error': 'En az {min} fotoğraf çekilmelidir',
'delete_photo_confirm': 'Bu görüntüyü gerçekten silmek istiyor musunuz?',
'delete_message_confirm': 'Mesaj silinsin mi?',
'status': 'Durum',
'remark': 'Not',
'enter_remark': 'Lütfen bir not girin',
'gender': 'Cinsiyet',
'enter_text_and_gender': 'Metin girmeli ve cinsiyet seçmelisiniz',
'attention': 'Dikkat',
'close_dialog_warning': 'Bu iletişim kutusunu şimdi kapatırsanız, yakalanan veriler kaybolacak ve görev veya istasyon tamamlanmamış kalacaktır.',
'zip_change_warning': 'DİKKAT: Posta kodunuzu değiştirirseniz, sıralamanızı kaybedersiniz!',
'release': 'Serbest Bırak',
'zip': 'Posta Kodu',
'enter_zip': 'Lütfen beş haneli bir posta kodu girin',
'enter_desired_zip': 'Lütfen bugün için istediğiniz konumu girin',
'zip_hint': 'PK',
'zip_validation_error': 'Alan boş olmalı veya beş rakam girilmelidir',
'enter_commission_number': 'Lütfen komisyon numarasını girin',
'commission_number_hint': 'Komisyon Numarası',
// Map
'far': 'Uzak',
'near': 'Yakın',
'no_position': 'Bu istasyon için mevcut bir konum yok',
// Close List
'close_list': 'Listeyi Kapat',
},
// Estonian
'et': {
// Main Page
'assigned_jobs': 'Määratud Ülesanded',
'accepted_jobs': 'Vastu Võetud Ülesanded',
'finished_jobs': 'Lõpetatud Ülesanded',
'messages': 'Sõnumid',
'approach_area': 'Ligipääsu Piirkond',
'desired_zip': 'Tänane Soovitud Asukoht',
'login': 'Logi Sisse',
'logout': 'Logi Välja',
'courier_id': 'Kulleri ID',
'message': 'Sõnum',
'location': 'Asukoht',
// Dialogs
'warning': 'Hoiatus',
'information': 'Teave',
'error': 'Viga',
'yes': 'Jah',
'no': 'Ei',
'ok': 'OK',
'close': 'Sulge',
'back': 'Tagasi',
'confirm': 'Kinnita',
'cancel': 'Tühista',
// Logout Dialog
'logout_confirm': 'Kas soovite tõesti välja logida?',
'logging_out': 'Logitakse välja.\nPalun oodake...',
// Info Dialog
'version': 'Versiooni Number',
'connection_status': 'Ühenduse Olek',
'connected': 'Ühendatud',
'not_connected': 'EI ühendatud',
'gps_status': 'GPS Olek',
'gps_available': 'kehtiv',
'gps_outdated': 'aegunud',
'gps_not_available': 'pole saadaval',
'loading': 'laadimine...',
'user_status': 'Kasutaja Olek',
'no_info_found': 'Teavet ei leitud',
'language': 'Keel',
// Job Pages
'new': 'Uus',
'accept': 'Võta vastu',
'decline': 'Keeldu',
'ignore': 'Ignoreeri',
'order_number': 'Tellimuse Number',
'more_info': 'Rohkem Infot....',
'list_of_stations': 'Jaamade Nimekiri',
'station': 'Jaam',
'map': 'Kaart',
// Tour Details
'station_details': 'Jaama Detailid',
'phone': 'Tel.',
'commission_number': 'Kom. Nr.',
'next': 'Edasi',
'files_available': 'Failid Saadaval',
'no_remark': '* Märkused puuduvad *',
// Tour Mode
'pickup': 'Pealevõtt',
'delivery': 'Kohaletoimetamine',
'pickup_delivery': 'Pealevõtt/Kohaletoimetamine',
// Vehicle Types
'bicycle': 'Jalgratas',
'car': 'Auto',
'station_wagon': 'Universaal',
'van': 'Kaubik',
'bus': 'Buss',
'large_bus': 'Suur Buss',
'truck': 'Veoauto',
'service': 'Teenindus',
'unknown': 'Teadmata',
// Task List
'task_list': 'Ülesannete Nimekiri',
'commission_number_short': 'Kom. Nr.',
'photos_taken': 'Fotod tehtud',
'signature_captured': 'Allkiri salvestatud',
'barcodes_scanned': 'Triipkoodid skaneeritud',
// Popup Dialogs
'apply': 'Rakenda',
'add': 'Lisa',
'delete': 'Kustuta',
'signature': 'Allkiri',
'signature_too_short': 'Allkiri on liiga lühike.',
'photos': 'Tehtud Fotod',
'min_photos_error': 'Peab tegema vähemalt {min} foto(t)',
'delete_photo_confirm': 'Kas soovite tõesti selle pildi kustutada?',
'delete_message_confirm': 'Kas sõnum tuleks kustutada?',
'status': 'Olek',
'remark': 'Märkus',
'enter_remark': 'Palun sisestage märkus',
'gender': 'Sugu',
'enter_text_and_gender': 'Peate sisestama teksti ja valima soo',
'attention': 'Tähelepanu',
'close_dialog_warning': 'Kui sulgete selle dialoogi praegu, lähevad kogutud andmed kaotsi ja ülesanne või jaam jääb lõpetamata.',
'zip_change_warning': 'TÄHELEPANU: Kui muudate oma postiindeksit, kaotate oma reitingu!',
'release': 'Vabasta',
'zip': 'Postiindeks',
'enter_zip': 'Palun sisestage viiekohaline postiindeks',
'enter_desired_zip': 'Palun sisestage tänane soovitud asukoht',
'zip_hint': 'Indeks',
'zip_validation_error': 'Väli peab olema tühi või tuleb sisestada viis numbrit',
'enter_commission_number': 'Palun sisestage komisjoni number',
'commission_number_hint': 'Komisjoni Number',
// Map
'far': 'Kaugel',
'near': 'Lähedal',
'no_position': 'Selle jaama jaoks pole asukohta saadaval',
// Close List
'close_list': 'Sulge Nimekiri',
},
// Latvian
'lv': {
// Main Page
'assigned_jobs': 'Piešķirtie Uzdevumi',
'accepted_jobs': 'Pieņemtie Uzdevumi',
'finished_jobs': 'Pabeigtie Uzdevumi',
'messages': 'Ziņojumi',
'approach_area': 'Piekļuves Zona',
'desired_zip': 'Vēlamā Atrašanās Vieta Šodien',
'login': 'Pieteikties',
'logout': 'Iziet',
'courier_id': 'Kurjera ID',
'message': 'Ziņojums',
'location': 'Atrašanās Vieta',
// Dialogs
'warning': 'Brīdinājums',
'information': 'Informācija',
'error': 'Kļūda',
'yes': 'Jā',
'no': 'Nē',
'ok': 'OK',
'close': 'Aizvērt',
'back': 'Atpakaļ',
'confirm': 'Apstiprināt',
'cancel': 'Atcelt',
// Logout Dialog
'logout_confirm': 'Vai tiešām vēlaties iziet?',
'logging_out': 'Notiek iziešana.\nLūdzu, uzgaidiet...',
// Info Dialog
'version': 'Versijas Numurs',
'connection_status': 'Savienojuma Statuss',
'connected': 'Savienots',
'not_connected': 'NAV savienots',
'gps_status': 'GPS Statuss',
'gps_available': 'aktuāls',
'gps_outdated': 'novecojis',
'gps_not_available': 'nav pieejams',
'loading': 'ielādē...',
'user_status': 'Lietotāja Statuss',
'no_info_found': 'Informācija nav atrasta',
'language': 'Valoda',
// Job Pages
'new': 'Jauns',
'accept': 'Pieņemt',
'decline': 'Noraidīt',
'ignore': 'Ignorēt',
'order_number': 'Pasūtījuma Numurs',
'more_info': 'Vairāk Informācijas....',
'list_of_stations': 'Staciju Saraksts',
'station': 'Stacija',
'map': 'Karte',
// Tour Details
'station_details': 'Stacijas Detaļas',
'phone': 'Tālrunis',
'commission_number': 'Kom. Nr.',
'next': 'Tālāk',
'files_available': 'Pieejamie Faili',
'no_remark': '* Nav piezīmju *',
// Tour Mode
'pickup': 'Saņemšana',
'delivery': 'Piegāde',
'pickup_delivery': 'Saņemšana/Piegāde',
// Vehicle Types
'bicycle': 'Velosipēds',
'car': 'Automašīna',
'station_wagon': 'Universālis',
'van': 'Furgons',
'bus': 'Autobuss',
'large_bus': 'Liels Autobuss',
'truck': 'Kravas Automobilis',
'service': 'Serviss',
'unknown': 'Nezināms',
// Task List
'task_list': 'Uzdevumu Saraksts',
'commission_number_short': 'Kom. Nr.',
'photos_taken': 'Fotogrāfijas uzņemtas',
'signature_captured': 'Paraksts saglabāts',
'barcodes_scanned': 'Svītrkodi skenēti',
// Popup Dialogs
'apply': 'Lietot',
'add': 'Pievienot',
'delete': 'Dzēst',
'signature': 'Paraksts',
'signature_too_short': 'Paraksts ir pārāk īss.',
'photos': 'Uzņemtās Fotogrāfijas',
'min_photos_error': 'Jāuzņem vismaz {min} fotogrāfija(s)',
'delete_photo_confirm': 'Vai tiešām vēlaties dzēst šo attēlu?',
'delete_message_confirm': 'Vai ziņojums jāizdzēš?',
'status': 'Statuss',
'remark': 'Piezīme',
'enter_remark': 'Lūdzu, ievadiet piezīmi',
'gender': 'Dzimums',
'enter_text_and_gender': 'Jums jāievada teksts un jāizvēlas dzimums',
'attention': 'Uzmanību',
'close_dialog_warning': 'Ja tagad aizvērsiet šo dialoglodziņu, ievadītie dati tiks zaudēti, un uzdevums vai stacija paliks nepabeigta.',
'zip_change_warning': 'UZMANĪBU: Ja mainīsiet pasta indeksu, zaudēsiet savu reitingu!',
'release': 'Atbrīvot',
'zip': 'Pasta Indekss',
'enter_zip': 'Lūdzu, ievadiet piecciparu pasta indeksu',
'enter_desired_zip': 'Lūdzu, ievadiet vēlamo atrašanās vietu šodien',
'zip_hint': 'Indekss',
'zip_validation_error': 'Lauks jābūt tukšam vai jāievada pieci cipari',
'enter_commission_number': 'Lūdzu, ievadiet komisijas numuru',
'commission_number_hint': 'Komisijas Numurs',
// Map
'far': 'Tālu',
'near': 'Tuvu',
'no_position': 'Šai stacijai nav pieejama atrašanās vieta',
// Close List
'close_list': 'Aizvērt Sarakstu',
},
// Lithuanian
'lt': {
// Main Page
'assigned_jobs': 'Paskirtos Užduotys',
'accepted_jobs': 'Priimtos Užduotys',
'finished_jobs': 'Baigtos Užduotys',
'messages': 'Žinutės',
'approach_area': 'Prieigos Zona',
'desired_zip': 'Pageidaujama Vieta Šiandien',
'login': 'Prisijungti',
'logout': 'Atsijungti',
'courier_id': 'Kurjerio ID',
'message': 'Žinutė',
'location': 'Vieta',
// Dialogs
'warning': 'Įspėjimas',
'information': 'Informacija',
'error': 'Klaida',
'yes': 'Taip',
'no': 'Ne',
'ok': 'OK',
'close': 'Uždaryti',
'back': 'Atgal',
'confirm': 'Patvirtinti',
'cancel': 'Atšaukti',
// Logout Dialog
'logout_confirm': 'Ar tikrai norite atsijungti?',
'logging_out': 'Atsijungiama.\nPrašome palaukti...',
// Info Dialog
'version': 'Versijos Numeris',
'connection_status': 'Ryšio Statusas',
'connected': 'Prisijungta',
'not_connected': 'Neprisijungta',
'gps_status': 'GPS Statusas',
'gps_available': 'esamas',
'gps_outdated': 'pasenęs',
'gps_not_available': 'nepasiekiamas',
'loading': 'įkeliama...',
'user_status': 'Vartotojo Statusas',
'no_info_found': 'Informacija nerasta',
'language': 'Kalba',
// Job Pages
'new': 'Naujas',
'accept': 'Priimti',
'decline': 'Atmesti',
'ignore': 'Ignoruoti',
'order_number': 'Užsakymo Numeris',
'more_info': 'Daugiau Informacijos....',
'list_of_stations': 'Stotelių Sąrašas',
'station': 'Stotelė',
'map': 'Žemėlapis',
// Tour Details
'station_details': 'Stotelės Detalės',
'phone': 'Tel.',
'commission_number': 'Kom. Nr.',
'next': 'Toliau',
'files_available': 'Failai Prieinami',
'no_remark': '* Pastabų nėra *',
// Tour Mode
'pickup': 'Paėmimas',
'delivery': 'Pristatymas',
'pickup_delivery': 'Paėmimas/Pristatymas',
// Vehicle Types
'bicycle': 'Dviratis',
'car': 'Automobilis',
'station_wagon': 'Universalas',
'van': 'Furgonas',
'bus': 'Autobusas',
'large_bus': 'Didelis Autobusas',
'truck': 'Sunkvežimis',
'service': 'Servisas',
'unknown': 'Nežinoma',
// Task List
'task_list': 'Užduočių Sąrašas',
'commission_number_short': 'Kom. Nr.',
'photos_taken': 'Nuotraukos padarytos',
'signature_captured': 'Parašas užfiksuotas',
'barcodes_scanned': 'Brūkšniai kodai nuskaityti',
// Popup Dialogs
'apply': 'Taikyti',
'add': 'Pridėti',
'delete': 'Ištrinti',
'signature': 'Parašas',
'signature_too_short': 'Parašas per trumpas.',
'photos': 'Padarytos Nuotraukos',
'min_photos_error': 'Turi būti padaryta bent {min} nuotrauka(-os)',
'delete_photo_confirm': 'Ar tikrai norite ištrinti šį paveikslėlį?',
'delete_message_confirm': 'Ar žinutė turėtų būti ištrinta?',
'status': 'Statusas',
'remark': 'Pastaba',
'enter_remark': 'Prašome įvesti pastabą',
'gender': 'Lytis',
'enter_text_and_gender': 'Turite įvesti tekstą ir pasirinkti lytį',
'attention': 'Dėmesio',
'close_dialog_warning': 'Jei dabar uždarysite šį dialogą, surinkti duomenys bus prarasti, o užduotis ar stotelė liks nebaigta.',
'zip_change_warning': 'DĖMESIO: Jei pakeisite pašto kodą, prarasite savo reitingą!',
'release': 'Atleisti',
'zip': 'Pašto Kodas',
'enter_zip': 'Prašome įvesti penkiaženklį pašto kodą',
'enter_desired_zip': 'Prašome įvesti pageidaujamą vietą šiandien',
'zip_hint': 'Kodas',
'zip_validation_error': 'Laukas turi būti tuščias arba turi būti įvesti penki skaitmenys',
'enter_commission_number': 'Prašome įvesti komisijos numerį',
'commission_number_hint': 'Komisijos Numeris',
// Map
'far': 'Toli',
'near': 'Arti',
'no_position': 'Šiai stoelei nėra prieinamos vietos',
// Close List
'close_list': 'Uždaryti Sąrašą',
},
};
// Hilfsmethode für dynamische Werte
static String trWithParams(String key, Map<String, dynamic> params) {
String text = tr(key);
params.forEach((key, value) {
text = text.replaceAll('{$key}', value.toString());
});
return text;
}
}
// Extension für einfachen Zugriff im Code
extension StringLocalization on String {
String get tr => AppLocalizations.tr(this);
String trParams(Map<String, dynamic> params) => AppLocalizations.trWithParams(this, params);
}