From f489807ec184230f9e26575068e6ffdfbd269b88 Mon Sep 17 00:00:00 2001 From: Shawn Jackson Date: Fri, 20 Mar 2026 11:01:24 -0700 Subject: [PATCH] RR-T42 Fixing translations --- .gitignore | 1 + CLAUDE.md | 136 +++ src/app/login/login-form.tsx | 43 +- src/components/settings/language-item.tsx | 7 + src/lib/i18n/index.tsx | 14 +- src/lib/i18n/resources.ts | 22 +- src/translations/ar.json | 7 + src/translations/de.json | 978 ++++++++++++++++++++++ src/translations/en.json | 7 + src/translations/es.json | 7 + src/translations/fr.json | 978 ++++++++++++++++++++++ src/translations/it.json | 978 ++++++++++++++++++++++ src/translations/pl.json | 978 ++++++++++++++++++++++ src/translations/sv.json | 978 ++++++++++++++++++++++ src/translations/uk.json | 978 ++++++++++++++++++++++ 15 files changed, 6104 insertions(+), 8 deletions(-) create mode 100644 CLAUDE.md create mode 100644 src/translations/de.json create mode 100644 src/translations/fr.json create mode 100644 src/translations/it.json create mode 100644 src/translations/pl.json create mode 100644 src/translations/sv.json create mode 100644 src/translations/uk.json diff --git a/.gitignore b/.gitignore index 21ef288..c13a0e5 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ expo-env.d.ts # @end expo-cli .env.production .env.staging +.dual-graph/ diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..dbfb1f1 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,136 @@ + +# Dual-Graph Context Policy + +This project uses a local dual-graph MCP server for efficient context retrieval. + +## MANDATORY: Always follow this order + +1. **Call `graph_continue` first** — before any file exploration, grep, or code reading. + +2. **If `graph_continue` returns `needs_project=true`**: call `graph_scan` with the + current project directory (`pwd`). Do NOT ask the user. + +3. **If `graph_continue` returns `skip=true`**: project has fewer than 5 files. + Do NOT do broad or recursive exploration. Read only specific files if their names + are mentioned, or ask the user what to work on. + +4. **Read `recommended_files`** using `graph_read` — **one call per file**. + - `graph_read` accepts a single `file` parameter (string). Call it separately for each + recommended file. Do NOT pass an array or batch multiple files into one call. + - `recommended_files` may contain `file::symbol` entries (e.g. `src/auth.ts::handleLogin`). + Pass them verbatim to `graph_read(file: "src/auth.ts::handleLogin")` — it reads only + that symbol's lines, not the full file. + - Example: if `recommended_files` is `["src/auth.ts::handleLogin", "src/db.ts"]`, + call `graph_read(file: "src/auth.ts::handleLogin")` and `graph_read(file: "src/db.ts")` + as two separate calls (they can be parallel). + +5. **Check `confidence` and obey the caps strictly:** + - `confidence=high` -> Stop. Do NOT grep or explore further. + - `confidence=medium` -> If recommended files are insufficient, call `fallback_rg` + at most `max_supplementary_greps` time(s) with specific terms, then `graph_read` + at most `max_supplementary_files` additional file(s). Then stop. + - `confidence=low` -> Call `fallback_rg` at most `max_supplementary_greps` time(s), + then `graph_read` at most `max_supplementary_files` file(s). Then stop. + +## Token Usage + +A `token-counter` MCP is available for tracking live token usage. + +- To check how many tokens a large file or text will cost **before** reading it: + `count_tokens({text: ""})` +- To log actual usage after a task completes (if the user asks): + `log_usage({input_tokens: , output_tokens: , description: ""})` +- To show the user their running session cost: + `get_session_stats()` + +Live dashboard URL is printed at startup next to "Token usage". + +## Rules + +- Do NOT use `rg`, `grep`, or bash file exploration before calling `graph_continue`. +- Do NOT do broad/recursive exploration at any confidence level. +- `max_supplementary_greps` and `max_supplementary_files` are hard caps - never exceed them. +- Do NOT dump full chat history. +- Do NOT call `graph_retrieve` more than once per turn. +- After edits, call `graph_register_edit` with the changed files. Use `file::symbol` notation (e.g. `src/auth.ts::handleLogin`) when the edit targets a specific function, class, or hook. + +## Context Store + +Whenever you make a decision, identify a task, note a next step, fact, or blocker during a conversation, append it to `.dual-graph/context-store.json`. + +**Entry format:** +```json +{"type": "decision|task|next|fact|blocker", "content": "one sentence max 15 words", "tags": ["topic"], "files": ["relevant/file.ts"], "date": "YYYY-MM-DD"} +``` + +**To append:** Read the file → add the new entry to the array → Write it back → call `graph_register_edit` on `.dual-graph/context-store.json`. + +**Rules:** +- Only log things worth remembering across sessions (not every minor detail) +- `content` must be under 15 words +- `files` lists the files this decision/task relates to (can be empty) +- Log immediately when the item arises — not at session end + +## Session End + +When the user signals they are done (e.g. "bye", "done", "wrap up", "end session"), proactively update `CONTEXT.md` in the project root with: +- **Current Task**: one sentence on what was being worked on +- **Key Decisions**: bullet list, max 3 items +- **Next Steps**: bullet list, max 3 items + +Keep `CONTEXT.md` under 20 lines total. Do NOT summarize the full conversation — only what's needed to resume next session. + +--- + +# Project: Resgrid Responder (React Native / Expo) + +## Stack + +| Concern | Library | +|---|---| +| Package manager | `yarn` | +| State | `zustand` | +| Forms | `react-hook-form` | +| Data fetching | `react-query` | +| HTTP | `axios` | +| i18n | `react-i18next` | +| Local storage | `react-native-mmkv` | +| Secure storage | Expo SecureStore | +| Navigation | React Navigation | +| UI components | `gluestack-ui` (from `components/ui`) | +| Icons | `lucide-react-native` (use directly in markup, NOT via gluestack Icon) | +| Maps / nav | `@rnmapbox/maps` | +| Images | `react-native-fast-image` | + +## Code Rules + +- TypeScript everywhere. No `any`. Use `interface` for props/state. `React.FC` for components. +- Enable strict typing in `tsconfig.json`. +- Functional components and hooks only — no class components. +- File/directory names: `lowercase-hyphenated`. Components: `PascalCase`. Variables/functions: `camelCase`. +- Organize by feature: group related components, hooks, and styles together. +- **Conditional rendering: use `? :` — never `&&`.** +- All user-visible text must be wrapped in `t()` from `react-i18next`. Translation files are in `src/translations`. +- This is an Expo managed project using prebuild. Do NOT make native code changes outside Expo prebuild capabilities. + +## Styling + +- Use `gluestack-ui` components from `components/ui` first. +- If no Gluestack component exists, use `StyleSheet.create()` or Styled Components. +- Support both light and dark mode. +- Design for all screen sizes and orientations (iOS + Android). + +## Performance + +- Minimize `useEffect`, `useState`, and heavy computations in render. +- Use `React.memo()` for components with static props. +- FlatLists: set `removeClippedSubviews`, `maxToRenderPerBatch`, `windowSize`. Use `getItemLayout` when item height is fixed. +- No anonymous functions in `renderItem` or event handlers. + +## Quality & Testing + +- Write Jest tests for all generated components, services, and logic. Tests must pass. +- Handle errors gracefully with user feedback. +- Implement offline support. +- Follow WCAG accessibility guidelines for mobile. +- Optimize for low-end devices. diff --git a/src/app/login/login-form.tsx b/src/app/login/login-form.tsx index c522a53..7925f21 100644 --- a/src/app/login/login-form.tsx +++ b/src/app/login/login-form.tsx @@ -1,5 +1,5 @@ import { zodResolver } from '@hookform/resolvers/zod'; -import { AlertTriangle, EyeIcon, EyeOffIcon } from 'lucide-react-native'; +import { AlertTriangle, EyeIcon, EyeOffIcon, GlobeIcon } from 'lucide-react-native'; import { useColorScheme } from 'nativewind'; import React, { useCallback, useState } from 'react'; import type { SubmitHandler } from 'react-hook-form'; @@ -14,9 +14,24 @@ import { View } from '@/components/ui'; import { Button, ButtonSpinner, ButtonText } from '@/components/ui/button'; import { FormControl, FormControlError, FormControlErrorIcon, FormControlErrorText, FormControlLabel, FormControlLabelText } from '@/components/ui/form-control'; import { Input, InputField, InputIcon, InputSlot } from '@/components/ui/input'; +import { Select, SelectBackdrop, SelectContent, SelectDragIndicator, SelectDragIndicatorWrapper, SelectIcon, SelectInput, SelectItem, SelectPortal, SelectTrigger } from '@/components/ui/select'; import { Text } from '@/components/ui/text'; import colors from '@/constants/colors'; import { useAnalytics } from '@/hooks/use-analytics'; +import { translate, useSelectedLanguage } from '@/lib'; +import type { Language } from '@/lib/i18n/resources'; + +const LANGUAGES: { label: string; value: Language }[] = [ + { label: 'English', value: 'en' }, + { label: 'Español', value: 'es' }, + { label: 'Svenska', value: 'sv' }, + { label: 'Deutsch', value: 'de' }, + { label: 'Français', value: 'fr' }, + { label: 'Italiano', value: 'it' }, + { label: 'Polski', value: 'pl' }, + { label: 'Українська', value: 'uk' }, + { label: 'العربية', value: 'ar' }, +]; const loginFormSchema = z.object({ username: z @@ -44,6 +59,7 @@ export const LoginForm = ({ onSubmit = () => {}, isLoading = false, error = unde const { colorScheme } = useColorScheme(); const { t } = useTranslation(); const { trackEvent } = useAnalytics(); + const { language, setLanguage } = useSelectedLanguage(); const { control, handleSubmit, @@ -168,6 +184,31 @@ export const LoginForm = ({ onSubmit = () => {}, isLoading = false, error = unde {t('login.sso.login_with_sso_button')} + + {/* Language Selector */} + + + + diff --git a/src/components/settings/language-item.tsx b/src/components/settings/language-item.tsx index eea6ebf..f8c00ed 100644 --- a/src/components/settings/language-item.tsx +++ b/src/components/settings/language-item.tsx @@ -24,6 +24,13 @@ export const LanguageItem = () => { () => [ { label: translate('settings.english'), value: 'en' }, { label: translate('settings.spanish'), value: 'es' }, + { label: translate('settings.swedish'), value: 'sv' }, + { label: translate('settings.german'), value: 'de' }, + { label: translate('settings.french'), value: 'fr' }, + { label: translate('settings.italian'), value: 'it' }, + { label: translate('settings.polish'), value: 'pl' }, + { label: translate('settings.ukrainian'), value: 'uk' }, + { label: translate('settings.arabic'), value: 'ar' }, ], [] ); diff --git a/src/lib/i18n/index.tsx b/src/lib/i18n/index.tsx index b82c0ef..77aefe8 100644 --- a/src/lib/i18n/index.tsx +++ b/src/lib/i18n/index.tsx @@ -7,9 +7,21 @@ import { resources } from './resources'; import { getLanguage } from './utils'; export * from './utils'; +const SUPPORTED_LANGUAGES = Object.keys(resources); + +function getInitialLanguage(): string { + const saved = getLanguage(); + if (saved && SUPPORTED_LANGUAGES.includes(saved)) return saved; + + const deviceLang = Localization.getLocales()[0]?.languageCode ?? ''; + if (SUPPORTED_LANGUAGES.includes(deviceLang)) return deviceLang; + + return 'en'; +} + i18n.use(initReactI18next).init({ resources, - lng: getLanguage() || Localization.getLocales()[0]?.languageCode || 'en', // TODO: if you are not supporting multiple languages or languages with multiple directions you can set the default value to `en` + lng: getInitialLanguage(), fallbackLng: 'en', compatibilityJSON: 'v3', // By default React Native projects does not support Intl diff --git a/src/lib/i18n/resources.ts b/src/lib/i18n/resources.ts index ac05206..2bd2c5e 100644 --- a/src/lib/i18n/resources.ts +++ b/src/lib/i18n/resources.ts @@ -1,13 +1,23 @@ import ar from '@/translations/ar.json'; +import de from '@/translations/de.json'; import en from '@/translations/en.json'; +import es from '@/translations/es.json'; +import fr from '@/translations/fr.json'; +import it from '@/translations/it.json'; +import pl from '@/translations/pl.json'; +import sv from '@/translations/sv.json'; +import uk from '@/translations/uk.json'; export const resources = { - en: { - translation: en, - }, - ar: { - translation: ar, - }, + en: { translation: en }, + es: { translation: es }, + sv: { translation: sv }, + de: { translation: de }, + fr: { translation: fr }, + it: { translation: it }, + pl: { translation: pl }, + uk: { translation: uk }, + ar: { translation: ar }, }; export type Language = keyof typeof resources; diff --git a/src/translations/ar.json b/src/translations/ar.json index 6897619..de85aad 100644 --- a/src/translations/ar.json +++ b/src/translations/ar.json @@ -598,6 +598,7 @@ "username_placeholder": "أدخل اسم المستخدم أو بريدك الإلكتروني", "username_required": "اسم المستخدم مطلوب" }, + "select_language": "اللغة", "title": "تسجيل الدخول", "username": "اسم المستخدم", "username_placeholder": "أدخل اسم المستخدم الخاص بك" @@ -808,6 +809,12 @@ "background_location": "الموقع في الخلفية", "contact_us": "اتصل بنا", "english": "إنجليزي", + "french": "فرنسي", + "german": "ألماني", + "italian": "إيطالي", + "polish": "بولندي", + "swedish": "سويدي", + "ukrainian": "أوكراني", "enter_password": "أدخل كلمة المرور الخاصة بك", "enter_server_url": "أدخل عنوان URL لواجهة برمجة تطبيقات Resgrid (مثال: https://api.resgrid.com)", "enter_username": "أدخل اسم المستخدم الخاص بك", diff --git a/src/translations/de.json b/src/translations/de.json new file mode 100644 index 0000000..b8d5d18 --- /dev/null +++ b/src/translations/de.json @@ -0,0 +1,978 @@ +{ + "app": { + "title": "Resgrid Responder" + }, + "audio_streams": { + "buffering": "Puffern", + "buffering_stream": "Audiostream wird gepuffert...", + "close": "Schließen", + "currently_playing": "Wird gerade wiedergegeben: {{streamName}}", + "error_loading_stream": "Audiostream konnte nicht geladen werden", + "loading": "Laden", + "loading_stream": "Audiostream wird geladen...", + "loading_streams": "Audiostreams werden geladen...", + "name": "Name", + "no_stream_playing": "Es wird derzeit kein Audiostream wiedergegeben", + "none": "Keiner", + "playing": "Wiedergabe", + "refresh_streams": "Streams aktualisieren", + "select_placeholder": "Audiostream auswählen", + "select_stream": "Audiostream auswählen", + "status": "Status", + "stopped": "Gestoppt", + "stream_info": "Stream-Informationen", + "stream_selected": "Ausgewählt: {{streamName}}", + "title": "Audiostreams", + "type": "Typ" + }, + "bluetooth": { + "audio_device": "BT-Hörer", + "available_devices": "Verfügbare Geräte", + "bluetooth_not_ready": "Bluetooth ist {{state}}. Bitte aktivieren Sie Bluetooth.", + "clear": "Löschen", + "connected": "Verbunden", + "current_selection": "Aktuelle Auswahl", + "no_device_selected": "Kein Gerät ausgewählt", + "no_devices_found": "Keine Bluetooth-Audiogeräte gefunden", + "not_connected": "Nicht verbunden", + "scan": "Suchen", + "scan_again": "Erneut suchen", + "scan_error_message": "Bluetooth-Geräte konnten nicht gesucht werden", + "scan_error_title": "Suchfehler", + "scanning": "Sucht...", + "select_device": "Bluetooth-Gerät auswählen", + "selected": "Ausgewählt", + "selection_error_message": "Bevorzugtes Gerät konnte nicht gespeichert werden", + "selection_error_title": "Auswahlfehler", + "supports_mic_control": "Mikrofonsteuerung", + "tap_scan_to_find_devices": "Tippen Sie auf 'Suchen', um Bluetooth-Audiogeräte zu finden", + "unknown_device": "Unbekanntes Gerät" + }, + "calendar": { + "allDay": "Ganztägig", + "attendanceUpdated": { + "signedUp": "Sie haben sich erfolgreich für diese Veranstaltung angemeldet.", + "title": "Teilnahme aktualisiert", + "unsignedUp": "Sie wurden von dieser Veranstaltung abgemeldet." + }, + "attendees": { + "title": "Teilnehmer" + }, + "attendeesCount": "{{count}} Teilnehmer", + "attendeesCount_plural": "{{count}} Teilnehmer", + "confirmSignup": "Bestätigen", + "confirmUnsignup": { + "message": "Sind Sie sicher, dass Sie Ihre Teilnahme an dieser Veranstaltung absagen möchten?", + "title": "Absage bestätigen" + }, + "createdBy": "Erstellt von", + "daysOfWeek": { + "fri": "Fr", + "mon": "Mo", + "sat": "Sa", + "sun": "So", + "thu": "Do", + "tue": "Di", + "wed": "Mi" + }, + "description": "Beschreibung", + "error": { + "attendanceUpdate": "Teilnahme konnte nicht aktualisiert werden. Bitte versuchen Sie es erneut.", + "title": "Fehler" + }, + "eventsCount": "{{count}} Ereignis", + "eventsCount_plural": "{{count}} Ereignisse", + "loading": { + "date": "Ereignisse für das ausgewählte Datum werden geladen...", + "today": "Heutige Ereignisse werden geladen...", + "upcoming": "Kommende Ereignisse werden geladen..." + }, + "noEvents": "Keine geplanten Ereignisse", + "optional": "Optional", + "required": "Erforderlich", + "selectDate": "Wählen Sie ein Datum, um Ereignisse anzuzeigen", + "selectedDate": { + "empty": "Keine Ereignisse für dieses Datum geplant.", + "title": "Ereignisse für {{date}}" + }, + "signedUp": "Angemeldet", + "signup": { + "button": "Anmelden", + "notePlaceholder": "Geben Sie hier Ihre Notiz ein...", + "notePrompt": "Notiz hinzufügen (optional):", + "title": "Veranstaltungsanmeldung" + }, + "signupAvailable": "Anmeldung verfügbar", + "tabs": { + "calendar": "Kalender", + "today": "Heute", + "upcoming": "Bevorstehend" + }, + "tapToSignUp": "Tippen zum Anmelden", + "title": "Kalender", + "today": { + "empty": { + "description": "Sie haben heute keine geplanten Ereignisse.", + "title": "Keine heutigen Ereignisse" + } + }, + "todayButton": "Heute", + "unsignup": "Teilnahme absagen", + "upcoming": { + "empty": { + "description": "Sie haben in den nächsten 7 Tagen keine geplanten Ereignisse.", + "title": "Keine bevorstehenden Ereignisse" + } + } + }, + "callImages": { + "add": "Bild hinzufügen", + "add_new": "Neues Bild hinzufügen", + "capture_error": "Fehler beim Aufnehmen des Fotos. Bitte versuchen Sie es erneut.", + "default_name": "Unbenanntes Bild", + "error": "Fehler beim Abrufen der Bilder", + "failed_to_load": "Bild konnte nicht geladen werden", + "image_name": "Bildname", + "image_note": "Bildnotiz", + "loading": "Wird geladen...", + "no_images": "Keine Bilder verfügbar", + "no_images_description": "Fügen Sie Ihrem Einsatz Bilder hinzu, um Dokumentation und Kommunikation zu erleichtern", + "permission_denied_settings": "Zugriff verweigert. Bitte aktivieren Sie den Zugriff in den Geräteeinstellungen.", + "select_error": "Fehler beim Auswählen des Bildes. Bitte versuchen Sie es erneut.", + "select_from_gallery": "Aus Galerie auswählen", + "take_photo": "Foto aufnehmen", + "title": "Einsatzbilder", + "upload": "Hochladen", + "upload_error": "Bild konnte nicht hochgeladen werden. Bitte versuchen Sie es erneut.", + "upload_success": "Bild erfolgreich hochgeladen" + }, + "callNotes": { + "addNote": "Notiz hinzufügen", + "addNoteError": "Notiz konnte nicht hinzugefügt werden. Bitte versuchen Sie es erneut.", + "addNotePlaceholder": "Neue Notiz hinzufügen...", + "noNotes": "Keine Notizen für diesen Einsatz verfügbar", + "noSearchResults": "Keine Notizen entsprechen Ihrer Suche", + "searchPlaceholder": "Notizen suchen...", + "title": "Einsatznotizen" + }, + "call_detail": { + "address": "Adresse", + "call_location": "Einsatzort", + "close_call": "Einsatz abschließen", + "close_call_confirmation": "Sind Sie sicher, dass Sie diesen Einsatz abschließen möchten?", + "close_call_error": "Einsatz konnte nicht abgeschlossen werden", + "close_call_note": "Abschlussnotiz", + "close_call_note_placeholder": "Geben Sie eine Notiz zum Abschluss des Einsatzes ein", + "close_call_success": "Einsatz erfolgreich abgeschlossen", + "close_call_type": "Abschlussart", + "close_call_type_placeholder": "Abschlussart auswählen", + "close_call_type_required": "Bitte wählen Sie eine Abschlussart", + "close_call_types": { + "cancelled": "Abgebrochen", + "closed": "Abgeschlossen", + "false_alarm": "Fehlalarm", + "founded": "Begründet", + "minor": "Geringfügig", + "transferred": "Übergeben", + "unfounded": "Unbegründet" + }, + "contact_email": "E-Mail", + "contact_info": "Kontaktdaten", + "contact_name": "Kontaktname", + "contact_phone": "Telefon", + "edit_call": "Einsatz bearbeiten", + "external_id": "Externe ID", + "failed_to_open_maps": "Kartenanwendung konnte nicht geöffnet werden", + "files": { + "add_file": "Datei hinzufügen", + "button": "Dateien", + "empty": "Keine Dateien verfügbar", + "empty_description": "Fügen Sie Ihrem Einsatz Dateien hinzu, um Dokumentation und Kommunikation zu erleichtern", + "error": "Fehler beim Abrufen der Dateien", + "file_name": "Dateiname", + "name_required": "Bitte geben Sie einen Namen für die Datei ein", + "no_files": "Keine Dateien verfügbar", + "no_files_description": "Fügen Sie Ihrem Einsatz Dateien hinzu, um Dokumentation und Kommunikation zu erleichtern", + "open_error": "Fehler beim Öffnen der Datei", + "select_error": "Fehler beim Auswählen der Datei", + "select_file": "Datei auswählen", + "share_error": "Fehler beim Teilen der Datei", + "title": "Einsatzdateien", + "upload": "Hochladen", + "upload_error": "Fehler beim Hochladen der Datei", + "uploading": "Wird hochgeladen..." + }, + "group": "Gruppe", + "images": "Bilder", + "loading": "Einsatzdetails werden geladen...", + "nature": "Art", + "no_additional_info": "Keine weiteren Informationen verfügbar", + "no_contact_info": "Keine Kontaktdaten verfügbar", + "no_dispatched": "Keine Einheiten zu diesem Einsatz alarmiert", + "no_location": "Keine Standortdaten verfügbar", + "no_location_for_routing": "Keine Standortdaten für die Navigation verfügbar", + "no_protocols": "Keine Protokolle diesem Einsatz zugeordnet", + "no_timeline": "Keine Zeitleistenereignisse verfügbar", + "not_available": "N/V", + "not_found": "Einsatz nicht gefunden", + "note": "Notiz", + "notes": "Notizen", + "priority": "Priorität", + "reference_id": "Referenz-ID", + "status": "Status", + "tabs": { + "contact": "Kontakt", + "dispatched": "Alarmiert", + "info": "Info", + "protocols": "Protokolle", + "timeline": "Aktivität" + }, + "timestamp": "Zeitstempel", + "title": "Einsatzdetails", + "type": "Typ", + "unit": "Einheit", + "update_call_error": "Einsatz konnte nicht aktualisiert werden", + "update_call_success": "Einsatz erfolgreich aktualisiert" + }, + "calls": { + "address": "Adresse", + "address_found": "Adresse gefunden und Standort aktualisiert", + "address_not_found": "Adresse nicht gefunden, bitte versuchen Sie eine andere Adresse", + "address_placeholder": "Einsatzadresse eingeben", + "address_required": "Bitte geben Sie eine Adresse zum Suchen ein", + "call_details": "Einsatzdetails", + "call_location": "Einsatzort", + "call_number": "Einsatznummer", + "call_priority": "Einsatzpriorität", + "confirm_deselect_message": "Sind Sie sicher, dass Sie die Auswahl des aktiven Einsatzes aufheben möchten?", + "confirm_deselect_title": "Aktiven Einsatz abwählen", + "contact_info": "Kontaktdaten", + "contact_info_placeholder": "Kontaktinformationen eingeben", + "contact_name": "Kontaktname", + "contact_name_placeholder": "Kontaktname eingeben", + "contact_phone": "Kontakttelefon", + "contact_phone_placeholder": "Kontakttelefonnummer eingeben", + "coordinates": "GPS-Koordinaten", + "coordinates_found": "Koordinaten gefunden und Adresse aktualisiert", + "coordinates_geocoding_error": "Adresse für Koordinaten konnte nicht abgerufen werden, aber Standort wurde auf der Karte gesetzt", + "coordinates_invalid_format": "Ungültiges Koordinatenformat. Bitte verwenden Sie das Format: Breitengrad, Längengrad", + "coordinates_no_address": "Koordinaten auf der Karte gesetzt, aber keine Adresse gefunden", + "coordinates_out_of_range": "Koordinaten außerhalb des Bereichs. Breitengrad muss -90 bis 90 sein, Längengrad -180 bis 180", + "coordinates_placeholder": "GPS-Koordinaten eingeben (z.B. 37.7749, -122.4194)", + "coordinates_required": "Bitte geben Sie Koordinaten zum Suchen ein", + "create": "Erstellen", + "create_error": "Fehler beim Erstellen des Einsatzes", + "create_new_call": "Neuen Einsatz erstellen", + "create_success": "Einsatz erfolgreich erstellt", + "description": "Beschreibung", + "description_placeholder": "Einsatzbeschreibung eingeben", + "deselect": "Abwählen", + "directions": "Wegbeschreibung", + "dispatch_to": "Alarmieren an", + "dispatch_to_everyone": "An alle verfügbaren Kräfte alarmieren", + "edit_call": "Einsatz bearbeiten", + "edit_call_description": "Einsatzinformationen aktualisieren", + "everyone": "Alle", + "files": { + "no_files": "Keine Dateien verfügbar", + "no_files_description": "Diesem Einsatz wurden noch keine Dateien hinzugefügt", + "title": "Einsatzdateien" + }, + "geocoding_error": "Adresse konnte nicht gesucht werden, bitte versuchen Sie es erneut", + "groups": "Gruppen", + "loading": "Einsätze werden geladen...", + "loading_calls": "Einsätze werden geladen...", + "name": "Name", + "name_placeholder": "Einsatznamen eingeben", + "nature": "Art", + "nature_placeholder": "Einsatzart eingeben", + "new_call": "Neuer Einsatz", + "new_call_description": "Neuen Einsatz erstellen, um einen neuen Vorfall zu starten", + "no_call_selected": "Kein aktiver Einsatz", + "no_call_selected_info": "Diese Einheit reagiert derzeit auf keine Einsätze", + "no_calls": "Keine aktiven Einsätze", + "no_calls_available": "Keine Einsätze verfügbar", + "no_calls_description": "Keine aktiven Einsätze gefunden. Wählen Sie einen aktiven Einsatz aus, um Details anzuzeigen.", + "no_location_message": "Für diesen Einsatz sind keine Standortdaten für die Navigation verfügbar.", + "no_location_title": "Kein Standort verfügbar", + "no_open_calls": "Keine offenen Einsätze verfügbar", + "note": "Notiz", + "note_placeholder": "Einsatznotiz eingeben", + "personnel": "Personal", + "plus_code": "Plus-Code", + "plus_code_found": "Plus-Code gefunden und Standort aktualisiert", + "plus_code_geocoding_error": "Plus-Code konnte nicht gesucht werden, bitte versuchen Sie es erneut", + "plus_code_not_found": "Plus-Code nicht gefunden, bitte versuchen Sie einen anderen Plus-Code", + "plus_code_placeholder": "Plus-Code eingeben (z.B. 849VCWC8+R9)", + "plus_code_required": "Bitte geben Sie einen Plus-Code zum Suchen ein", + "priority": "Priorität", + "priority_placeholder": "Einsatzpriorität auswählen", + "roles": "Rollen", + "search": "Einsätze suchen...", + "select_active_call": "Aktiven Einsatz auswählen", + "select_address": "Adresse auswählen", + "select_address_placeholder": "Einsatzadresse auswählen", + "select_description": "Beschreibung auswählen", + "select_dispatch_recipients": "Alarmierungsempfänger auswählen", + "select_location": "Standort auf der Karte auswählen", + "select_name": "Name auswählen", + "select_nature": "Art auswählen", + "select_nature_placeholder": "Einsatzart auswählen", + "select_priority": "Priorität auswählen", + "select_priority_placeholder": "Einsatzpriorität auswählen", + "select_recipients": "Empfänger auswählen", + "select_type": "Typ auswählen", + "selected": "ausgewählt", + "title": "Einsätze", + "type": "Typ", + "units": "Einheiten", + "users": "Benutzer", + "viewNotes": "Notizen", + "view_details": "Details anzeigen", + "what3words": "what3words", + "what3words_found": "what3words-Adresse gefunden und Standort aktualisiert", + "what3words_geocoding_error": "what3words-Adresse konnte nicht gesucht werden, bitte versuchen Sie es erneut", + "what3words_invalid_format": "Ungültiges what3words-Format. Bitte verwenden Sie das Format: wort.wort.wort", + "what3words_not_found": "what3words-Adresse nicht gefunden, bitte versuchen Sie eine andere Adresse", + "what3words_placeholder": "what3words-Adresse eingeben (z.B. gefüllt.anzahl.seife)", + "what3words_required": "Bitte geben Sie eine what3words-Adresse zum Suchen ein" + }, + "common": { + "active": "Aktiv", + "add": "Hinzufügen", + "all": "Alle", + "back": "Zurück", + "cancel": "Abbrechen", + "close": "Schließen", + "confirm": "Bestätigen", + "delete": "Löschen", + "deleting": "Wird gelöscht...", + "discard": "Verwerfen", + "done": "Fertig", + "edit": "Bearbeiten", + "error": "Fehler", + "errorOccurred": "Ein Fehler ist aufgetreten", + "get_my_location": "Meinen Standort abrufen", + "loading": "Laden", + "loading_address": "Adresse wird geladen...", + "navigation": "Navigation", + "next": "Weiter", + "noActiveUnit": "Keine aktive Einheit", + "noActiveUnitDescription": "Bitte wählen Sie eine aktive Einheit aus, um verfügbare Status anzuzeigen", + "no_address_found": "Keine Adresse gefunden", + "no_data_available": "Keine Daten verfügbar", + "no_location": "Kein Standort verfügbar", + "no_results_found": "Keine Ergebnisse gefunden", + "no_unit_selected": "Keine Einheit ausgewählt", + "of": "von", + "ok": "OK", + "optional": "Optional", + "permission_denied": "Zugriff verweigert", + "previous": "Zurück", + "refresh": "Aktualisieren", + "retry": "Erneut versuchen", + "route": "Route", + "save": "Speichern", + "search": "Suchen", + "set_location": "Standort festlegen", + "step": "Schritt", + "submit": "Absenden", + "submitting": "Wird abgesendet...", + "success": "Erfolgreich", + "unknown_department": "Unbekannte Abteilung", + "unknown_user": "Unbekannter Benutzer", + "uploading": "Wird hochgeladen..." + }, + "contacts": { + "add": "Kontakt hinzufügen", + "addedBy": "Hinzugefügt von", + "addedOn": "Hinzugefügt am", + "additionalInformation": "Zusätzliche Informationen", + "address": "Adresse", + "bluesky": "Bluesky", + "cancel": "Abbrechen", + "cellPhone": "Mobiltelefon", + "city": "Stadt", + "cityState": "Stadt und Bundesland", + "cityStateZip": "Stadt, Bundesland, PLZ", + "company": "Unternehmen", + "contactInformation": "Kontaktinformationen", + "contactNotes": "Kontaktnotizen", + "contactNotesEmpty": "Keine Notizen für diesen Kontakt gefunden", + "contactNotesEmptyDescription": "Diesem Kontakt hinzugefügte Notizen werden hier angezeigt", + "contactNotesExpired": "Diese Notiz ist abgelaufen", + "contactNotesLoading": "Kontaktnotizen werden geladen...", + "contactType": "Kontakttyp", + "countryId": "Land-ID", + "delete": "Löschen", + "deleteConfirm": "Sind Sie sicher, dass Sie diesen Kontakt löschen möchten?", + "deleteSuccess": "Kontakt erfolgreich gelöscht", + "description": "Kontakte hinzufügen und verwalten", + "descriptionLabel": "Beschreibung", + "details": "Kontaktdetails", + "detailsTab": "Details", + "edit": "Kontakt bearbeiten", + "editedBy": "Bearbeitet von", + "editedOn": "Bearbeitet am", + "email": "E-Mail", + "empty": "Keine Kontakte gefunden", + "emptyDescription": "Kontakte hinzufügen, um persönliche und geschäftliche Verbindungen zu verwalten", + "entranceCoordinates": "Eingangskoordinaten", + "errorTitle": "Fehler", + "exitCoordinates": "Ausgangskoordinaten", + "expires": "Läuft ab", + "facebook": "Facebook", + "faxPhone": "Fax", + "formError": "Bitte korrigieren Sie die Fehler im Formular", + "homePhone": "Heimtelefon", + "identification": "Identifikation", + "important": "Als wichtig markieren", + "instagram": "Instagram", + "internal": "Intern", + "invalidEmail": "Ungültige E-Mail-Adresse", + "linkedin": "LinkedIn", + "locationCoordinates": "Standortkoordinaten", + "locationInformation": "Standortinformationen", + "mastodon": "Mastodon", + "mobile": "Mobil", + "name": "Name", + "noteAlert": "Benachrichtigung", + "noteType": "Typ", + "notes": "Notizen", + "notesTab": "Notizen", + "officePhone": "Bürotelefon", + "openAppError": "{{action}}-App konnte nicht geöffnet werden", + "openLinkFailed": "{{action}}-Link konnte nicht geöffnet werden:", + "otherInfo": "Sonstige Informationen", + "person": "Person", + "phone": "Telefon", + "public": "Öffentlich", + "required": "Erforderlich", + "save": "Kontakt speichern", + "saveSuccess": "Kontakt erfolgreich gespeichert", + "search": "Kontakte suchen...", + "shouldAlert": "Soll benachrichtigt werden", + "socialMediaWeb": "Social Media und Web", + "state": "Bundesland", + "stateId": "Bundesland-ID", + "systemInformation": "Systeminformationen", + "tabs": { + "details": "Details", + "notes": "Notizen" + }, + "threads": "Threads", + "title": "Kontakte", + "twitter": "Twitter", + "visibility": "Sichtbarkeit", + "website": "Website", + "zip": "Postleitzahl" + }, + "form": { + "invalid_url": "Bitte geben Sie eine gültige URL ein, die mit http:// oder https:// beginnt", + "required": "Dieses Feld ist erforderlich" + }, + "home": { + "error": { + "no_user_id": "Benutzer-ID nicht verfügbar" + }, + "sidebar": { + "audio": "Audio", + "ptt": "PTT" + }, + "staffing": { + "add_note": "Notiz hinzufügen", + "confirm_staffing": "Besetzung bestätigen: {{staffing}}", + "no_options_available": "Keine Besetzungsoptionen verfügbar", + "no_staffing_options": "Keine Besetzungsoptionen verfügbar", + "note": "Notiz", + "note_placeholder": "Notiz eingeben (optional)...", + "review_and_confirm": "Überprüfen und bestätigen", + "select_staffing_level": "Besetzungsstufe auswählen", + "select_staffing_level_description": "Aktuellen Besetzungsstatus auswählen", + "selected_staffing": "Ausgewählte Besetzung", + "set_staffing": "Personalbesetzung festlegen", + "staffing_level": "Besetzungsstufe", + "update_failed": "Besetzung konnte nicht aktualisiert werden", + "updated_successfully": "Besetzung erfolgreich aktualisiert" + }, + "stats": { + "open_calls": "Offene Einsätze", + "personnel_in_service": "Personal im Dienst", + "units_in_service": "Einheiten im Dienst" + }, + "status": { + "no_options_available": "Keine Statusoptionen verfügbar", + "update_failed": "Status konnte nicht aktualisiert werden", + "updated_successfully": "Status erfolgreich aktualisiert" + }, + "tabs": { + "dashboard": "Dashboard", + "map": "Karte", + "staffing": "Besetzung", + "status": "Status" + }, + "user": { + "my_staffing": "Meine Besetzung", + "my_status": "Mein Status", + "staffing_unknown": "Unbekannte Besetzung", + "status_unknown": "Unbekannter Status", + "updated": "Aktualisiert" + } + }, + "livekit": { + "audio_devices": "Audiogeräte", + "audio_settings": "Audioeinstellungen", + "connected_to_room": "Mit Kanal verbunden", + "connecting": "Wird verbunden...", + "disconnect": "Trennen", + "double_click_action": "Doppelklick-Aktion", + "headset_button_ptt": "Headset-Taste PTT", + "headset_monitoring_active": "Headset-Überwachung aktiv", + "headset_monitoring_inactive": "Headset-Überwachung inaktiv", + "headset_ptt_description": "AirPods- oder Bluetooth-Ohrhörer-Taste zum Stummschalten/Aufheben verwenden", + "headset_ptt_disabled": "Headset PTT deaktiviert", + "headset_ptt_enabled": "Headset PTT aktiviert", + "join": "Beitreten", + "long_press_action": "Langdruck-Aktion", + "microphone": "Mikrofon", + "mute": "Stummschalten", + "no_action": "Keine Aktion", + "no_rooms_available": "Keine Sprachkanäle verfügbar", + "play_pause_action": "Wiedergabe/Pause-Taste-Aktion", + "ptt_mode": "PTT-Modus", + "ptt_mode_disabled": "Deaktiviert", + "ptt_mode_push": "Push-to-Talk (gedrückt halten zum Sprechen)", + "ptt_mode_toggle": "Umschalten (tippen zum Wechseln der Stummschaltung)", + "sound_feedback": "Tonfeedback", + "speaker": "Lautsprecher", + "speaking": "Spricht", + "tap_to_toggle_mute": "Headset-Taste tippen zum Umschalten der Stummschaltung", + "title": "Sprachkanäle", + "toggle_mute": "Stummschaltung umschalten", + "unmute": "Stummschaltung aufheben" + }, + "loading": { + "loading": "Wird geladen...", + "loadingData": "Daten werden geladen...", + "pleaseWait": "Bitte warten", + "processingRequest": "Ihre Anfrage wird verarbeitet..." + }, + "login": { + "change_server_url": "Server-URL ändern", + "errorModal": { + "confirmButton": "OK", + "message": "Bitte überprüfen Sie Ihren Benutzernamen und Ihr Passwort und versuchen Sie es erneut.", + "title": "Anmeldung fehlgeschlagen" + }, + "login": "Anmelden", + "login_button": "Anmelden", + "login_button_description": "Melden Sie sich bei Ihrem Konto an, um fortzufahren", + "login_button_error": "Fehler bei der Anmeldung", + "login_button_loading": "Anmeldung läuft...", + "login_button_success": "Erfolgreich angemeldet", + "password": "Passwort", + "password_incorrect": "Passwort war falsch", + "password_placeholder": "Passwort eingeben", + "select_language": "Sprache wählen", + "sso": { + "back": "Zurück", + "change_department": "Benutzernamen ändern", + "continue_button": "Weiter", + "department_code_label": "Abteilungscode", + "department_code_placeholder": "Abteilungscode eingeben", + "department_code_required": "Abteilungscode ist erforderlich", + "department_description": "Geben Sie Ihren Abteilungscode ein, um sich anzumelden", + "department_id_invalid": "Abteilungs-ID muss eine Zahl sein", + "department_id_label": "Abteilungs-ID (optional)", + "department_id_placeholder": "Abteilungs-ID eingeben, falls bekannt", + "department_not_found": "Abteilung nicht gefunden. Bitte überprüfen Sie den Code und versuchen Sie es erneut.", + "login_with_sso_button": "Mit SSO anmelden", + "looking_up": "Konto wird gesucht...", + "lookup_network_error": "Server konnte nicht erreicht werden. Bitte überprüfen Sie Ihre Verbindung und versuchen Sie es erneut.", + "or_sign_in_with_password": "— oder mit Passwort anmelden —", + "page_title": "Mit SSO anmelden", + "sign_in_with_sso": "Mit SSO anmelden", + "sso_not_enabled": "SSO ist für dieses Konto nicht aktiviert. Bitte verwenden Sie Ihren Benutzernamen und Ihr Passwort.", + "user_description": "Geben Sie Ihren Resgrid-Benutzernamen oder Ihre E-Mail-Adresse ein, um sich mit SSO anzumelden", + "user_not_found": "Konto nicht gefunden. Bitte überprüfen Sie Ihren Benutzernamen und versuchen Sie es erneut.", + "username_label": "Benutzername oder E-Mail", + "username_placeholder": "Benutzernamen oder E-Mail eingeben", + "username_required": "Benutzername ist erforderlich" + }, + "title": "Anmeldung", + "username": "Benutzername", + "username_placeholder": "Benutzernamen eingeben" + }, + "map": { + "call_set_as_current": "Einsatz als aktuellen Einsatz festgelegt", + "failed_to_open_maps": "Kartenanwendung konnte nicht geöffnet werden", + "failed_to_set_current_call": "Einsatz konnte nicht als aktueller Einsatz festgelegt werden", + "no_location_for_routing": "Keine Standortdaten für die Navigation verfügbar", + "pin_color": "Stecknadel-Farbe", + "recenter_map": "Karte neu zentrieren", + "set_as_current_call": "Als aktuellen Einsatz festlegen", + "view_call_details": "Einsatzdetails anzeigen" + }, + "maps": { + "contact_administrator": "Bitte kontaktieren Sie Ihren Administrator, um Kartendienste zu konfigurieren.", + "failed_to_load": "Karte konnte nicht geladen werden. Bitte überprüfen Sie Ihre Internetverbindung.", + "mapbox_not_configured": "Mapbox ist nicht konfiguriert. Bitte kontaktieren Sie Ihren Administrator." + }, + "messages": { + "all_messages": "Alle Nachrichten", + "compose": "Verfassen", + "compose_new_message": "Neue Nachricht", + "date_unknown": "Datum unbekannt", + "delete_confirmation_message": "Sind Sie sicher, dass Sie {{count}} Nachricht(en) löschen möchten?", + "delete_confirmation_title": "Nachrichten löschen", + "delete_single_confirmation_message": "Sind Sie sicher, dass Sie diese Nachricht löschen möchten?", + "enter_expiration_date": "Ablaufdatum eingeben", + "enter_message_body": "Nachricht eingeben", + "enter_note": "Optionale Notiz eingeben", + "enter_response": "Antwort eingeben", + "enter_subject": "Betreff eingeben", + "error": "Fehler", + "expiration_date_format": "Format: JJJJ-MM-TT SS:MM", + "expiration_date_optional": "Ablaufdatum (optional)", + "expired": "Abgelaufen", + "expires_on": "Läuft ab am", + "from": "Von", + "inbox": "Posteingang", + "message_body": "Nachrichtentext", + "message_content": "Nachrichteninhalt", + "message_type": "Nachrichtentyp", + "no_content": "Kein Inhalt", + "no_messages": "Keine Nachrichten gefunden", + "no_messages_description": "Senden Sie Ihre erste Nachricht, um zu beginnen", + "no_subject": "Kein Betreff", + "note_optional": "Notiz (optional)", + "people": "Personen", + "recipients": "Empfänger", + "recipients_count": "{{count}} Empfänger", + "recipients_selected": "{{count}} Empfänger ausgewählt", + "respond_failed": "Auf Nachricht konnte nicht geantwortet werden", + "respond_to_message": "Auf Nachricht antworten", + "responded": "Beantwortet", + "responded_on": "Beantwortet am", + "responding": "Wird geantwortet...", + "response": "Antwort", + "response_required": "Antwort ist erforderlich", + "search_placeholder": "Nachrichten suchen...", + "select_all": "Alle auswählen", + "select_message": "Nachricht auswählen", + "select_message_type": "Nachrichtentyp auswählen", + "select_recipients": "Empfänger auswählen", + "selected_count": "{{count}} ausgewählt", + "send": "Senden", + "send_first_message": "Erste Nachricht senden", + "send_response": "Antwort senden", + "sending": "Wird gesendet...", + "sent": "Gesendet", + "showing_count": "{{count}} Nachrichten werden angezeigt", + "subject": "Betreff", + "title": "Nachrichten", + "types": { + "alert": "Benachrichtigung", + "message": "Nachricht", + "poll": "Umfrage" + }, + "unsaved_changes": "Nicht gespeicherte Änderungen", + "unsaved_changes_message": "Sie haben nicht gespeicherte Änderungen. Sind Sie sicher, dass Sie diese verwerfen möchten?", + "validation": { + "body_required": "Nachrichtentext ist erforderlich", + "recipients_required": "Mindestens ein Empfänger ist erforderlich", + "subject_required": "Betreff ist erforderlich" + } + }, + "notes": { + "actions": { + "add": "Notiz hinzufügen", + "delete_confirm": "Sind Sie sicher, dass Sie diese Notiz löschen möchten?" + }, + "details": { + "close": "Schließen", + "created": "Erstellt", + "delete": "Löschen", + "edit": "Bearbeiten", + "tags": "Tags", + "title": "Notizdetails", + "updated": "Aktualisiert" + }, + "empty": "Keine Notizen gefunden", + "emptyDescription": "Es wurden noch keine Notizen für Ihre Abteilung erstellt.", + "search": "Notizen suchen...", + "title": "Notizen" + }, + "notifications": { + "bulkDeleteError": "Benachrichtigungen konnten nicht entfernt werden", + "bulkDeleteSuccess": "{{count}} Benachrichtigung(en) entfernt", + "confirmDelete": { + "message": "Sind Sie sicher, dass Sie {{count}} Benachrichtigung(en) löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", + "title": "Löschen bestätigen" + }, + "deleteError": "Benachrichtigung konnte nicht entfernt werden", + "deleteSuccess": "Benachrichtigung entfernt", + "deselectAll": "Alle abwählen", + "empty": "Keine Aktualisierungen verfügbar", + "loadError": "Benachrichtigungen konnten nicht geladen werden", + "selectAll": "Alle auswählen", + "selectedCount": "{{count}} ausgewählt", + "title": "Benachrichtigungen" + }, + "onboarding": { + "message": "Willkommen bei Resgrid Responder" + }, + "personnel": { + "contactInformation": "Kontaktinformationen", + "currentStatus": "Aktueller Status", + "empty": "Kein Personal gefunden", + "emptyDescription": "Kein Personal entspricht Ihren Suchkriterien oder es sind keine Personaldaten verfügbar.", + "filter": { + "description": "Wählen Sie Filter aus, um die Personalliste zu verfeinern. Änderungen werden automatisch übernommen.", + "empty": "Keine Filteroptionen verfügbar", + "emptyDescription": "Filteroptionen werden hier angezeigt, wenn sie verfügbar sind.", + "title": "Personal filtern" + }, + "group": "Gruppe", + "id": "ID", + "roles": "Rollen", + "search": "Personal suchen...", + "staffing": "Besetzung", + "status": { + "add_note": "Notiz hinzufügen", + "calls_tab": "Einsätze", + "confirm_status": "Status bestätigen: {{status}}", + "custom_responding_to": "Benutzerdefinierte Reaktion auf", + "general_status": "Allgemeine Statusaktualisierung", + "loading_stations": "Stationen werden geladen...", + "no_destination": "Kein Ziel", + "no_stations_available": "Keine Stationen verfügbar", + "note": "Notiz", + "note_placeholder": "Notiz eingeben (optional)...", + "responding_to": "Reagiert auf", + "responding_to_placeholder": "Eingeben, worauf Sie reagieren...", + "review_and_confirm": "Überprüfen und bestätigen", + "select_call_to_respond_to": "Einsatz zum Reagieren auswählen", + "select_destination": "Ziel auswählen", + "select_responding_to": "Status festlegen: {{status}}", + "selected_call": "Ausgewählter Einsatz", + "selected_destination": "Ausgewähltes Ziel", + "set_status": "Personalstatus festlegen", + "stations_tab": "Stationen", + "status": "Status" + } + }, + "protocols": { + "details": { + "close": "Schließen", + "code": "Code", + "created": "Erstellt", + "title": "Protokolldetails", + "updated": "Aktualisiert" + }, + "empty": "Keine Protokolle gefunden", + "emptyDescription": "Es wurden noch keine Protokolle für Ihre Abteilung erstellt.", + "search": "Protokolle suchen...", + "title": "Protokolle" + }, + "roles": { + "modal": { + "title": "Rollenzuweisungen der Einheit" + }, + "selectUser": "Benutzer auswählen", + "status": "{{active}} von {{total}} Rollen aktiv", + "tap_to_manage": "Tippen zum Verwalten der Rollen", + "unassigned": "Nicht zugewiesen" + }, + "settings": { + "about": "Über", + "account": "Konto", + "active_unit": "Aktive Einheit", + "app_info": "App-Informationen", + "app_name": "App-Name", + "arabic": "Arabisch", + "audio_device_selection": { + "bluetooth_device": "Bluetooth-Gerät", + "current_selection": "Aktuelle Auswahl", + "microphone": "Mikrofon", + "no_microphones_available": "Keine Mikrofone verfügbar", + "no_speakers_available": "Keine Lautsprecher verfügbar", + "none_selected": "Nichts ausgewählt", + "speaker": "Lautsprecher", + "speaker_device": "Lautsprecher", + "title": "Audiogerät-Auswahl", + "unavailable": "Nicht verfügbar", + "wired_device": "Kabelgebundenes Gerät" + }, + "background_geolocation": "Hintergrund-Geolokalisierung", + "background_geolocation_warning": "Diese Funktion ermöglicht der App, Ihren Standort im Hintergrund zu verfolgen. Sie hilft bei der Koordinierung von Notfalleinsätzen, kann jedoch die Akkulaufzeit beeinträchtigen.", + "background_location": "Hintergrundstandort", + "contact_us": "Kontaktieren Sie uns", + "english": "Englisch", + "enter_password": "Passwort eingeben", + "enter_server_url": "Resgrid API URL eingeben (z.B. https://api.resgrid.com)", + "enter_username": "Benutzernamen eingeben", + "environment": "Umgebung", + "french": "Französisch", + "general": "Allgemein", + "generale": "Allgemein", + "german": "Deutsch", + "github": "Github", + "help_center": "Hilfecenter", + "italian": "Italienisch", + "keep_alive": "Aktiv halten", + "keep_alive_warning": "Warnung: Das Aktivieren von 'Aktiv halten' verhindert, dass Ihr Gerät in den Ruhezustand wechselt, und kann den Akkuverbrauch erheblich erhöhen.", + "keep_screen_on": "Bildschirm aktiv halten", + "language": "Sprache", + "links": "Links", + "login_info": "Anmeldeinformationen", + "logout": "Abmelden", + "logout_confirm_cancel": "Abbrechen", + "logout_confirm_message": "Sind Sie sicher, dass Sie sich abmelden möchten? Alle lokalen Daten, zwischengespeicherten Werte und gespeicherten Einstellungen werden aus der App gelöscht.", + "logout_confirm_title": "Abmeldung bestätigen", + "logout_confirm_yes": "Ja, abmelden", + "more": "Mehr", + "no_units_available": "Keine Einheiten verfügbar", + "none_selected": "Nichts ausgewählt", + "notifications": "Push-Benachrichtigungen", + "notifications_badge_overflow": "99+", + "notifications_button": "Benachrichtigungen", + "notifications_description": "Benachrichtigungen aktivieren, um Alarme und Aktualisierungen zu erhalten", + "notifications_enable": "Benachrichtigungen aktivieren", + "password": "Passwort", + "polish": "Polnisch", + "preferences": "Einstellungen", + "privacy": "Datenschutzrichtlinie", + "privacy_policy": "Datenschutzrichtlinie", + "rate": "Bewerten", + "realtime_geolocation": "Echtzeit-Geolokalisierung", + "realtime_geolocation_warning": "Diese Funktion stellt eine Verbindung zum Echtzeit-Standort-Hub her, um Standortaktualisierungen von anderem Personal und Einheiten zu erhalten. Sie erfordert eine aktive Netzwerkverbindung.", + "select_unit": "Einheit auswählen", + "server": "Server", + "server_url": "Server-URL", + "server_url_note": "Hinweis: Dies ist die URL der Resgrid API. Sie wird verwendet, um eine Verbindung zum Resgrid-Server herzustellen. Fügen Sie /api/v4 nicht in die URL ein und verwenden Sie keinen abschließenden Schrägstrich.", + "set_active_unit": "Aktive Einheit festlegen", + "share": "Teilen", + "spanish": "Spanisch", + "status_page": "Systemstatus", + "support": "Support", + "support_us": "Unterstützen Sie uns", + "swedish": "Schwedisch", + "terms": "Nutzungsbedingungen", + "theme": { + "dark": "Dunkel", + "light": "Hell", + "system": "System", + "title": "Design" + }, + "title": "Einstellungen", + "ukrainian": "Ukrainisch", + "unit_selection": "Einheitenauswahl", + "username": "Benutzername", + "version": "Version", + "website": "Website" + }, + "shifts": { + "all_shifts": "Alle Schichten", + "already_signed_up": "Bereits angemeldet", + "assigned": "Zugewiesen", + "automatic": "Automatisch", + "available": "Verfügbar", + "calendar": "Kalender", + "current_signups": "Aktuelle Anmeldungen", + "day_details": "Schicht-Tagesdetails", + "details": "Schichtdetails", + "end_time": "Endzeit", + "groups": "Gruppen", + "in_shift": "In Schicht", + "legend": "Legende", + "loading": "Schichten werden geladen...", + "loading_details": "Schichtdetails werden geladen...", + "loading_signup": "Wird verarbeitet...", + "manual": "Manuell", + "needed": "Benötigt", + "needs": "Bedarf", + "next_day": "Nächster Tag", + "no_positions_available": "Keine Positionen für die Anmeldung verfügbar", + "no_shifts": "Keine Schichten verfügbar", + "no_shifts_description": "Kontaktieren Sie Ihren Vorgesetzten, wenn Sie glauben, dass Sie Schichtzuweisungen haben sollten", + "no_shifts_today": "Für heute keine Schichten geplant", + "no_shifts_today_description": "Schauen Sie später nach oder kontaktieren Sie Ihren Vorgesetzten für Schichtzuweisungen", + "no_signups_yet": "Noch keine Anmeldungen", + "optional": "Optional", + "personnel_count": "Personalanzahl", + "position_needs": "Positionsbedarf", + "required": "Erforderlich", + "roles": "Rollen", + "scheduled_for": "Geplant für", + "search_placeholder": "Schichten suchen...", + "shift_code": "Schichtcode", + "shift_day": "Schichttag", + "shift_name": "Schichtname", + "shift_type": { + "emergency": "Notfallschicht", + "label": "Schichttyp", + "regular": "Regulär", + "training": "Ausbildung", + "unknown": "Unbekannt" + }, + "signed_up": "Angemeldet", + "signup": "Anmelden", + "signup_error": "Anmeldung zur Schicht fehlgeschlagen", + "signup_status": "Anmeldestatus", + "signup_success": "Erfolgreich für die Schicht angemeldet", + "signups": "Anmeldungen", + "start_time": "Startzeit", + "today": "Heute", + "todays_shifts": "Heutige Schichten", + "type_emergency": "Notfallschicht", + "type_regular": "Regulär", + "type_training": "Ausbildung", + "type_unknown": "Unbekannt", + "unknown": "Unbekannt", + "upcoming_shift_days": "Bevorstehende Schichttage", + "withdraw": "Abmelden", + "withdraw_error": "Abmeldung von der Schicht fehlgeschlagen", + "withdraw_success": "Erfolgreich von der Schicht abgemeldet", + "you": "Sie", + "you_are_signed_up": "Sie sind für diese Schicht angemeldet" + }, + "sidebar": { + "audio": "Stream", + "ptt": "Sprache" + }, + "tabs": { + "calendar": "Kalender", + "calls": "Einsätze", + "contacts": "Kontakte", + "home": "Startseite", + "map": "Karte", + "messages": "Nachrichten", + "notes": "Notizen", + "personnel": "Personal", + "protocols": "Protokolle", + "settings": "Einstellungen", + "shifts": "Schichten", + "units": "Einheiten" + }, + "units": { + "coordinates": "Koordinaten", + "empty": "Keine Einheiten gefunden", + "emptyDescription": "In Ihrer Abteilung sind keine Einheiten verfügbar", + "features": "Ausstattung", + "fourWheelDrive": "4WD", + "group": "Gruppe", + "lastUpdate": "Zuletzt aktualisiert", + "location": "Standort", + "maps_error": "Karten konnten nicht geöffnet werden", + "notes": "Notizen", + "plateNumber": "Kennzeichen", + "search": "Einheiten suchen...", + "specialPermit": "Sondergenehmigung", + "tapToOpenMaps": "Tippen, um in Karten zu öffnen", + "title": "Einheiten", + "vehicleInfo": "Fahrzeuginformationen", + "vin": "FIN" + }, + "welcome": "Willkommen bei Resgrid Responder" +} diff --git a/src/translations/en.json b/src/translations/en.json index 761310a..ce1d071 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -598,6 +598,7 @@ "username_placeholder": "Enter your username or email", "username_required": "Username is required" }, + "select_language": "Language", "title": "Login", "username": "Username", "username_placeholder": "Enter your username" @@ -808,6 +809,12 @@ "background_location": "Background Location", "contact_us": "Contact Us", "english": "English", + "french": "French", + "german": "German", + "italian": "Italian", + "polish": "Polish", + "swedish": "Swedish", + "ukrainian": "Ukrainian", "enter_password": "Enter your password", "enter_server_url": "Enter Resgrid API URL (e.g., https://api.resgrid.com)", "enter_username": "Enter your username", diff --git a/src/translations/es.json b/src/translations/es.json index 364a754..e8a8a52 100644 --- a/src/translations/es.json +++ b/src/translations/es.json @@ -598,6 +598,7 @@ "username_placeholder": "Introduce tu usuario o correo", "username_required": "El usuario es obligatorio" }, + "select_language": "Idioma", "title": "Iniciar sesión", "username": "Nombre de usuario", "username_placeholder": "Introduce tu nombre de usuario" @@ -808,6 +809,12 @@ "background_location": "Ubicación en segundo plano", "contact_us": "Contáctanos", "english": "Inglés", + "french": "Francés", + "german": "Alemán", + "italian": "Italiano", + "polish": "Polaco", + "swedish": "Sueco", + "ukrainian": "Ucraniano", "enter_password": "Introduce tu contraseña", "enter_server_url": "Introduce la URL de la API de Resgrid (ej: https://api.resgrid.com)", "enter_username": "Introduce tu nombre de usuario", diff --git a/src/translations/fr.json b/src/translations/fr.json new file mode 100644 index 0000000..59d2441 --- /dev/null +++ b/src/translations/fr.json @@ -0,0 +1,978 @@ +{ + "app": { + "title": "Resgrid Responder" + }, + "audio_streams": { + "buffering": "Mise en mémoire tampon", + "buffering_stream": "Mise en mémoire tampon du flux audio...", + "close": "Fermer", + "currently_playing": "En cours de lecture : {{streamName}}", + "error_loading_stream": "Échec du chargement du flux audio", + "loading": "Chargement", + "loading_stream": "Chargement du flux audio...", + "loading_streams": "Chargement des flux audio...", + "name": "Nom", + "no_stream_playing": "Aucun flux audio n'est en cours de lecture", + "none": "Aucun", + "playing": "En lecture", + "refresh_streams": "Actualiser les flux", + "select_placeholder": "Sélectionner un flux audio", + "select_stream": "Sélectionner un flux audio", + "status": "Statut", + "stopped": "Arrêté", + "stream_info": "Informations sur le flux", + "stream_selected": "Sélectionné : {{streamName}}", + "title": "Flux audio", + "type": "Type" + }, + "bluetooth": { + "audio_device": "BT Casque", + "available_devices": "Appareils disponibles", + "bluetooth_not_ready": "Bluetooth est {{state}}. Veuillez activer le Bluetooth.", + "clear": "Effacer", + "connected": "Connecté", + "current_selection": "Sélection actuelle", + "no_device_selected": "Aucun appareil sélectionné", + "no_devices_found": "Aucun appareil audio Bluetooth trouvé", + "not_connected": "Non connecté", + "scan": "Rechercher", + "scan_again": "Rechercher à nouveau", + "scan_error_message": "Impossible de rechercher des appareils Bluetooth", + "scan_error_title": "Erreur de recherche", + "scanning": "Recherche en cours...", + "select_device": "Sélectionner un appareil Bluetooth", + "selected": "Sélectionné", + "selection_error_message": "Impossible d'enregistrer l'appareil préféré", + "selection_error_title": "Erreur de sélection", + "supports_mic_control": "Contrôle du microphone", + "tap_scan_to_find_devices": "Appuyez sur « Rechercher » pour trouver des appareils audio Bluetooth", + "unknown_device": "Appareil inconnu" + }, + "calendar": { + "allDay": "Toute la journée", + "attendanceUpdated": { + "signedUp": "Vous vous êtes inscrit(e) avec succès à cet événement.", + "title": "Participation mise à jour", + "unsignedUp": "Vous avez été retiré(e) de cet événement." + }, + "attendees": { + "title": "Participants" + }, + "attendeesCount": "{{count}} participant", + "attendeesCount_plural": "{{count}} participants", + "confirmSignup": "Confirmer", + "confirmUnsignup": { + "message": "Êtes-vous sûr(e) de vouloir annuler votre participation à cet événement ?", + "title": "Confirmer l'annulation" + }, + "createdBy": "Créé par", + "daysOfWeek": { + "fri": "Ven", + "mon": "Lun", + "sat": "Sam", + "sun": "Dim", + "thu": "Jeu", + "tue": "Mar", + "wed": "Mer" + }, + "description": "Description", + "error": { + "attendanceUpdate": "Échec de la mise à jour de la participation. Veuillez réessayer.", + "title": "Erreur" + }, + "eventsCount": "{{count}} événement", + "eventsCount_plural": "{{count}} événements", + "loading": { + "date": "Chargement des événements pour la date sélectionnée...", + "today": "Chargement des événements d'aujourd'hui...", + "upcoming": "Chargement des événements à venir..." + }, + "noEvents": "Aucun événement planifié", + "optional": "Facultatif", + "required": "Obligatoire", + "selectDate": "Sélectionner une date pour afficher les événements", + "selectedDate": { + "empty": "Aucun événement planifié pour cette date.", + "title": "Événements du {{date}}" + }, + "signedUp": "Inscrit(e)", + "signup": { + "button": "S'inscrire", + "notePlaceholder": "Saisissez votre note ici...", + "notePrompt": "Ajouter une note (facultatif) :", + "title": "Inscription à l'événement" + }, + "signupAvailable": "Inscription disponible", + "tabs": { + "calendar": "Calendrier", + "today": "Aujourd'hui", + "upcoming": "À venir" + }, + "tapToSignUp": "Appuyez pour vous inscrire", + "title": "Calendrier", + "today": { + "empty": { + "description": "Vous n'avez aucun événement planifié pour aujourd'hui.", + "title": "Aucun événement aujourd'hui" + } + }, + "todayButton": "Aujourd'hui", + "unsignup": "Annuler la participation", + "upcoming": { + "empty": { + "description": "Vous n'avez aucun événement planifié dans les 7 prochains jours.", + "title": "Aucun événement à venir" + } + } + }, + "callImages": { + "add": "Ajouter une image", + "add_new": "Ajouter une nouvelle image", + "capture_error": "Erreur lors de la capture de la photo. Veuillez réessayer.", + "default_name": "Image sans titre", + "error": "Erreur lors de la récupération des images", + "failed_to_load": "Échec du chargement de l'image", + "image_name": "Nom de l'image", + "image_note": "Note sur l'image", + "loading": "Chargement...", + "no_images": "Aucune image disponible", + "no_images_description": "Ajoutez des images à votre appel pour faciliter la documentation et la communication", + "permission_denied_settings": "Permission refusée. Veuillez activer l'accès dans les paramètres de votre appareil.", + "select_error": "Erreur lors de la sélection de l'image. Veuillez réessayer.", + "select_from_gallery": "Sélectionner depuis la galerie", + "take_photo": "Prendre une photo", + "title": "Images de l'appel", + "upload": "Téléverser", + "upload_error": "Échec du téléversement de l'image. Veuillez réessayer.", + "upload_success": "Image téléversée avec succès" + }, + "callNotes": { + "addNote": "Ajouter une note", + "addNoteError": "Échec de l'ajout de la note. Veuillez réessayer.", + "addNotePlaceholder": "Ajouter une nouvelle note...", + "noNotes": "Aucune note disponible pour cet appel", + "noSearchResults": "Aucune note ne correspond à votre recherche", + "searchPlaceholder": "Rechercher des notes...", + "title": "Notes de l'appel" + }, + "call_detail": { + "address": "Adresse", + "call_location": "Localisation de l'appel", + "close_call": "Clore l'appel", + "close_call_confirmation": "Êtes-vous sûr(e) de vouloir clore cet appel ?", + "close_call_error": "Échec de la clôture de l'appel", + "close_call_note": "Note de clôture", + "close_call_note_placeholder": "Saisissez une note concernant la clôture de l'appel", + "close_call_success": "Appel clos avec succès", + "close_call_type": "Type de clôture", + "close_call_type_placeholder": "Sélectionner le type de clôture", + "close_call_type_required": "Veuillez sélectionner un type de clôture", + "close_call_types": { + "cancelled": "Annulé", + "closed": "Clos", + "false_alarm": "Fausse alerte", + "founded": "Fondé", + "minor": "Mineur", + "transferred": "Transféré", + "unfounded": "Non fondé" + }, + "contact_email": "E-mail", + "contact_info": "Coordonnées", + "contact_name": "Nom du contact", + "contact_phone": "Téléphone", + "edit_call": "Modifier l'appel", + "external_id": "ID externe", + "failed_to_open_maps": "Échec de l'ouverture de l'application de cartographie", + "files": { + "add_file": "Ajouter un fichier", + "button": "Fichiers", + "empty": "Aucun fichier disponible", + "empty_description": "Ajoutez des fichiers à votre appel pour faciliter la documentation et la communication", + "error": "Erreur lors de la récupération des fichiers", + "file_name": "Nom du fichier", + "name_required": "Veuillez saisir un nom pour le fichier", + "no_files": "Aucun fichier disponible", + "no_files_description": "Ajoutez des fichiers à votre appel pour faciliter la documentation et la communication", + "open_error": "Erreur lors de l'ouverture du fichier", + "select_error": "Erreur lors de la sélection du fichier", + "select_file": "Sélectionner un fichier", + "share_error": "Erreur lors du partage du fichier", + "title": "Fichiers de l'appel", + "upload": "Téléverser", + "upload_error": "Erreur lors du téléversement du fichier", + "uploading": "Téléversement..." + }, + "group": "Groupe", + "images": "Images", + "loading": "Chargement des détails de l'appel...", + "nature": "Nature", + "no_additional_info": "Aucune information supplémentaire disponible", + "no_contact_info": "Aucune coordonnée disponible", + "no_dispatched": "Aucune unité dépêchée sur cet appel", + "no_location": "Aucune donnée de localisation disponible", + "no_location_for_routing": "Aucune donnée de localisation disponible pour l'itinéraire", + "no_protocols": "Aucun protocole associé à cet appel", + "no_timeline": "Aucun événement de chronologie disponible", + "not_available": "N/D", + "not_found": "Appel introuvable", + "note": "Note", + "notes": "Notes", + "priority": "Priorité", + "reference_id": "ID de référence", + "status": "Statut", + "tabs": { + "contact": "Contact", + "dispatched": "Dépêché", + "info": "Infos", + "protocols": "Protocoles", + "timeline": "Activité" + }, + "timestamp": "Horodatage", + "title": "Détails de l'appel", + "type": "Type", + "unit": "Unité", + "update_call_error": "Échec de la mise à jour de l'appel", + "update_call_success": "Appel mis à jour avec succès" + }, + "calls": { + "address": "Adresse", + "address_found": "Adresse trouvée et localisation mise à jour", + "address_not_found": "Adresse introuvable, veuillez essayer une adresse différente", + "address_placeholder": "Saisir l'adresse de l'appel", + "address_required": "Veuillez saisir une adresse à rechercher", + "call_details": "Détails de l'appel", + "call_location": "Localisation de l'appel", + "call_number": "Numéro d'appel", + "call_priority": "Priorité de l'appel", + "confirm_deselect_message": "Êtes-vous sûr(e) de vouloir désélectionner l'appel actif actuel ?", + "confirm_deselect_title": "Désélectionner l'appel actif", + "contact_info": "Coordonnées", + "contact_info_placeholder": "Saisir les informations du contact", + "contact_name": "Nom du contact", + "contact_name_placeholder": "Saisir le nom du contact", + "contact_phone": "Téléphone du contact", + "contact_phone_placeholder": "Saisir le téléphone du contact", + "coordinates": "Coordonnées GPS", + "coordinates_found": "Coordonnées trouvées et adresse mise à jour", + "coordinates_geocoding_error": "Échec de l'obtention de l'adresse pour les coordonnées, mais la localisation a été définie sur la carte", + "coordinates_invalid_format": "Format de coordonnées invalide. Veuillez utiliser le format : latitude, longitude", + "coordinates_no_address": "Coordonnées définies sur la carte, mais aucune adresse trouvée", + "coordinates_out_of_range": "Coordonnées hors plage. La latitude doit être comprise entre -90 et 90, la longitude entre -180 et 180", + "coordinates_placeholder": "Saisir les coordonnées GPS (ex. : 37.7749, -122.4194)", + "coordinates_required": "Veuillez saisir des coordonnées à rechercher", + "create": "Créer", + "create_error": "Erreur lors de la création de l'appel", + "create_new_call": "Créer un nouvel appel", + "create_success": "Appel créé avec succès", + "description": "Description", + "description_placeholder": "Saisir la description de l'appel", + "deselect": "Désélectionner", + "directions": "Itinéraire", + "dispatch_to": "Dépêcher vers", + "dispatch_to_everyone": "Dépêcher tout le personnel disponible", + "edit_call": "Modifier l'appel", + "edit_call_description": "Mettre à jour les informations de l'appel", + "everyone": "Tout le monde", + "files": { + "no_files": "Aucun fichier disponible", + "no_files_description": "Aucun fichier n'a encore été ajouté à cet appel", + "title": "Fichiers de l'appel" + }, + "geocoding_error": "Échec de la recherche d'adresse, veuillez réessayer", + "groups": "Groupes", + "loading": "Chargement des appels...", + "loading_calls": "Chargement des appels...", + "name": "Nom", + "name_placeholder": "Saisir le nom de l'appel", + "nature": "Nature", + "nature_placeholder": "Saisir la nature de l'appel", + "new_call": "Nouvel appel", + "new_call_description": "Créer un nouvel appel pour démarrer un nouvel incident", + "no_call_selected": "Aucun appel actif", + "no_call_selected_info": "Cette unité ne répond actuellement à aucun appel", + "no_calls": "Aucun appel actif", + "no_calls_available": "Aucun appel disponible", + "no_calls_description": "Aucun appel actif trouvé. Sélectionnez un appel actif pour afficher les détails.", + "no_location_message": "Cet appel ne dispose pas de données de localisation pour la navigation.", + "no_location_title": "Aucune localisation disponible", + "no_open_calls": "Aucun appel ouvert disponible", + "note": "Note", + "note_placeholder": "Saisir la note de l'appel", + "personnel": "Personnel", + "plus_code": "Plus Code", + "plus_code_found": "Plus Code trouvé et localisation mise à jour", + "plus_code_geocoding_error": "Échec de la recherche du Plus Code, veuillez réessayer", + "plus_code_not_found": "Plus Code introuvable, veuillez essayer un autre Plus Code", + "plus_code_placeholder": "Saisir le Plus Code (ex. : 849VCWC8+R9)", + "plus_code_required": "Veuillez saisir un Plus Code à rechercher", + "priority": "Priorité", + "priority_placeholder": "Sélectionner la priorité de l'appel", + "roles": "Rôles", + "search": "Rechercher des appels...", + "select_active_call": "Sélectionner l'appel actif", + "select_address": "Sélectionner une adresse", + "select_address_placeholder": "Sélectionner l'adresse de l'appel", + "select_description": "Sélectionner une description", + "select_dispatch_recipients": "Sélectionner les destinataires du dispatch", + "select_location": "Sélectionner la localisation sur la carte", + "select_name": "Sélectionner un nom", + "select_nature": "Sélectionner la nature", + "select_nature_placeholder": "Sélectionner la nature de l'appel", + "select_priority": "Sélectionner la priorité", + "select_priority_placeholder": "Sélectionner la priorité de l'appel", + "select_recipients": "Sélectionner les destinataires", + "select_type": "Sélectionner le type", + "selected": "sélectionné", + "title": "Appels", + "type": "Type", + "units": "Unités", + "users": "Utilisateurs", + "viewNotes": "Notes", + "view_details": "Voir les détails", + "what3words": "what3words", + "what3words_found": "Adresse what3words trouvée et localisation mise à jour", + "what3words_geocoding_error": "Échec de la recherche de l'adresse what3words, veuillez réessayer", + "what3words_invalid_format": "Format what3words invalide. Veuillez utiliser le format : mot.mot.mot", + "what3words_not_found": "Adresse what3words introuvable, veuillez essayer une adresse différente", + "what3words_placeholder": "Saisir l'adresse what3words (ex. : filled.count.soap)", + "what3words_required": "Veuillez saisir une adresse what3words à rechercher" + }, + "common": { + "active": "Actif", + "add": "Ajouter", + "all": "Tous", + "back": "Retour", + "cancel": "Annuler", + "close": "Fermer", + "confirm": "Confirmer", + "delete": "Supprimer", + "deleting": "Suppression...", + "discard": "Ignorer", + "done": "Terminé", + "edit": "Modifier", + "error": "Erreur", + "errorOccurred": "Une erreur s'est produite", + "get_my_location": "Obtenir ma localisation", + "loading": "Chargement", + "loading_address": "Chargement de l'adresse...", + "navigation": "Navigation", + "next": "Suivant", + "noActiveUnit": "Aucune unité active", + "noActiveUnitDescription": "Veuillez sélectionner une unité active pour voir les statuts disponibles", + "no_address_found": "Aucune adresse trouvée", + "no_data_available": "Aucune donnée disponible", + "no_location": "Aucune localisation disponible", + "no_results_found": "Aucun résultat trouvé", + "no_unit_selected": "Aucune unité sélectionnée", + "of": "de", + "ok": "OK", + "optional": "Facultatif", + "permission_denied": "Permission refusée", + "previous": "Précédent", + "refresh": "Actualiser", + "retry": "Réessayer", + "route": "Itinéraire", + "save": "Enregistrer", + "search": "Rechercher", + "set_location": "Définir la localisation", + "step": "Étape", + "submit": "Soumettre", + "submitting": "Soumission...", + "success": "Succès", + "unknown_department": "Département inconnu", + "unknown_user": "Utilisateur inconnu", + "uploading": "Téléversement..." + }, + "contacts": { + "add": "Ajouter un contact", + "addedBy": "Ajouté par", + "addedOn": "Ajouté le", + "additionalInformation": "Informations supplémentaires", + "address": "Adresse", + "bluesky": "Bluesky", + "cancel": "Annuler", + "cellPhone": "Téléphone portable", + "city": "Ville", + "cityState": "Ville et région", + "cityStateZip": "Ville, région, code postal", + "company": "Société", + "contactInformation": "Coordonnées", + "contactNotes": "Notes du contact", + "contactNotesEmpty": "Aucune note trouvée pour ce contact", + "contactNotesEmptyDescription": "Les notes ajoutées à ce contact apparaîtront ici", + "contactNotesExpired": "Cette note a expiré", + "contactNotesLoading": "Chargement des notes du contact...", + "contactType": "Type de contact", + "countryId": "ID pays", + "delete": "Supprimer", + "deleteConfirm": "Êtes-vous sûr(e) de vouloir supprimer ce contact ?", + "deleteSuccess": "Contact supprimé avec succès", + "description": "Ajouter et gérer vos contacts", + "descriptionLabel": "Description", + "details": "Détails du contact", + "detailsTab": "Détails", + "edit": "Modifier le contact", + "editedBy": "Modifié par", + "editedOn": "Modifié le", + "email": "E-mail", + "empty": "Aucun contact trouvé", + "emptyDescription": "Ajoutez des contacts pour gérer vos relations personnelles et professionnelles", + "entranceCoordinates": "Coordonnées de l'entrée", + "errorTitle": "Erreur", + "exitCoordinates": "Coordonnées de la sortie", + "expires": "Expire", + "facebook": "Facebook", + "faxPhone": "Fax", + "formError": "Veuillez corriger les erreurs dans le formulaire", + "homePhone": "Téléphone fixe", + "identification": "Identification", + "important": "Marquer comme important", + "instagram": "Instagram", + "internal": "Interne", + "invalidEmail": "Adresse e-mail invalide", + "linkedin": "LinkedIn", + "locationCoordinates": "Coordonnées de la localisation", + "locationInformation": "Informations de localisation", + "mastodon": "Mastodon", + "mobile": "Mobile", + "name": "Nom", + "noteAlert": "Alerte", + "noteType": "Type", + "notes": "Notes", + "notesTab": "Notes", + "officePhone": "Téléphone bureau", + "openAppError": "Impossible d'ouvrir l'application {{action}}", + "openLinkFailed": "Échec de l'ouverture du lien {{action}} :", + "otherInfo": "Autres informations", + "person": "Personne", + "phone": "Téléphone", + "public": "Public", + "required": "Obligatoire", + "save": "Enregistrer le contact", + "saveSuccess": "Contact enregistré avec succès", + "search": "Rechercher des contacts...", + "shouldAlert": "Doit alerter", + "socialMediaWeb": "Réseaux sociaux et web", + "state": "Région", + "stateId": "ID région", + "systemInformation": "Informations système", + "tabs": { + "details": "Détails", + "notes": "Notes" + }, + "threads": "Threads", + "title": "Contacts", + "twitter": "Twitter", + "visibility": "Visibilité", + "website": "Site web", + "zip": "Code postal" + }, + "form": { + "invalid_url": "Veuillez saisir une URL valide commençant par http:// ou https://", + "required": "Ce champ est obligatoire" + }, + "home": { + "error": { + "no_user_id": "ID utilisateur non disponible" + }, + "sidebar": { + "audio": "Audio", + "ptt": "PTT" + }, + "staffing": { + "add_note": "Ajouter une note", + "confirm_staffing": "Confirmer l'effectif : {{staffing}}", + "no_options_available": "Aucune option d'effectif disponible", + "no_staffing_options": "Aucune option d'effectif disponible", + "note": "Note", + "note_placeholder": "Saisir une note (facultatif)...", + "review_and_confirm": "Vérifier et confirmer", + "select_staffing_level": "Sélectionner le niveau d'effectif", + "select_staffing_level_description": "Choisissez votre statut d'effectif actuel", + "selected_staffing": "Effectif sélectionné", + "set_staffing": "Définir l'effectif du personnel", + "staffing_level": "Niveau d'effectif", + "update_failed": "Échec de la mise à jour de l'effectif", + "updated_successfully": "Effectif mis à jour avec succès" + }, + "stats": { + "open_calls": "Appels ouverts", + "personnel_in_service": "Personnel en service", + "units_in_service": "Unités en service" + }, + "status": { + "no_options_available": "Aucune option de statut disponible", + "update_failed": "Échec de la mise à jour du statut", + "updated_successfully": "Statut mis à jour avec succès" + }, + "tabs": { + "dashboard": "Tableau de bord", + "map": "Carte", + "staffing": "Effectif", + "status": "Statut" + }, + "user": { + "my_staffing": "Mon effectif", + "my_status": "Mon statut", + "staffing_unknown": "Effectif inconnu", + "status_unknown": "Statut inconnu", + "updated": "Mis à jour" + } + }, + "livekit": { + "audio_devices": "Appareils audio", + "audio_settings": "Paramètres audio", + "connected_to_room": "Connecté au canal", + "connecting": "Connexion en cours...", + "disconnect": "Déconnecter", + "double_click_action": "Action double-clic", + "headset_button_ptt": "Bouton casque PTT", + "headset_monitoring_active": "Surveillance du casque active", + "headset_monitoring_inactive": "Surveillance du casque inactive", + "headset_ptt_description": "Utiliser le bouton AirPods ou écouteurs Bluetooth pour activer/désactiver le micro", + "headset_ptt_disabled": "PTT casque désactivé", + "headset_ptt_enabled": "PTT casque activé", + "join": "Rejoindre", + "long_press_action": "Action appui long", + "microphone": "Microphone", + "mute": "Couper le micro", + "no_action": "Aucune action", + "no_rooms_available": "Aucun canal vocal disponible", + "play_pause_action": "Action bouton lecture/pause", + "ptt_mode": "Mode PTT", + "ptt_mode_disabled": "Désactivé", + "ptt_mode_push": "Push-to-Talk (maintenir pour parler)", + "ptt_mode_toggle": "Bascule (appuyer pour activer/désactiver le micro)", + "sound_feedback": "Retour sonore", + "speaker": "Haut-parleur", + "speaking": "En train de parler", + "tap_to_toggle_mute": "Appuyer sur le bouton du casque pour activer/désactiver le micro", + "title": "Canaux vocaux", + "toggle_mute": "Activer/désactiver le micro", + "unmute": "Réactiver le micro" + }, + "loading": { + "loading": "Chargement...", + "loadingData": "Chargement des données...", + "pleaseWait": "Veuillez patienter", + "processingRequest": "Traitement de votre demande..." + }, + "login": { + "change_server_url": "Modifier l'URL du serveur", + "errorModal": { + "confirmButton": "OK", + "message": "Veuillez vérifier votre nom d'utilisateur et votre mot de passe, puis réessayer.", + "title": "Échec de la connexion" + }, + "login": "Connexion", + "login_button": "Connexion", + "login_button_description": "Connectez-vous à votre compte pour continuer", + "login_button_error": "Erreur lors de la connexion", + "login_button_loading": "Connexion en cours...", + "login_button_success": "Connecté avec succès", + "password": "Mot de passe", + "password_incorrect": "Le mot de passe était incorrect", + "password_placeholder": "Saisir votre mot de passe", + "select_language": "Choisir la langue", + "sso": { + "back": "Retour", + "change_department": "Changer de nom d'utilisateur", + "continue_button": "Continuer", + "department_code_label": "Code du département", + "department_code_placeholder": "Saisir le code du département", + "department_code_required": "Le code du département est obligatoire", + "department_description": "Saisissez votre code de département pour vous connecter", + "department_id_invalid": "L'ID du département doit être un nombre", + "department_id_label": "ID du département (facultatif)", + "department_id_placeholder": "Saisir l'ID du département si connu", + "department_not_found": "Département introuvable. Veuillez vérifier le code et réessayer.", + "login_with_sso_button": "Connexion avec SSO", + "looking_up": "Recherche du compte...", + "lookup_network_error": "Impossible de joindre le serveur. Veuillez vérifier votre connexion et réessayer.", + "or_sign_in_with_password": "— ou se connecter avec un mot de passe —", + "page_title": "Connexion avec SSO", + "sign_in_with_sso": "Se connecter avec SSO", + "sso_not_enabled": "SSO n'est pas activé pour ce compte. Veuillez utiliser votre nom d'utilisateur et votre mot de passe.", + "user_description": "Saisissez votre nom d'utilisateur ou e-mail Resgrid pour vous connecter avec SSO", + "user_not_found": "Compte introuvable. Veuillez vérifier votre nom d'utilisateur et réessayer.", + "username_label": "Nom d'utilisateur ou e-mail", + "username_placeholder": "Saisir votre nom d'utilisateur ou e-mail", + "username_required": "Le nom d'utilisateur est obligatoire" + }, + "title": "Connexion", + "username": "Nom d'utilisateur", + "username_placeholder": "Saisir votre nom d'utilisateur" + }, + "map": { + "call_set_as_current": "Appel défini comme appel actuel", + "failed_to_open_maps": "Échec de l'ouverture de l'application de cartographie", + "failed_to_set_current_call": "Échec de la définition de l'appel comme appel actuel", + "no_location_for_routing": "Aucune donnée de localisation disponible pour l'itinéraire", + "pin_color": "Couleur du repère", + "recenter_map": "Recentrer la carte", + "set_as_current_call": "Définir comme appel actuel", + "view_call_details": "Voir les détails de l'appel" + }, + "maps": { + "contact_administrator": "Veuillez contacter votre administrateur pour configurer les services de cartographie.", + "failed_to_load": "Échec du chargement de la carte. Veuillez vérifier votre connexion Internet.", + "mapbox_not_configured": "Mapbox n'est pas configuré. Veuillez contacter votre administrateur." + }, + "messages": { + "all_messages": "Tous les messages", + "compose": "Composer", + "compose_new_message": "Nouveau message", + "date_unknown": "Date inconnue", + "delete_confirmation_message": "Êtes-vous sûr(e) de vouloir supprimer {{count}} message(s) ?", + "delete_confirmation_title": "Supprimer les messages", + "delete_single_confirmation_message": "Êtes-vous sûr(e) de vouloir supprimer ce message ?", + "enter_expiration_date": "Saisir la date d'expiration", + "enter_message_body": "Saisir votre message", + "enter_note": "Saisir une note facultative", + "enter_response": "Saisir votre réponse", + "enter_subject": "Saisir l'objet du message", + "error": "Erreur", + "expiration_date_format": "Format : AAAA-MM-JJ HH:MM", + "expiration_date_optional": "Date d'expiration (facultatif)", + "expired": "Expiré", + "expires_on": "Expire le", + "from": "De", + "inbox": "Boîte de réception", + "message_body": "Corps du message", + "message_content": "Contenu du message", + "message_type": "Type de message", + "no_content": "Aucun contenu", + "no_messages": "Aucun message trouvé", + "no_messages_description": "Envoyez votre premier message pour commencer", + "no_subject": "Sans objet", + "note_optional": "Note (facultatif)", + "people": "Personnes", + "recipients": "Destinataires", + "recipients_count": "{{count}} destinataires", + "recipients_selected": "{{count}} destinataires sélectionnés", + "respond_failed": "Échec de la réponse au message", + "respond_to_message": "Répondre au message", + "responded": "Répondu", + "responded_on": "Répondu le", + "responding": "Réponse en cours...", + "response": "Réponse", + "response_required": "Une réponse est obligatoire", + "search_placeholder": "Rechercher des messages...", + "select_all": "Tout sélectionner", + "select_message": "Sélectionner un message", + "select_message_type": "Sélectionner le type de message", + "select_recipients": "Sélectionner les destinataires", + "selected_count": "{{count}} sélectionné(s)", + "send": "Envoyer", + "send_first_message": "Envoyer le premier message", + "send_response": "Envoyer la réponse", + "sending": "Envoi en cours...", + "sent": "Envoyé", + "showing_count": "Affichage de {{count}} messages", + "subject": "Objet", + "title": "Messages", + "types": { + "alert": "Alerte", + "message": "Message", + "poll": "Sondage" + }, + "unsaved_changes": "Modifications non enregistrées", + "unsaved_changes_message": "Vous avez des modifications non enregistrées. Êtes-vous sûr(e) de vouloir les ignorer ?", + "validation": { + "body_required": "Le corps du message est obligatoire", + "recipients_required": "Au moins un destinataire est obligatoire", + "subject_required": "L'objet est obligatoire" + } + }, + "notes": { + "actions": { + "add": "Ajouter une note", + "delete_confirm": "Êtes-vous sûr(e) de vouloir supprimer cette note ?" + }, + "details": { + "close": "Fermer", + "created": "Créé", + "delete": "Supprimer", + "edit": "Modifier", + "tags": "Étiquettes", + "title": "Détails de la note", + "updated": "Mis à jour" + }, + "empty": "Aucune note trouvée", + "emptyDescription": "Aucune note n'a encore été créée pour votre département.", + "search": "Rechercher des notes...", + "title": "Notes" + }, + "notifications": { + "bulkDeleteError": "Échec de la suppression des notifications", + "bulkDeleteSuccess": "{{count}} notification{{count, plural, one {} other {s}}} supprimée(s)", + "confirmDelete": { + "message": "Êtes-vous sûr(e) de vouloir supprimer {{count}} notification{{count, plural, one {} other {s}}} ? Cette action est irréversible.", + "title": "Confirmer la suppression" + }, + "deleteError": "Échec de la suppression de la notification", + "deleteSuccess": "Notification supprimée", + "deselectAll": "Tout désélectionner", + "empty": "Aucune mise à jour disponible", + "loadError": "Impossible de charger les notifications", + "selectAll": "Tout sélectionner", + "selectedCount": "{{count}} sélectionné(s)", + "title": "Notifications" + }, + "onboarding": { + "message": "Bienvenue sur Resgrid Responder" + }, + "personnel": { + "contactInformation": "Coordonnées", + "currentStatus": "Statut actuel", + "empty": "Aucun personnel trouvé", + "emptyDescription": "Aucun personnel ne correspond à vos critères de recherche ou aucune donnée de personnel n'est disponible.", + "filter": { + "description": "Sélectionner des filtres pour affiner la liste du personnel. Les modifications sont appliquées automatiquement.", + "empty": "Aucune option de filtre disponible", + "emptyDescription": "Les options de filtre apparaîtront ici lorsqu'elles seront disponibles.", + "title": "Filtrer le personnel" + }, + "group": "Groupe", + "id": "ID", + "roles": "Rôles", + "search": "Rechercher du personnel...", + "staffing": "Effectif", + "status": { + "add_note": "Ajouter une note", + "calls_tab": "Appels", + "confirm_status": "Confirmer le statut : {{status}}", + "custom_responding_to": "Répondre à (personnalisé)", + "general_status": "Mise à jour générale du statut", + "loading_stations": "Chargement des postes...", + "no_destination": "Aucune destination", + "no_stations_available": "Aucun poste disponible", + "note": "Note", + "note_placeholder": "Saisir une note (facultatif)...", + "responding_to": "Répond à", + "responding_to_placeholder": "Saisir ce à quoi vous répondez...", + "review_and_confirm": "Vérifier et confirmer", + "select_call_to_respond_to": "Sélectionner l'appel auquel répondre", + "select_destination": "Sélectionner la destination", + "select_responding_to": "Définir le statut : {{status}}", + "selected_call": "Appel sélectionné", + "selected_destination": "Destination sélectionnée", + "set_status": "Définir le statut du personnel", + "stations_tab": "Postes", + "status": "Statut" + } + }, + "protocols": { + "details": { + "close": "Fermer", + "code": "Code", + "created": "Créé", + "title": "Détails du protocole", + "updated": "Mis à jour" + }, + "empty": "Aucun protocole trouvé", + "emptyDescription": "Aucun protocole n'a encore été créé pour votre département.", + "search": "Rechercher des protocoles...", + "title": "Protocoles" + }, + "roles": { + "modal": { + "title": "Attributions de rôles d'unité" + }, + "selectUser": "Sélectionner un utilisateur", + "status": "{{active}} sur {{total}} rôles actifs", + "tap_to_manage": "Appuyer pour gérer les rôles", + "unassigned": "Non attribué" + }, + "settings": { + "about": "À propos", + "account": "Compte", + "active_unit": "Unité active", + "app_info": "Infos de l'application", + "app_name": "Nom de l'application", + "arabic": "Arabe", + "audio_device_selection": { + "bluetooth_device": "Appareil Bluetooth", + "current_selection": "Sélection actuelle", + "microphone": "Microphone", + "no_microphones_available": "Aucun microphone disponible", + "no_speakers_available": "Aucun haut-parleur disponible", + "none_selected": "Aucun sélectionné", + "speaker": "Haut-parleur", + "speaker_device": "Haut-parleur", + "title": "Sélection du périphérique audio", + "unavailable": "Indisponible", + "wired_device": "Appareil filaire" + }, + "background_geolocation": "Géolocalisation en arrière-plan", + "background_geolocation_warning": "Cette fonctionnalité permet à l'application de suivre votre localisation en arrière-plan. Elle facilite la coordination des interventions d'urgence mais peut affecter l'autonomie de la batterie.", + "background_location": "Localisation en arrière-plan", + "contact_us": "Nous contacter", + "english": "Anglais", + "enter_password": "Saisir votre mot de passe", + "enter_server_url": "Saisir l'URL de l'API Resgrid (ex. : https://api.resgrid.com)", + "enter_username": "Saisir votre nom d'utilisateur", + "environment": "Environnement", + "french": "Français", + "general": "Général", + "generale": "Général", + "german": "Allemand", + "github": "Github", + "help_center": "Centre d'aide", + "italian": "Italien", + "keep_alive": "Maintien en activité", + "keep_alive_warning": "Attention : activer le maintien en activité empêchera votre appareil de se mettre en veille et peut augmenter considérablement la consommation de la batterie.", + "keep_screen_on": "Garder l'écran allumé", + "language": "Langue", + "links": "Liens", + "login_info": "Informations de connexion", + "logout": "Déconnexion", + "logout_confirm_cancel": "Annuler", + "logout_confirm_message": "Êtes-vous sûr(e) de vouloir vous déconnecter ? Toutes les données locales, les valeurs en cache et les paramètres enregistrés seront effacés de l'application.", + "logout_confirm_title": "Confirmer la déconnexion", + "logout_confirm_yes": "Oui, se déconnecter", + "more": "Plus", + "no_units_available": "Aucune unité disponible", + "none_selected": "Aucun sélectionné", + "notifications": "Notifications push", + "notifications_badge_overflow": "99+", + "notifications_button": "Notifications", + "notifications_description": "Activer les notifications pour recevoir des alertes et des mises à jour", + "notifications_enable": "Activer les notifications", + "password": "Mot de passe", + "polish": "Polonais", + "preferences": "Préférences", + "privacy": "Politique de confidentialité", + "privacy_policy": "Politique de confidentialité", + "rate": "Évaluer", + "realtime_geolocation": "Géolocalisation en temps réel", + "realtime_geolocation_warning": "Cette fonctionnalité se connecte au hub de localisation en temps réel pour recevoir les mises à jour de localisation des autres personnels et unités. Elle nécessite une connexion réseau active.", + "select_unit": "Sélectionner une unité", + "server": "Serveur", + "server_url": "URL du serveur", + "server_url_note": "Note : Il s'agit de l'URL de l'API Resgrid. Elle est utilisée pour se connecter au serveur Resgrid. N'incluez pas /api/v4 dans l'URL ni de barre oblique finale.", + "set_active_unit": "Définir l'unité active", + "share": "Partager", + "spanish": "Espagnol", + "status_page": "État du système", + "support": "Assistance", + "support_us": "Nous soutenir", + "swedish": "Suédois", + "terms": "Conditions d'utilisation", + "theme": { + "dark": "Sombre", + "light": "Clair", + "system": "Système", + "title": "Thème" + }, + "title": "Paramètres", + "ukrainian": "Ukrainien", + "unit_selection": "Sélection de l'unité", + "username": "Nom d'utilisateur", + "version": "Version", + "website": "Site web" + }, + "shifts": { + "all_shifts": "Tous les quarts", + "already_signed_up": "Déjà inscrit(e)", + "assigned": "Attribué", + "automatic": "Automatique", + "available": "Disponible", + "calendar": "Calendrier", + "current_signups": "Inscriptions actuelles", + "day_details": "Détails du jour de quart", + "details": "Détails du quart", + "end_time": "Heure de fin", + "groups": "Groupes", + "in_shift": "En quart", + "legend": "Légende", + "loading": "Chargement des quarts...", + "loading_details": "Chargement des détails du quart...", + "loading_signup": "Traitement...", + "manual": "Manuel", + "needed": "Nécessaire", + "needs": "Besoins", + "next_day": "Jour suivant", + "no_positions_available": "Aucun poste disponible pour l'inscription", + "no_shifts": "Aucun quart disponible", + "no_shifts_description": "Contactez votre supérieur si vous pensez devoir avoir des attributions de quarts", + "no_shifts_today": "Aucun quart planifié pour aujourd'hui", + "no_shifts_today_description": "Vérifiez plus tard ou contactez votre supérieur pour les attributions de quarts", + "no_signups_yet": "Aucune inscription pour l'instant", + "optional": "Facultatif", + "personnel_count": "Nombre de personnel", + "position_needs": "Besoins du poste", + "required": "Obligatoire", + "roles": "Rôles", + "scheduled_for": "Planifié pour", + "search_placeholder": "Rechercher des quarts...", + "shift_code": "Code de quart", + "shift_day": "Jour de quart", + "shift_name": "Nom du quart", + "shift_type": { + "emergency": "Urgence", + "label": "Type de quart", + "regular": "Régulier", + "training": "Formation", + "unknown": "Inconnu" + }, + "signed_up": "Inscrit(e)", + "signup": "S'inscrire", + "signup_error": "Échec de l'inscription au quart", + "signup_status": "Statut d'inscription", + "signup_success": "Inscription au quart réussie", + "signups": "Inscriptions", + "start_time": "Heure de début", + "today": "Aujourd'hui", + "todays_shifts": "Quarts d'aujourd'hui", + "type_emergency": "Urgence", + "type_regular": "Régulier", + "type_training": "Formation", + "type_unknown": "Inconnu", + "unknown": "Inconnu", + "upcoming_shift_days": "Jours de quarts à venir", + "withdraw": "Se désinscrire", + "withdraw_error": "Échec de la désinscription du quart", + "withdraw_success": "Désinscription du quart réussie", + "you": "Vous", + "you_are_signed_up": "Vous êtes inscrit(e) à ce quart" + }, + "sidebar": { + "audio": "Flux", + "ptt": "Voix" + }, + "tabs": { + "calendar": "Calendrier", + "calls": "Appels", + "contacts": "Contacts", + "home": "Accueil", + "map": "Carte", + "messages": "Messages", + "notes": "Notes", + "personnel": "Personnel", + "protocols": "Protocoles", + "settings": "Paramètres", + "shifts": "Quarts", + "units": "Unités" + }, + "units": { + "coordinates": "Coordonnées", + "empty": "Aucune unité trouvée", + "emptyDescription": "Aucune unité n'est disponible dans votre département", + "features": "Fonctionnalités", + "fourWheelDrive": "4x4", + "group": "Groupe", + "lastUpdate": "Dernière mise à jour", + "location": "Localisation", + "maps_error": "Impossible d'ouvrir les cartes", + "notes": "Notes", + "plateNumber": "Numéro de plaque", + "search": "Rechercher des unités...", + "specialPermit": "Permis spécial", + "tapToOpenMaps": "Appuyer pour ouvrir dans les cartes", + "title": "Unités", + "vehicleInfo": "Informations sur le véhicule", + "vin": "VIN" + }, + "welcome": "Bienvenue sur Resgrid Responder" +} diff --git a/src/translations/it.json b/src/translations/it.json new file mode 100644 index 0000000..5cd6b30 --- /dev/null +++ b/src/translations/it.json @@ -0,0 +1,978 @@ +{ + "app": { + "title": "Resgrid Responder" + }, + "audio_streams": { + "buffering": "Buffering", + "buffering_stream": "Buffering del flusso audio...", + "close": "Chiudi", + "currently_playing": "In riproduzione: {{streamName}}", + "error_loading_stream": "Impossibile caricare il flusso audio", + "loading": "Caricamento", + "loading_stream": "Caricamento del flusso audio...", + "loading_streams": "Caricamento dei flussi audio...", + "name": "Nome", + "no_stream_playing": "Nessun flusso audio in riproduzione", + "none": "Nessuno", + "playing": "In riproduzione", + "refresh_streams": "Aggiorna flussi", + "select_placeholder": "Selezionare un flusso audio", + "select_stream": "Seleziona flusso audio", + "status": "Stato", + "stopped": "Interrotto", + "stream_info": "Informazioni sul flusso", + "stream_selected": "Selezionato: {{streamName}}", + "title": "Flussi audio", + "type": "Tipo" + }, + "bluetooth": { + "audio_device": "BT Auricolare", + "available_devices": "Dispositivi disponibili", + "bluetooth_not_ready": "Bluetooth è {{state}}. Si prega di abilitare il Bluetooth.", + "clear": "Cancella", + "connected": "Connesso", + "current_selection": "Selezione corrente", + "no_device_selected": "Nessun dispositivo selezionato", + "no_devices_found": "Nessun dispositivo audio Bluetooth trovato", + "not_connected": "Non connesso", + "scan": "Cerca", + "scan_again": "Cerca di nuovo", + "scan_error_message": "Impossibile cercare dispositivi Bluetooth", + "scan_error_title": "Errore di ricerca", + "scanning": "Ricerca in corso...", + "select_device": "Seleziona dispositivo Bluetooth", + "selected": "Selezionato", + "selection_error_message": "Impossibile salvare il dispositivo preferito", + "selection_error_title": "Errore di selezione", + "supports_mic_control": "Controllo microfono", + "tap_scan_to_find_devices": "Toccare «Cerca» per trovare dispositivi audio Bluetooth", + "unknown_device": "Dispositivo sconosciuto" + }, + "calendar": { + "allDay": "Tutto il giorno", + "attendanceUpdated": { + "signedUp": "Si è iscritto/a con successo a questo evento.", + "title": "Partecipazione aggiornata", + "unsignedUp": "È stato/a rimosso/a da questo evento." + }, + "attendees": { + "title": "Partecipanti" + }, + "attendeesCount": "{{count}} partecipante", + "attendeesCount_plural": "{{count}} partecipanti", + "confirmSignup": "Conferma", + "confirmUnsignup": { + "message": "È sicuro/a di voler annullare la propria partecipazione a questo evento?", + "title": "Conferma annullamento" + }, + "createdBy": "Creato da", + "daysOfWeek": { + "fri": "Ven", + "mon": "Lun", + "sat": "Sab", + "sun": "Dom", + "thu": "Gio", + "tue": "Mar", + "wed": "Mer" + }, + "description": "Descrizione", + "error": { + "attendanceUpdate": "Impossibile aggiornare la partecipazione. Riprovare.", + "title": "Errore" + }, + "eventsCount": "{{count}} evento", + "eventsCount_plural": "{{count}} eventi", + "loading": { + "date": "Caricamento eventi per la data selezionata...", + "today": "Caricamento eventi di oggi...", + "upcoming": "Caricamento eventi in programma..." + }, + "noEvents": "Nessun evento in programma", + "optional": "Facoltativo", + "required": "Obbligatorio", + "selectDate": "Selezionare una data per visualizzare gli eventi", + "selectedDate": { + "empty": "Nessun evento in programma per questa data.", + "title": "Eventi del {{date}}" + }, + "signedUp": "Iscritto/a", + "signup": { + "button": "Iscriviti", + "notePlaceholder": "Inserire la nota qui...", + "notePrompt": "Aggiungere una nota (facoltativo):", + "title": "Iscrizione all'evento" + }, + "signupAvailable": "Iscrizione disponibile", + "tabs": { + "calendar": "Calendario", + "today": "Oggi", + "upcoming": "In programma" + }, + "tapToSignUp": "Toccare per iscriversi", + "title": "Calendario", + "today": { + "empty": { + "description": "Non ha eventi in programma per oggi.", + "title": "Nessun evento oggi" + } + }, + "todayButton": "Oggi", + "unsignup": "Annulla partecipazione", + "upcoming": { + "empty": { + "description": "Non ha eventi in programma nei prossimi 7 giorni.", + "title": "Nessun evento in programma" + } + } + }, + "callImages": { + "add": "Aggiungi immagine", + "add_new": "Aggiungi nuova immagine", + "capture_error": "Errore durante l'acquisizione della foto. Riprovare.", + "default_name": "Immagine senza titolo", + "error": "Errore nel recupero delle immagini", + "failed_to_load": "Impossibile caricare l'immagine", + "image_name": "Nome immagine", + "image_note": "Nota immagine", + "loading": "Caricamento...", + "no_images": "Nessuna immagine disponibile", + "no_images_description": "Aggiungere immagini alla chiamata per facilitare la documentazione e la comunicazione", + "permission_denied_settings": "Autorizzazione negata. Abilitare l'accesso nelle impostazioni del dispositivo.", + "select_error": "Errore durante la selezione dell'immagine. Riprovare.", + "select_from_gallery": "Seleziona dalla galleria", + "take_photo": "Scatta una foto", + "title": "Immagini della chiamata", + "upload": "Carica", + "upload_error": "Impossibile caricare l'immagine. Riprovare.", + "upload_success": "Immagine caricata con successo" + }, + "callNotes": { + "addNote": "Aggiungi nota", + "addNoteError": "Impossibile aggiungere la nota. Riprovare.", + "addNotePlaceholder": "Aggiungere una nuova nota...", + "noNotes": "Nessuna nota disponibile per questa chiamata", + "noSearchResults": "Nessuna nota corrisponde alla ricerca", + "searchPlaceholder": "Cerca note...", + "title": "Note della chiamata" + }, + "call_detail": { + "address": "Indirizzo", + "call_location": "Posizione della chiamata", + "close_call": "Chiudi chiamata", + "close_call_confirmation": "È sicuro/a di voler chiudere questa chiamata?", + "close_call_error": "Impossibile chiudere la chiamata", + "close_call_note": "Nota di chiusura", + "close_call_note_placeholder": "Inserire una nota sulla chiusura della chiamata", + "close_call_success": "Chiamata chiusa con successo", + "close_call_type": "Tipo di chiusura", + "close_call_type_placeholder": "Selezionare il tipo di chiusura", + "close_call_type_required": "Selezionare un tipo di chiusura", + "close_call_types": { + "cancelled": "Annullato", + "closed": "Chiuso", + "false_alarm": "Falso allarme", + "founded": "Fondato", + "minor": "Minore", + "transferred": "Trasferito", + "unfounded": "Infondato" + }, + "contact_email": "E-mail", + "contact_info": "Informazioni di contatto", + "contact_name": "Nome del contatto", + "contact_phone": "Telefono", + "edit_call": "Modifica chiamata", + "external_id": "ID esterno", + "failed_to_open_maps": "Impossibile aprire l'applicazione di mappe", + "files": { + "add_file": "Aggiungi file", + "button": "File", + "empty": "Nessun file disponibile", + "empty_description": "Aggiungere file alla chiamata per facilitare la documentazione e la comunicazione", + "error": "Errore nel recupero dei file", + "file_name": "Nome file", + "name_required": "Inserire un nome per il file", + "no_files": "Nessun file disponibile", + "no_files_description": "Aggiungere file alla chiamata per facilitare la documentazione e la comunicazione", + "open_error": "Errore nell'apertura del file", + "select_error": "Errore nella selezione del file", + "select_file": "Seleziona file", + "share_error": "Errore nella condivisione del file", + "title": "File della chiamata", + "upload": "Carica", + "upload_error": "Errore nel caricamento del file", + "uploading": "Caricamento..." + }, + "group": "Gruppo", + "images": "Immagini", + "loading": "Caricamento dettagli chiamata...", + "nature": "Natura", + "no_additional_info": "Nessuna informazione aggiuntiva disponibile", + "no_contact_info": "Nessuna informazione di contatto disponibile", + "no_dispatched": "Nessuna unità inviata a questa chiamata", + "no_location": "Nessun dato di posizione disponibile", + "no_location_for_routing": "Nessun dato di posizione disponibile per il percorso", + "no_protocols": "Nessun protocollo allegato a questa chiamata", + "no_timeline": "Nessun evento nella cronologia disponibile", + "not_available": "N/D", + "not_found": "Chiamata non trovata", + "note": "Nota", + "notes": "Note", + "priority": "Priorità", + "reference_id": "ID di riferimento", + "status": "Stato", + "tabs": { + "contact": "Contatto", + "dispatched": "Inviato", + "info": "Info", + "protocols": "Protocolli", + "timeline": "Attività" + }, + "timestamp": "Marca temporale", + "title": "Dettagli chiamata", + "type": "Tipo", + "unit": "Unità", + "update_call_error": "Impossibile aggiornare la chiamata", + "update_call_success": "Chiamata aggiornata con successo" + }, + "calls": { + "address": "Indirizzo", + "address_found": "Indirizzo trovato e posizione aggiornata", + "address_not_found": "Indirizzo non trovato, provare con un indirizzo diverso", + "address_placeholder": "Inserire l'indirizzo della chiamata", + "address_required": "Inserire un indirizzo da cercare", + "call_details": "Dettagli chiamata", + "call_location": "Posizione della chiamata", + "call_number": "Numero chiamata", + "call_priority": "Priorità chiamata", + "confirm_deselect_message": "È sicuro/a di voler deselezionare la chiamata attiva corrente?", + "confirm_deselect_title": "Deseleziona chiamata attiva", + "contact_info": "Informazioni di contatto", + "contact_info_placeholder": "Inserire le informazioni del contatto", + "contact_name": "Nome del contatto", + "contact_name_placeholder": "Inserire il nome del contatto", + "contact_phone": "Telefono del contatto", + "contact_phone_placeholder": "Inserire il telefono del contatto", + "coordinates": "Coordinate GPS", + "coordinates_found": "Coordinate trovate e indirizzo aggiornato", + "coordinates_geocoding_error": "Impossibile ottenere l'indirizzo per le coordinate, ma la posizione è stata impostata sulla mappa", + "coordinates_invalid_format": "Formato coordinate non valido. Utilizzare il formato: latitudine, longitudine", + "coordinates_no_address": "Coordinate impostate sulla mappa, ma nessun indirizzo trovato", + "coordinates_out_of_range": "Coordinate fuori intervallo. La latitudine deve essere compresa tra -90 e 90, la longitudine tra -180 e 180", + "coordinates_placeholder": "Inserire le coordinate GPS (es.: 37.7749, -122.4194)", + "coordinates_required": "Inserire le coordinate da cercare", + "create": "Crea", + "create_error": "Errore nella creazione della chiamata", + "create_new_call": "Crea nuova chiamata", + "create_success": "Chiamata creata con successo", + "description": "Descrizione", + "description_placeholder": "Inserire la descrizione della chiamata", + "deselect": "Deseleziona", + "directions": "Indicazioni", + "dispatch_to": "Invia a", + "dispatch_to_everyone": "Invia a tutto il personale disponibile", + "edit_call": "Modifica chiamata", + "edit_call_description": "Aggiorna le informazioni della chiamata", + "everyone": "Tutti", + "files": { + "no_files": "Nessun file disponibile", + "no_files_description": "Nessun file è ancora stato aggiunto a questa chiamata", + "title": "File della chiamata" + }, + "geocoding_error": "Impossibile cercare l'indirizzo, riprovare", + "groups": "Gruppi", + "loading": "Caricamento chiamate...", + "loading_calls": "Caricamento chiamate...", + "name": "Nome", + "name_placeholder": "Inserire il nome della chiamata", + "nature": "Natura", + "nature_placeholder": "Inserire la natura della chiamata", + "new_call": "Nuova chiamata", + "new_call_description": "Creare una nuova chiamata per avviare un nuovo incidente", + "no_call_selected": "Nessuna chiamata attiva", + "no_call_selected_info": "Questa unità non sta attualmente rispondendo ad alcuna chiamata", + "no_calls": "Nessuna chiamata attiva", + "no_calls_available": "Nessuna chiamata disponibile", + "no_calls_description": "Nessuna chiamata attiva trovata. Selezionare una chiamata attiva per visualizzare i dettagli.", + "no_location_message": "Questa chiamata non dispone di dati di posizione per la navigazione.", + "no_location_title": "Nessuna posizione disponibile", + "no_open_calls": "Nessuna chiamata aperta disponibile", + "note": "Nota", + "note_placeholder": "Inserire la nota della chiamata", + "personnel": "Personale", + "plus_code": "Plus Code", + "plus_code_found": "Plus Code trovato e posizione aggiornata", + "plus_code_geocoding_error": "Impossibile cercare il Plus Code, riprovare", + "plus_code_not_found": "Plus Code non trovato, provare con un Plus Code diverso", + "plus_code_placeholder": "Inserire il Plus Code (es.: 849VCWC8+R9)", + "plus_code_required": "Inserire un Plus Code da cercare", + "priority": "Priorità", + "priority_placeholder": "Selezionare la priorità della chiamata", + "roles": "Ruoli", + "search": "Cerca chiamate...", + "select_active_call": "Seleziona chiamata attiva", + "select_address": "Seleziona indirizzo", + "select_address_placeholder": "Selezionare l'indirizzo della chiamata", + "select_description": "Seleziona descrizione", + "select_dispatch_recipients": "Seleziona i destinatari del dispatch", + "select_location": "Seleziona posizione sulla mappa", + "select_name": "Seleziona nome", + "select_nature": "Seleziona natura", + "select_nature_placeholder": "Selezionare la natura della chiamata", + "select_priority": "Seleziona priorità", + "select_priority_placeholder": "Selezionare la priorità della chiamata", + "select_recipients": "Seleziona destinatari", + "select_type": "Seleziona tipo", + "selected": "selezionato", + "title": "Chiamate", + "type": "Tipo", + "units": "Unità", + "users": "Utenti", + "viewNotes": "Note", + "view_details": "Visualizza dettagli", + "what3words": "what3words", + "what3words_found": "Indirizzo what3words trovato e posizione aggiornata", + "what3words_geocoding_error": "Impossibile cercare l'indirizzo what3words, riprovare", + "what3words_invalid_format": "Formato what3words non valido. Utilizzare il formato: parola.parola.parola", + "what3words_not_found": "Indirizzo what3words non trovato, provare con un indirizzo diverso", + "what3words_placeholder": "Inserire l'indirizzo what3words (es.: filled.count.soap)", + "what3words_required": "Inserire un indirizzo what3words da cercare" + }, + "common": { + "active": "Attivo", + "add": "Aggiungi", + "all": "Tutti", + "back": "Indietro", + "cancel": "Annulla", + "close": "Chiudi", + "confirm": "Conferma", + "delete": "Elimina", + "deleting": "Eliminazione...", + "discard": "Ignora", + "done": "Fatto", + "edit": "Modifica", + "error": "Errore", + "errorOccurred": "Si è verificato un errore", + "get_my_location": "Ottieni la mia posizione", + "loading": "Caricamento", + "loading_address": "Caricamento indirizzo...", + "navigation": "Navigazione", + "next": "Avanti", + "noActiveUnit": "Nessuna unità attiva", + "noActiveUnitDescription": "Selezionare un'unità attiva per visualizzare gli stati disponibili", + "no_address_found": "Nessun indirizzo trovato", + "no_data_available": "Nessun dato disponibile", + "no_location": "Nessuna posizione disponibile", + "no_results_found": "Nessun risultato trovato", + "no_unit_selected": "Nessuna unità selezionata", + "of": "di", + "ok": "OK", + "optional": "Facoltativo", + "permission_denied": "Autorizzazione negata", + "previous": "Precedente", + "refresh": "Aggiorna", + "retry": "Riprova", + "route": "Percorso", + "save": "Salva", + "search": "Cerca", + "set_location": "Imposta posizione", + "step": "Passo", + "submit": "Invia", + "submitting": "Invio in corso...", + "success": "Successo", + "unknown_department": "Dipartimento sconosciuto", + "unknown_user": "Utente sconosciuto", + "uploading": "Caricamento..." + }, + "contacts": { + "add": "Aggiungi contatto", + "addedBy": "Aggiunto da", + "addedOn": "Aggiunto il", + "additionalInformation": "Informazioni aggiuntive", + "address": "Indirizzo", + "bluesky": "Bluesky", + "cancel": "Annulla", + "cellPhone": "Cellulare", + "city": "Città", + "cityState": "Città e regione", + "cityStateZip": "Città, regione, CAP", + "company": "Azienda", + "contactInformation": "Informazioni di contatto", + "contactNotes": "Note del contatto", + "contactNotesEmpty": "Nessuna nota trovata per questo contatto", + "contactNotesEmptyDescription": "Le note aggiunte a questo contatto appariranno qui", + "contactNotesExpired": "Questa nota è scaduta", + "contactNotesLoading": "Caricamento note del contatto...", + "contactType": "Tipo di contatto", + "countryId": "ID paese", + "delete": "Elimina", + "deleteConfirm": "È sicuro/a di voler eliminare questo contatto?", + "deleteSuccess": "Contatto eliminato con successo", + "description": "Aggiungere e gestire i propri contatti", + "descriptionLabel": "Descrizione", + "details": "Dettagli contatto", + "detailsTab": "Dettagli", + "edit": "Modifica contatto", + "editedBy": "Modificato da", + "editedOn": "Modificato il", + "email": "E-mail", + "empty": "Nessun contatto trovato", + "emptyDescription": "Aggiungere contatti per gestire le proprie relazioni personali e professionali", + "entranceCoordinates": "Coordinate dell'ingresso", + "errorTitle": "Errore", + "exitCoordinates": "Coordinate dell'uscita", + "expires": "Scade", + "facebook": "Facebook", + "faxPhone": "Fax", + "formError": "Correggere gli errori nel modulo", + "homePhone": "Telefono fisso", + "identification": "Identificazione", + "important": "Segna come importante", + "instagram": "Instagram", + "internal": "Interno", + "invalidEmail": "Indirizzo e-mail non valido", + "linkedin": "LinkedIn", + "locationCoordinates": "Coordinate della posizione", + "locationInformation": "Informazioni sulla posizione", + "mastodon": "Mastodon", + "mobile": "Mobile", + "name": "Nome", + "noteAlert": "Avviso", + "noteType": "Tipo", + "notes": "Note", + "notesTab": "Note", + "officePhone": "Telefono ufficio", + "openAppError": "Impossibile aprire l'app {{action}}", + "openLinkFailed": "Impossibile aprire il link {{action}}:", + "otherInfo": "Altre informazioni", + "person": "Persona", + "phone": "Telefono", + "public": "Pubblico", + "required": "Obbligatorio", + "save": "Salva contatto", + "saveSuccess": "Contatto salvato con successo", + "search": "Cerca contatti...", + "shouldAlert": "Deve avvisare", + "socialMediaWeb": "Social media e web", + "state": "Regione", + "stateId": "ID regione", + "systemInformation": "Informazioni di sistema", + "tabs": { + "details": "Dettagli", + "notes": "Note" + }, + "threads": "Threads", + "title": "Contatti", + "twitter": "Twitter", + "visibility": "Visibilità", + "website": "Sito web", + "zip": "CAP" + }, + "form": { + "invalid_url": "Inserire un URL valido che inizi con http:// o https://", + "required": "Questo campo è obbligatorio" + }, + "home": { + "error": { + "no_user_id": "ID utente non disponibile" + }, + "sidebar": { + "audio": "Audio", + "ptt": "PTT" + }, + "staffing": { + "add_note": "Aggiungi nota", + "confirm_staffing": "Conferma personale: {{staffing}}", + "no_options_available": "Nessuna opzione di personale disponibile", + "no_staffing_options": "Nessuna opzione di personale disponibile", + "note": "Nota", + "note_placeholder": "Inserire una nota (facoltativo)...", + "review_and_confirm": "Rivedi e conferma", + "select_staffing_level": "Seleziona livello di personale", + "select_staffing_level_description": "Scegliere il proprio stato di personale attuale", + "selected_staffing": "Personale selezionato", + "set_staffing": "Imposta personale", + "staffing_level": "Livello di personale", + "update_failed": "Impossibile aggiornare il personale", + "updated_successfully": "Personale aggiornato con successo" + }, + "stats": { + "open_calls": "Chiamate aperte", + "personnel_in_service": "Personale in servizio", + "units_in_service": "Unità in servizio" + }, + "status": { + "no_options_available": "Nessuna opzione di stato disponibile", + "update_failed": "Impossibile aggiornare lo stato", + "updated_successfully": "Stato aggiornato con successo" + }, + "tabs": { + "dashboard": "Pannello", + "map": "Mappa", + "staffing": "Personale", + "status": "Stato" + }, + "user": { + "my_staffing": "Il mio personale", + "my_status": "Il mio stato", + "staffing_unknown": "Personale sconosciuto", + "status_unknown": "Stato sconosciuto", + "updated": "Aggiornato" + } + }, + "livekit": { + "audio_devices": "Dispositivi audio", + "audio_settings": "Impostazioni audio", + "connected_to_room": "Connesso al canale", + "connecting": "Connessione in corso...", + "disconnect": "Disconnetti", + "double_click_action": "Azione doppio clic", + "headset_button_ptt": "Pulsante auricolare PTT", + "headset_monitoring_active": "Monitoraggio auricolare attivo", + "headset_monitoring_inactive": "Monitoraggio auricolare inattivo", + "headset_ptt_description": "Usare il pulsante AirPods o degli auricolari Bluetooth per attivare/disattivare il microfono", + "headset_ptt_disabled": "PTT auricolare disabilitato", + "headset_ptt_enabled": "PTT auricolare abilitato", + "join": "Partecipa", + "long_press_action": "Azione pressione prolungata", + "microphone": "Microfono", + "mute": "Silenzia", + "no_action": "Nessuna azione", + "no_rooms_available": "Nessun canale vocale disponibile", + "play_pause_action": "Azione pulsante riproduzione/pausa", + "ptt_mode": "Modalità PTT", + "ptt_mode_disabled": "Disabilitato", + "ptt_mode_push": "Push-to-Talk (tenere premuto per parlare)", + "ptt_mode_toggle": "Commutazione (toccare per attivare/disattivare il silenziamento)", + "sound_feedback": "Feedback sonoro", + "speaker": "Altoparlante", + "speaking": "In comunicazione", + "tap_to_toggle_mute": "Toccare il pulsante dell'auricolare per attivare/disattivare il silenziamento", + "title": "Canali vocali", + "toggle_mute": "Attiva/disattiva silenziamento", + "unmute": "Riattiva audio" + }, + "loading": { + "loading": "Caricamento...", + "loadingData": "Caricamento dati...", + "pleaseWait": "Attendere prego", + "processingRequest": "Elaborazione della richiesta in corso..." + }, + "login": { + "change_server_url": "Modifica URL server", + "errorModal": { + "confirmButton": "OK", + "message": "Verificare il nome utente e la password e riprovare.", + "title": "Accesso non riuscito" + }, + "login": "Accesso", + "login_button": "Accedi", + "login_button_description": "Accedere al proprio account per continuare", + "login_button_error": "Errore durante l'accesso", + "login_button_loading": "Accesso in corso...", + "login_button_success": "Accesso effettuato con successo", + "password": "Password", + "password_incorrect": "La password non era corretta", + "password_placeholder": "Inserire la password", + "select_language": "Seleziona lingua", + "sso": { + "back": "Indietro", + "change_department": "Cambia nome utente", + "continue_button": "Continua", + "department_code_label": "Codice dipartimento", + "department_code_placeholder": "Inserire il codice del dipartimento", + "department_code_required": "Il codice del dipartimento è obbligatorio", + "department_description": "Inserire il codice del dipartimento per accedere", + "department_id_invalid": "L'ID del dipartimento deve essere un numero", + "department_id_label": "ID dipartimento (facoltativo)", + "department_id_placeholder": "Inserire l'ID del dipartimento se noto", + "department_not_found": "Dipartimento non trovato. Verificare il codice e riprovare.", + "login_with_sso_button": "Accedi con SSO", + "looking_up": "Ricerca dell'account...", + "lookup_network_error": "Impossibile raggiungere il server. Verificare la connessione e riprovare.", + "or_sign_in_with_password": "— oppure accedere con password —", + "page_title": "Accesso con SSO", + "sign_in_with_sso": "Accedi con SSO", + "sso_not_enabled": "SSO non è abilitato per questo account. Utilizzare il nome utente e la password.", + "user_description": "Inserire il nome utente o l'e-mail Resgrid per accedere con SSO", + "user_not_found": "Account non trovato. Verificare il nome utente e riprovare.", + "username_label": "Nome utente o e-mail", + "username_placeholder": "Inserire il nome utente o l'e-mail", + "username_required": "Il nome utente è obbligatorio" + }, + "title": "Accesso", + "username": "Nome utente", + "username_placeholder": "Inserire il nome utente" + }, + "map": { + "call_set_as_current": "Chiamata impostata come chiamata corrente", + "failed_to_open_maps": "Impossibile aprire l'applicazione di mappe", + "failed_to_set_current_call": "Impossibile impostare la chiamata come chiamata corrente", + "no_location_for_routing": "Nessun dato di posizione disponibile per il percorso", + "pin_color": "Colore del segnaposto", + "recenter_map": "Ricentra mappa", + "set_as_current_call": "Imposta come chiamata corrente", + "view_call_details": "Visualizza dettagli chiamata" + }, + "maps": { + "contact_administrator": "Contattare l'amministratore per configurare i servizi di mappatura.", + "failed_to_load": "Impossibile caricare la mappa. Verificare la connessione Internet.", + "mapbox_not_configured": "Mapbox non è configurato. Contattare l'amministratore." + }, + "messages": { + "all_messages": "Tutti i messaggi", + "compose": "Componi", + "compose_new_message": "Nuovo messaggio", + "date_unknown": "Data sconosciuta", + "delete_confirmation_message": "È sicuro/a di voler eliminare {{count}} messaggio/i?", + "delete_confirmation_title": "Elimina messaggi", + "delete_single_confirmation_message": "È sicuro/a di voler eliminare questo messaggio?", + "enter_expiration_date": "Inserire la data di scadenza", + "enter_message_body": "Inserire il messaggio", + "enter_note": "Inserire una nota facoltativa", + "enter_response": "Inserire la risposta", + "enter_subject": "Inserire l'oggetto del messaggio", + "error": "Errore", + "expiration_date_format": "Formato: AAAA-MM-GG HH:MM", + "expiration_date_optional": "Data di scadenza (facoltativo)", + "expired": "Scaduto", + "expires_on": "Scade il", + "from": "Da", + "inbox": "Posta in arrivo", + "message_body": "Corpo del messaggio", + "message_content": "Contenuto del messaggio", + "message_type": "Tipo di messaggio", + "no_content": "Nessun contenuto", + "no_messages": "Nessun messaggio trovato", + "no_messages_description": "Inviare il primo messaggio per iniziare", + "no_subject": "Senza oggetto", + "note_optional": "Nota (facoltativo)", + "people": "Persone", + "recipients": "Destinatari", + "recipients_count": "{{count}} destinatari", + "recipients_selected": "{{count}} destinatari selezionati", + "respond_failed": "Impossibile rispondere al messaggio", + "respond_to_message": "Rispondi al messaggio", + "responded": "Risposto", + "responded_on": "Risposto il", + "responding": "Risposta in corso...", + "response": "Risposta", + "response_required": "La risposta è obbligatoria", + "search_placeholder": "Cerca messaggi...", + "select_all": "Seleziona tutto", + "select_message": "Seleziona messaggio", + "select_message_type": "Seleziona tipo di messaggio", + "select_recipients": "Seleziona destinatari", + "selected_count": "{{count}} selezionato/i", + "send": "Invia", + "send_first_message": "Invia il primo messaggio", + "send_response": "Invia risposta", + "sending": "Invio in corso...", + "sent": "Inviato", + "showing_count": "Visualizzazione di {{count}} messaggi", + "subject": "Oggetto", + "title": "Messaggi", + "types": { + "alert": "Avviso", + "message": "Messaggio", + "poll": "Sondaggio" + }, + "unsaved_changes": "Modifiche non salvate", + "unsaved_changes_message": "Sono presenti modifiche non salvate. Procedere comunque?", + "validation": { + "body_required": "Il corpo del messaggio è obbligatorio", + "recipients_required": "È necessario almeno un destinatario", + "subject_required": "L'oggetto è obbligatorio" + } + }, + "notes": { + "actions": { + "add": "Aggiungi nota", + "delete_confirm": "È sicuro/a di voler eliminare questa nota?" + }, + "details": { + "close": "Chiudi", + "created": "Creato", + "delete": "Elimina", + "edit": "Modifica", + "tags": "Etichette", + "title": "Dettagli nota", + "updated": "Aggiornato" + }, + "empty": "Nessuna nota trovata", + "emptyDescription": "Non sono ancora state create note per il proprio dipartimento.", + "search": "Cerca note...", + "title": "Note" + }, + "notifications": { + "bulkDeleteError": "Impossibile rimuovere le notifiche", + "bulkDeleteSuccess": "{{count}} notifica/e rimossa/e", + "confirmDelete": { + "message": "È sicuro/a di voler eliminare {{count}} notifica/e? Questa azione non può essere annullata.", + "title": "Conferma eliminazione" + }, + "deleteError": "Impossibile rimuovere la notifica", + "deleteSuccess": "Notifica rimossa", + "deselectAll": "Deseleziona tutto", + "empty": "Nessun aggiornamento disponibile", + "loadError": "Impossibile caricare le notifiche", + "selectAll": "Seleziona tutto", + "selectedCount": "{{count}} selezionato/i", + "title": "Notifiche" + }, + "onboarding": { + "message": "Benvenuto/a su Resgrid Responder" + }, + "personnel": { + "contactInformation": "Informazioni di contatto", + "currentStatus": "Stato attuale", + "empty": "Nessun personale trovato", + "emptyDescription": "Nessun personale corrisponde ai criteri di ricerca o nessun dato di personale è disponibile.", + "filter": { + "description": "Selezionare i filtri per affinare l'elenco del personale. Le modifiche vengono applicate automaticamente.", + "empty": "Nessuna opzione di filtro disponibile", + "emptyDescription": "Le opzioni di filtro appariranno qui quando disponibili.", + "title": "Filtra personale" + }, + "group": "Gruppo", + "id": "ID", + "roles": "Ruoli", + "search": "Cerca personale...", + "staffing": "Personale", + "status": { + "add_note": "Aggiungi nota", + "calls_tab": "Chiamate", + "confirm_status": "Conferma stato: {{status}}", + "custom_responding_to": "Risponde a (personalizzato)", + "general_status": "Aggiornamento stato generale", + "loading_stations": "Caricamento stazioni...", + "no_destination": "Nessuna destinazione", + "no_stations_available": "Nessuna stazione disponibile", + "note": "Nota", + "note_placeholder": "Inserire una nota (facoltativo)...", + "responding_to": "Risponde a", + "responding_to_placeholder": "Inserire a cosa si sta rispondendo...", + "review_and_confirm": "Rivedi e conferma", + "select_call_to_respond_to": "Seleziona la chiamata a cui rispondere", + "select_destination": "Seleziona destinazione", + "select_responding_to": "Imposta stato: {{status}}", + "selected_call": "Chiamata selezionata", + "selected_destination": "Destinazione selezionata", + "set_status": "Imposta stato personale", + "stations_tab": "Stazioni", + "status": "Stato" + } + }, + "protocols": { + "details": { + "close": "Chiudi", + "code": "Codice", + "created": "Creato", + "title": "Dettagli protocollo", + "updated": "Aggiornato" + }, + "empty": "Nessun protocollo trovato", + "emptyDescription": "Non sono ancora stati creati protocolli per il proprio dipartimento.", + "search": "Cerca protocolli...", + "title": "Protocolli" + }, + "roles": { + "modal": { + "title": "Assegnazioni ruoli unità" + }, + "selectUser": "Seleziona utente", + "status": "{{active}} di {{total}} ruoli attivi", + "tap_to_manage": "Toccare per gestire i ruoli", + "unassigned": "Non assegnato" + }, + "settings": { + "about": "Informazioni", + "account": "Account", + "active_unit": "Unità attiva", + "app_info": "Info app", + "app_name": "Nome app", + "arabic": "Arabo", + "audio_device_selection": { + "bluetooth_device": "Dispositivo Bluetooth", + "current_selection": "Selezione corrente", + "microphone": "Microfono", + "no_microphones_available": "Nessun microfono disponibile", + "no_speakers_available": "Nessun altoparlante disponibile", + "none_selected": "Nessuno selezionato", + "speaker": "Altoparlante", + "speaker_device": "Altoparlante", + "title": "Selezione dispositivo audio", + "unavailable": "Non disponibile", + "wired_device": "Dispositivo cablato" + }, + "background_geolocation": "Geolocalizzazione in background", + "background_geolocation_warning": "Questa funzionalità consente all'app di tracciare la posizione in background. Facilita il coordinamento delle risposte di emergenza ma può influire sull'autonomia della batteria.", + "background_location": "Posizione in background", + "contact_us": "Contattaci", + "english": "Inglese", + "enter_password": "Inserire la password", + "enter_server_url": "Inserire l'URL API Resgrid (es.: https://api.resgrid.com)", + "enter_username": "Inserire il nome utente", + "environment": "Ambiente", + "french": "Francese", + "general": "Generale", + "generale": "Generale", + "german": "Tedesco", + "github": "Github", + "help_center": "Centro assistenza", + "italian": "Italiano", + "keep_alive": "Mantieni attivo", + "keep_alive_warning": "Attenzione: abilitare il mantenimento attivo impedirà al dispositivo di andare in standby e potrebbe aumentare significativamente il consumo della batteria.", + "keep_screen_on": "Mantieni schermo acceso", + "language": "Lingua", + "links": "Link", + "login_info": "Informazioni di accesso", + "logout": "Disconnetti", + "logout_confirm_cancel": "Annulla", + "logout_confirm_message": "È sicuro/a di voler disconnettersi? Tutti i dati locali, i valori memorizzati nella cache e le impostazioni salvate verranno cancellati dall'app.", + "logout_confirm_title": "Conferma disconnessione", + "logout_confirm_yes": "Sì, disconnetti", + "more": "Altro", + "no_units_available": "Nessuna unità disponibile", + "none_selected": "Nessuno selezionato", + "notifications": "Notifiche push", + "notifications_badge_overflow": "99+", + "notifications_button": "Notifiche", + "notifications_description": "Abilitare le notifiche per ricevere avvisi e aggiornamenti", + "notifications_enable": "Abilita notifiche", + "password": "Password", + "polish": "Polacco", + "preferences": "Preferenze", + "privacy": "Informativa sulla privacy", + "privacy_policy": "Informativa sulla privacy", + "rate": "Valuta", + "realtime_geolocation": "Geolocalizzazione in tempo reale", + "realtime_geolocation_warning": "Questa funzionalità si connette all'hub di posizione in tempo reale per ricevere aggiornamenti sulla posizione da altro personale e unità. Richiede una connessione di rete attiva.", + "select_unit": "Seleziona unità", + "server": "Server", + "server_url": "URL server", + "server_url_note": "Nota: questo è l'URL dell'API Resgrid. Viene utilizzato per connettersi al server Resgrid. Non includere /api/v4 nell'URL né una barra finale.", + "set_active_unit": "Imposta unità attiva", + "share": "Condividi", + "spanish": "Spagnolo", + "status_page": "Stato del sistema", + "support": "Supporto", + "support_us": "Supportaci", + "swedish": "Svedese", + "terms": "Termini di servizio", + "theme": { + "dark": "Scuro", + "light": "Chiaro", + "system": "Sistema", + "title": "Tema" + }, + "title": "Impostazioni", + "ukrainian": "Ucraino", + "unit_selection": "Selezione unità", + "username": "Nome utente", + "version": "Versione", + "website": "Sito web" + }, + "shifts": { + "all_shifts": "Tutti i turni", + "already_signed_up": "Già iscritto/a", + "assigned": "Assegnato", + "automatic": "Automatico", + "available": "Disponibile", + "calendar": "Calendario", + "current_signups": "Iscrizioni attuali", + "day_details": "Dettagli giorno turno", + "details": "Dettagli turno", + "end_time": "Ora di fine", + "groups": "Gruppi", + "in_shift": "In turno", + "legend": "Legenda", + "loading": "Caricamento turni...", + "loading_details": "Caricamento dettagli turno...", + "loading_signup": "Elaborazione...", + "manual": "Manuale", + "needed": "Necessario", + "needs": "Necessità", + "next_day": "Giorno successivo", + "no_positions_available": "Nessuna posizione disponibile per l'iscrizione", + "no_shifts": "Nessun turno disponibile", + "no_shifts_description": "Contattare il proprio supervisore se si ritiene di dover avere assegnazioni di turno", + "no_shifts_today": "Nessun turno in programma per oggi", + "no_shifts_today_description": "Controllare più tardi o contattare il proprio supervisore per le assegnazioni di turno", + "no_signups_yet": "Nessuna iscrizione ancora", + "optional": "Facoltativo", + "personnel_count": "Numero di personale", + "position_needs": "Necessità della posizione", + "required": "Obbligatorio", + "roles": "Ruoli", + "scheduled_for": "In programma per", + "search_placeholder": "Cerca turni...", + "shift_code": "Codice turno", + "shift_day": "Giorno turno", + "shift_name": "Nome turno", + "shift_type": { + "emergency": "Emergenza", + "label": "Tipo di turno", + "regular": "Regolare", + "training": "Formazione", + "unknown": "Sconosciuto" + }, + "signed_up": "Iscritto/a", + "signup": "Iscriviti", + "signup_error": "Impossibile iscriversi al turno", + "signup_status": "Stato iscrizione", + "signup_success": "Iscrizione al turno completata con successo", + "signups": "Iscrizioni", + "start_time": "Ora di inizio", + "today": "Oggi", + "todays_shifts": "Turni di oggi", + "type_emergency": "Emergenza", + "type_regular": "Regolare", + "type_training": "Formazione", + "type_unknown": "Sconosciuto", + "unknown": "Sconosciuto", + "upcoming_shift_days": "Prossimi giorni di turno", + "withdraw": "Ritira iscrizione", + "withdraw_error": "Impossibile ritirare l'iscrizione dal turno", + "withdraw_success": "Iscrizione al turno ritirata con successo", + "you": "Lei", + "you_are_signed_up": "Lei è iscritto/a a questo turno" + }, + "sidebar": { + "audio": "Flusso", + "ptt": "Voce" + }, + "tabs": { + "calendar": "Calendario", + "calls": "Chiamate", + "contacts": "Contatti", + "home": "Home", + "map": "Mappa", + "messages": "Messaggi", + "notes": "Note", + "personnel": "Personale", + "protocols": "Protocolli", + "settings": "Impostazioni", + "shifts": "Turni", + "units": "Unità" + }, + "units": { + "coordinates": "Coordinate", + "empty": "Nessuna unità trovata", + "emptyDescription": "Nessuna unità è disponibile nel proprio dipartimento", + "features": "Caratteristiche", + "fourWheelDrive": "4x4", + "group": "Gruppo", + "lastUpdate": "Ultimo aggiornamento", + "location": "Posizione", + "maps_error": "Impossibile aprire le mappe", + "notes": "Note", + "plateNumber": "Numero di targa", + "search": "Cerca unità...", + "specialPermit": "Permesso speciale", + "tapToOpenMaps": "Toccare per aprire nelle mappe", + "title": "Unità", + "vehicleInfo": "Informazioni sul veicolo", + "vin": "VIN" + }, + "welcome": "Benvenuto/a su Resgrid Responder" +} diff --git a/src/translations/pl.json b/src/translations/pl.json new file mode 100644 index 0000000..4d6c110 --- /dev/null +++ b/src/translations/pl.json @@ -0,0 +1,978 @@ +{ + "app": { + "title": "Resgrid Responder" + }, + "audio_streams": { + "buffering": "Buforowanie", + "buffering_stream": "Buforowanie strumienia audio...", + "close": "Zamknij", + "currently_playing": "Teraz odtwarzane: {{streamName}}", + "error_loading_stream": "Nie udało się załadować strumienia audio", + "loading": "Ładowanie", + "loading_stream": "Ładowanie strumienia audio...", + "loading_streams": "Ładowanie strumieni audio...", + "name": "Nazwa", + "no_stream_playing": "Żaden strumień audio nie jest aktualnie odtwarzany", + "none": "Brak", + "playing": "Odtwarzanie", + "refresh_streams": "Odśwież strumienie", + "select_placeholder": "Wybierz strumień audio", + "select_stream": "Wybierz strumień audio", + "status": "Status", + "stopped": "Zatrzymano", + "stream_info": "Informacje o strumieniu", + "stream_selected": "Wybrano: {{streamName}}", + "title": "Strumienie audio", + "type": "Typ" + }, + "bluetooth": { + "audio_device": "BT Słuchawka", + "available_devices": "Dostępne urządzenia", + "bluetooth_not_ready": "Bluetooth jest {{state}}. Proszę włączyć Bluetooth.", + "clear": "Wyczyść", + "connected": "Połączono", + "current_selection": "Bieżący wybór", + "no_device_selected": "Nie wybrano urządzenia", + "no_devices_found": "Nie znaleziono urządzeń audio Bluetooth", + "not_connected": "Nie połączono", + "scan": "Skanuj", + "scan_again": "Skanuj ponownie", + "scan_error_message": "Nie można skanować urządzeń Bluetooth", + "scan_error_title": "Błąd skanowania", + "scanning": "Skanowanie...", + "select_device": "Wybierz urządzenie Bluetooth", + "selected": "Wybrano", + "selection_error_message": "Nie można zapisać preferowanego urządzenia", + "selection_error_title": "Błąd wyboru", + "supports_mic_control": "Sterowanie mikrofonem", + "tap_scan_to_find_devices": "Naciśnij „Skanuj", aby znaleźć urządzenia audio Bluetooth", + "unknown_device": "Nieznane urządzenie" + }, + "calendar": { + "allDay": "Cały dzień", + "attendanceUpdated": { + "signedUp": "Zostali Państwo pomyślnie zapisani na to wydarzenie.", + "title": "Zaktualizowano obecność", + "unsignedUp": "Zostali Państwo usunięci z tego wydarzenia." + }, + "attendees": { + "title": "Uczestnicy" + }, + "attendeesCount": "{{count}} uczestnik", + "attendeesCount_plural": "{{count}} uczestników", + "confirmSignup": "Potwierdź", + "confirmUnsignup": { + "message": "Czy na pewno chcą Państwo anulować swój udział w tym wydarzeniu?", + "title": "Potwierdź anulowanie" + }, + "createdBy": "Utworzone przez", + "daysOfWeek": { + "fri": "Pt", + "mon": "Pon", + "sat": "Sob", + "sun": "Nd", + "thu": "Czw", + "tue": "Wt", + "wed": "Śr" + }, + "description": "Opis", + "error": { + "attendanceUpdate": "Nie udało się zaktualizować obecności. Proszę spróbować ponownie.", + "title": "Błąd" + }, + "eventsCount": "{{count}} wydarzenie", + "eventsCount_plural": "{{count}} wydarzeń", + "loading": { + "date": "Ładowanie wydarzeń dla wybranej daty...", + "today": "Ładowanie dzisiejszych wydarzeń...", + "upcoming": "Ładowanie nadchodzących wydarzeń..." + }, + "noEvents": "Brak zaplanowanych wydarzeń", + "optional": "Opcjonalne", + "required": "Wymagane", + "selectDate": "Wybierz datę, aby wyświetlić wydarzenia", + "selectedDate": { + "empty": "Brak wydarzeń zaplanowanych na tę datę.", + "title": "Wydarzenia na {{date}}" + }, + "signedUp": "Zapisano", + "signup": { + "button": "Zapisz się", + "notePlaceholder": "Wprowadź notatkę tutaj...", + "notePrompt": "Dodaj notatkę (opcjonalnie):", + "title": "Rejestracja na wydarzenie" + }, + "signupAvailable": "Rejestracja dostępna", + "tabs": { + "calendar": "Kalendarz", + "today": "Dziś", + "upcoming": "Nadchodzące" + }, + "tapToSignUp": "Naciśnij, aby się zapisać", + "title": "Kalendarz", + "today": { + "empty": { + "description": "Nie mają Państwo żadnych zaplanowanych wydarzeń na dziś.", + "title": "Brak wydarzeń dziś" + } + }, + "todayButton": "Dziś", + "unsignup": "Anuluj uczestnictwo", + "upcoming": { + "empty": { + "description": "Nie mają Państwo żadnych zaplanowanych wydarzeń w ciągu najbliższych 7 dni.", + "title": "Brak nadchodzących wydarzeń" + } + } + }, + "callImages": { + "add": "Dodaj zdjęcie", + "add_new": "Dodaj nowe zdjęcie", + "capture_error": "Błąd podczas robienia zdjęcia. Proszę spróbować ponownie.", + "default_name": "Zdjęcie bez tytułu", + "error": "Błąd podczas pobierania zdjęć", + "failed_to_load": "Nie udało się załadować zdjęcia", + "image_name": "Nazwa zdjęcia", + "image_note": "Notatka do zdjęcia", + "loading": "Ładowanie...", + "no_images": "Brak dostępnych zdjęć", + "no_images_description": "Dodaj zdjęcia do zgłoszenia, aby ułatwić dokumentację i komunikację", + "permission_denied_settings": "Odmowa dostępu. Proszę włączyć dostęp w ustawieniach urządzenia.", + "select_error": "Błąd podczas wybierania zdjęcia. Proszę spróbować ponownie.", + "select_from_gallery": "Wybierz z galerii", + "take_photo": "Zrób zdjęcie", + "title": "Zdjęcia do zgłoszenia", + "upload": "Prześlij", + "upload_error": "Nie udało się przesłać zdjęcia. Proszę spróbować ponownie.", + "upload_success": "Zdjęcie przesłane pomyślnie" + }, + "callNotes": { + "addNote": "Dodaj notatkę", + "addNoteError": "Nie udało się dodać notatki. Proszę spróbować ponownie.", + "addNotePlaceholder": "Dodaj nową notatkę...", + "noNotes": "Brak notatek dostępnych dla tego zgłoszenia", + "noSearchResults": "Brak notatek pasujących do wyszukiwania", + "searchPlaceholder": "Szukaj notatek...", + "title": "Notatki do zgłoszenia" + }, + "call_detail": { + "address": "Adres", + "call_location": "Lokalizacja zgłoszenia", + "close_call": "Zamknij zgłoszenie", + "close_call_confirmation": "Czy na pewno chcą Państwo zamknąć to zgłoszenie?", + "close_call_error": "Nie udało się zamknąć zgłoszenia", + "close_call_note": "Notatka zamknięcia", + "close_call_note_placeholder": "Wprowadź notatkę dotyczącą zamknięcia zgłoszenia", + "close_call_success": "Zgłoszenie zamknięte pomyślnie", + "close_call_type": "Typ zamknięcia", + "close_call_type_placeholder": "Wybierz typ zamknięcia", + "close_call_type_required": "Proszę wybrać typ zamknięcia", + "close_call_types": { + "cancelled": "Anulowano", + "closed": "Zamknięto", + "false_alarm": "Fałszywy alarm", + "founded": "Uzasadnione", + "minor": "Drobne", + "transferred": "Przekazano", + "unfounded": "Bezzasadne" + }, + "contact_email": "E-mail", + "contact_info": "Dane kontaktowe", + "contact_name": "Imię i nazwisko osoby kontaktowej", + "contact_phone": "Telefon", + "edit_call": "Edytuj zgłoszenie", + "external_id": "Identyfikator zewnętrzny", + "failed_to_open_maps": "Nie udało się otworzyć aplikacji map", + "files": { + "add_file": "Dodaj plik", + "button": "Pliki", + "empty": "Brak dostępnych plików", + "empty_description": "Dodaj pliki do zgłoszenia, aby ułatwić dokumentację i komunikację", + "error": "Błąd podczas pobierania plików", + "file_name": "Nazwa pliku", + "name_required": "Proszę wprowadzić nazwę pliku", + "no_files": "Brak dostępnych plików", + "no_files_description": "Dodaj pliki do zgłoszenia, aby ułatwić dokumentację i komunikację", + "open_error": "Błąd podczas otwierania pliku", + "select_error": "Błąd podczas wybierania pliku", + "select_file": "Wybierz plik", + "share_error": "Błąd podczas udostępniania pliku", + "title": "Pliki zgłoszenia", + "upload": "Prześlij", + "upload_error": "Błąd podczas przesyłania pliku", + "uploading": "Przesyłanie..." + }, + "group": "Grupa", + "images": "Zdjęcia", + "loading": "Ładowanie szczegółów zgłoszenia...", + "nature": "Charakter", + "no_additional_info": "Brak dodatkowych informacji", + "no_contact_info": "Brak danych kontaktowych", + "no_dispatched": "Brak jednostek zadysponowanych do tego zgłoszenia", + "no_location": "Brak danych o lokalizacji", + "no_location_for_routing": "Brak danych o lokalizacji do wyznaczenia trasy", + "no_protocols": "Brak protokołów załączonych do tego zgłoszenia", + "no_timeline": "Brak zdarzeń na osi czasu", + "not_available": "N/D", + "not_found": "Nie znaleziono zgłoszenia", + "note": "Notatka", + "notes": "Notatki", + "priority": "Priorytet", + "reference_id": "Identyfikator referencyjny", + "status": "Status", + "tabs": { + "contact": "Kontakt", + "dispatched": "Zadysponowane", + "info": "Info", + "protocols": "Protokoły", + "timeline": "Aktywność" + }, + "timestamp": "Znacznik czasu", + "title": "Szczegóły zgłoszenia", + "type": "Typ", + "unit": "Jednostka", + "update_call_error": "Nie udało się zaktualizować zgłoszenia", + "update_call_success": "Zgłoszenie zaktualizowane pomyślnie" + }, + "calls": { + "address": "Adres", + "address_found": "Adres znaleziony i lokalizacja zaktualizowana", + "address_not_found": "Nie znaleziono adresu, proszę spróbować innego adresu", + "address_placeholder": "Wprowadź adres zgłoszenia", + "address_required": "Proszę wprowadzić adres do wyszukania", + "call_details": "Szczegóły zgłoszenia", + "call_location": "Lokalizacja zgłoszenia", + "call_number": "Numer zgłoszenia", + "call_priority": "Priorytet zgłoszenia", + "confirm_deselect_message": "Czy na pewno chcą Państwo odznączyć bieżące aktywne zgłoszenie?", + "confirm_deselect_title": "Odznacz aktywne zgłoszenie", + "contact_info": "Dane kontaktowe", + "contact_info_placeholder": "Wprowadź dane kontaktowe", + "contact_name": "Imię i nazwisko osoby kontaktowej", + "contact_name_placeholder": "Wprowadź imię i nazwisko osoby kontaktowej", + "contact_phone": "Telefon osoby kontaktowej", + "contact_phone_placeholder": "Wprowadź numer telefonu osoby kontaktowej", + "coordinates": "Współrzędne GPS", + "coordinates_found": "Współrzędne znalezione i adres zaktualizowany", + "coordinates_geocoding_error": "Nie udało się uzyskać adresu dla współrzędnych, ale lokalizacja ustawiona na mapie", + "coordinates_invalid_format": "Nieprawidłowy format współrzędnych. Proszę użyć formatu: szerokość geograficzna, długość geograficzna", + "coordinates_no_address": "Współrzędne ustawione na mapie, ale nie znaleziono adresu", + "coordinates_out_of_range": "Współrzędne poza zakresem. Szerokość geograficzna musi wynosić od -90 do 90, długość geograficzna od -180 do 180", + "coordinates_placeholder": "Wprowadź współrzędne GPS (np. 37.7749, -122.4194)", + "coordinates_required": "Proszę wprowadzić współrzędne do wyszukania", + "create": "Utwórz", + "create_error": "Błąd podczas tworzenia zgłoszenia", + "create_new_call": "Utwórz nowe zgłoszenie", + "create_success": "Zgłoszenie utworzone pomyślnie", + "description": "Opis", + "description_placeholder": "Wprowadź opis zgłoszenia", + "deselect": "Odznacz", + "directions": "Wskazówki dojazdu", + "dispatch_to": "Zadysponuj do", + "dispatch_to_everyone": "Zadysponuj do całego dostępnego personelu", + "edit_call": "Edytuj zgłoszenie", + "edit_call_description": "Zaktualizuj informacje o zgłoszeniu", + "everyone": "Wszyscy", + "files": { + "no_files": "Brak dostępnych plików", + "no_files_description": "Do tego zgłoszenia nie dodano jeszcze żadnych plików", + "title": "Pliki zgłoszenia" + }, + "geocoding_error": "Nie udało się wyszukać adresu, proszę spróbować ponownie", + "groups": "Grupy", + "loading": "Ładowanie zgłoszeń...", + "loading_calls": "Ładowanie zgłoszeń...", + "name": "Nazwa", + "name_placeholder": "Wprowadź nazwę zgłoszenia", + "nature": "Charakter", + "nature_placeholder": "Wprowadź charakter zgłoszenia", + "new_call": "Nowe zgłoszenie", + "new_call_description": "Utwórz nowe zgłoszenie, aby rozpocząć nowy incydent", + "no_call_selected": "Brak aktywnego zgłoszenia", + "no_call_selected_info": "Ta jednostka aktualnie nie odpowiada na żadne zgłoszenia", + "no_calls": "Brak aktywnych zgłoszeń", + "no_calls_available": "Brak dostępnych zgłoszeń", + "no_calls_description": "Nie znaleziono aktywnych zgłoszeń. Wybierz aktywne zgłoszenie, aby wyświetlić szczegóły.", + "no_location_message": "To zgłoszenie nie ma dostępnych danych o lokalizacji do nawigacji.", + "no_location_title": "Brak dostępnej lokalizacji", + "no_open_calls": "Brak otwartych zgłoszeń", + "note": "Notatka", + "note_placeholder": "Wprowadź notatkę do zgłoszenia", + "personnel": "Osoby", + "plus_code": "Kod Plus", + "plus_code_found": "Kod Plus znaleziony i lokalizacja zaktualizowana", + "plus_code_geocoding_error": "Nie udało się wyszukać kodu Plus, proszę spróbować ponownie", + "plus_code_not_found": "Nie znaleziono kodu Plus, proszę spróbować innego kodu Plus", + "plus_code_placeholder": "Wprowadź kod Plus (np. 849VCWC8+R9)", + "plus_code_required": "Proszę wprowadzić kod Plus do wyszukania", + "priority": "Priorytet", + "priority_placeholder": "Wybierz priorytet zgłoszenia", + "roles": "Role", + "search": "Szukaj zgłoszeń...", + "select_active_call": "Wybierz aktywne zgłoszenie", + "select_address": "Wybierz adres", + "select_address_placeholder": "Wybierz adres zgłoszenia", + "select_description": "Wybierz opis", + "select_dispatch_recipients": "Wybierz odbiorców dyspozytu", + "select_location": "Wybierz lokalizację na mapie", + "select_name": "Wybierz nazwę", + "select_nature": "Wybierz charakter", + "select_nature_placeholder": "Wybierz charakter zgłoszenia", + "select_priority": "Wybierz priorytet", + "select_priority_placeholder": "Wybierz priorytet zgłoszenia", + "select_recipients": "Wybierz odbiorców", + "select_type": "Wybierz typ", + "selected": "wybrano", + "title": "Zgłoszenia", + "type": "Typ", + "units": "Jednostki", + "users": "Użytkownicy", + "viewNotes": "Notatki", + "view_details": "Wyświetl szczegóły", + "what3words": "what3words", + "what3words_found": "Adres what3words znaleziony i lokalizacja zaktualizowana", + "what3words_geocoding_error": "Nie udało się wyszukać adresu what3words, proszę spróbować ponownie", + "what3words_invalid_format": "Nieprawidłowy format what3words. Proszę użyć formatu: słowo.słowo.słowo", + "what3words_not_found": "Nie znaleziono adresu what3words, proszę spróbować innego adresu", + "what3words_placeholder": "Wprowadź adres what3words (np. filled.count.soap)", + "what3words_required": "Proszę wprowadzić adres what3words do wyszukania" + }, + "common": { + "active": "Aktywny", + "add": "Dodaj", + "all": "Wszystkie", + "back": "Wstecz", + "cancel": "Anuluj", + "close": "Zamknij", + "confirm": "Potwierdź", + "delete": "Usuń", + "deleting": "Usuwanie...", + "discard": "Odrzuć", + "done": "Gotowe", + "edit": "Edytuj", + "error": "Błąd", + "errorOccurred": "Wystąpił błąd", + "get_my_location": "Pobierz moją lokalizację", + "loading": "Ładowanie", + "loading_address": "Ładowanie adresu...", + "navigation": "Nawigacja", + "next": "Dalej", + "noActiveUnit": "Brak aktywnej jednostki", + "noActiveUnitDescription": "Proszę wybrać aktywną jednostkę, aby zobaczyć dostępne statusy", + "no_address_found": "Nie znaleziono adresu", + "no_data_available": "Brak dostępnych danych", + "no_location": "Brak dostępnej lokalizacji", + "no_results_found": "Nie znaleziono wyników", + "no_unit_selected": "Nie wybrano jednostki", + "of": "z", + "ok": "OK", + "optional": "Opcjonalne", + "permission_denied": "Odmowa dostępu", + "previous": "Poprzedni", + "refresh": "Odśwież", + "retry": "Spróbuj ponownie", + "route": "Trasa", + "save": "Zapisz", + "search": "Szukaj", + "set_location": "Ustaw lokalizację", + "step": "Krok", + "submit": "Wyślij", + "submitting": "Wysyłanie...", + "success": "Sukces", + "unknown_department": "Nieznana jednostka organizacyjna", + "unknown_user": "Nieznany użytkownik", + "uploading": "Przesyłanie..." + }, + "contacts": { + "add": "Dodaj kontakt", + "addedBy": "Dodane przez", + "addedOn": "Dodane dnia", + "additionalInformation": "Dodatkowe informacje", + "address": "Adres", + "bluesky": "Bluesky", + "cancel": "Anuluj", + "cellPhone": "Telefon komórkowy", + "city": "Miasto", + "cityState": "Miasto i województwo", + "cityStateZip": "Miasto, województwo, kod pocztowy", + "company": "Firma", + "contactInformation": "Dane kontaktowe", + "contactNotes": "Notatki kontaktu", + "contactNotesEmpty": "Nie znaleziono notatek dla tego kontaktu", + "contactNotesEmptyDescription": "Notatki dodane do tego kontaktu będą wyświetlane tutaj", + "contactNotesExpired": "Ta notatka wygasła", + "contactNotesLoading": "Ładowanie notatek kontaktu...", + "contactType": "Typ kontaktu", + "countryId": "Identyfikator kraju", + "delete": "Usuń", + "deleteConfirm": "Czy na pewno chcą Państwo usunąć ten kontakt?", + "deleteSuccess": "Kontakt usunięty pomyślnie", + "description": "Dodaj kontakty i zarządzaj nimi", + "descriptionLabel": "Opis", + "details": "Szczegóły kontaktu", + "detailsTab": "Szczegóły", + "edit": "Edytuj kontakt", + "editedBy": "Edytowane przez", + "editedOn": "Edytowane dnia", + "email": "E-mail", + "empty": "Nie znaleziono kontaktów", + "emptyDescription": "Dodaj kontakty, aby zarządzać swoimi połączeniami osobistymi i służbowymi", + "entranceCoordinates": "Współrzędne wejścia", + "errorTitle": "Błąd", + "exitCoordinates": "Współrzędne wyjścia", + "expires": "Wygasa", + "facebook": "Facebook", + "faxPhone": "Faks", + "formError": "Proszę poprawić błędy w formularzu", + "homePhone": "Telefon domowy", + "identification": "Identyfikacja", + "important": "Oznacz jako ważne", + "instagram": "Instagram", + "internal": "Wewnętrzny", + "invalidEmail": "Nieprawidłowy adres e-mail", + "linkedin": "LinkedIn", + "locationCoordinates": "Współrzędne lokalizacji", + "locationInformation": "Informacje o lokalizacji", + "mastodon": "Mastodon", + "mobile": "Komórkowy", + "name": "Imię i nazwisko", + "noteAlert": "Alert", + "noteType": "Typ", + "notes": "Notatki", + "notesTab": "Notatki", + "officePhone": "Telefon biurowy", + "openAppError": "Nie można otworzyć aplikacji {{action}}", + "openLinkFailed": "Nie udało się otworzyć łącza {{action}}:", + "otherInfo": "Inne informacje", + "person": "Osoba", + "phone": "Telefon", + "public": "Publiczny", + "required": "Wymagane", + "save": "Zapisz kontakt", + "saveSuccess": "Kontakt zapisany pomyślnie", + "search": "Szukaj kontaktów...", + "shouldAlert": "Powinien alertować", + "socialMediaWeb": "Media społecznościowe i sieć", + "state": "Województwo", + "stateId": "Identyfikator województwa", + "systemInformation": "Informacje systemowe", + "tabs": { + "details": "Szczegóły", + "notes": "Notatki" + }, + "threads": "Threads", + "title": "Kontakty", + "twitter": "Twitter", + "visibility": "Widoczność", + "website": "Strona internetowa", + "zip": "Kod pocztowy" + }, + "form": { + "invalid_url": "Proszę wprowadzić prawidłowy URL zaczynający się od http:// lub https://", + "required": "To pole jest wymagane" + }, + "home": { + "error": { + "no_user_id": "Identyfikator użytkownika niedostępny" + }, + "sidebar": { + "audio": "Audio", + "ptt": "PTT" + }, + "staffing": { + "add_note": "Dodaj notatkę", + "confirm_staffing": "Potwierdź obsadę: {{staffing}}", + "no_options_available": "Brak dostępnych opcji obsady", + "no_staffing_options": "Brak dostępnych opcji obsady", + "note": "Notatka", + "note_placeholder": "Wprowadź notatkę (opcjonalnie)...", + "review_and_confirm": "Przejrzyj i potwierdź", + "select_staffing_level": "Wybierz poziom obsady", + "select_staffing_level_description": "Wybierz swój aktualny status obsady", + "selected_staffing": "Wybrana obsada", + "set_staffing": "Ustaw obsadę personelu", + "staffing_level": "Poziom obsady", + "update_failed": "Nie udało się zaktualizować obsady", + "updated_successfully": "Obsada zaktualizowana pomyślnie" + }, + "stats": { + "open_calls": "Otwarte zgłoszenia", + "personnel_in_service": "Personel w służbie", + "units_in_service": "Jednostki w służbie" + }, + "status": { + "no_options_available": "Brak dostępnych opcji statusu", + "update_failed": "Nie udało się zaktualizować statusu", + "updated_successfully": "Status zaktualizowany pomyślnie" + }, + "tabs": { + "dashboard": "Panel", + "map": "Mapa", + "staffing": "Obsada", + "status": "Status" + }, + "user": { + "my_staffing": "Moja obsada", + "my_status": "Mój status", + "staffing_unknown": "Nieznana obsada", + "status_unknown": "Nieznany status", + "updated": "Zaktualizowano" + } + }, + "livekit": { + "audio_devices": "Urządzenia audio", + "audio_settings": "Ustawienia audio", + "connected_to_room": "Połączono z kanałem", + "connecting": "Łączenie...", + "disconnect": "Rozłącz", + "double_click_action": "Akcja podwójnego kliknięcia", + "headset_button_ptt": "Przycisk słuchawki PTT", + "headset_monitoring_active": "Monitorowanie słuchawki aktywne", + "headset_monitoring_inactive": "Monitorowanie słuchawki nieaktywne", + "headset_ptt_description": "Użyj przycisku AirPods lub słuchawek Bluetooth, aby wyciszyć/odciszyć", + "headset_ptt_disabled": "PTT słuchawki wyłączone", + "headset_ptt_enabled": "PTT słuchawki włączone", + "join": "Dołącz", + "long_press_action": "Akcja długiego naciśnięcia", + "microphone": "Mikrofon", + "mute": "Wycisz", + "no_action": "Brak akcji", + "no_rooms_available": "Brak dostępnych kanałów głosowych", + "play_pause_action": "Akcja przycisku odtwórz/pauza", + "ptt_mode": "Tryb PTT", + "ptt_mode_disabled": "Wyłączony", + "ptt_mode_push": "Push-to-Talk (przytrzymaj, aby mówić)", + "ptt_mode_toggle": "Przełącznik (naciśnij, aby zmienić wyciszenie)", + "sound_feedback": "Informacja dźwiękowa", + "speaker": "Głośnik", + "speaking": "Mówienie", + "tap_to_toggle_mute": "Naciśnij przycisk słuchawki, aby przełączyć wyciszenie", + "title": "Kanały głosowe", + "toggle_mute": "Przełącz wyciszenie", + "unmute": "Odcisz" + }, + "loading": { + "loading": "Ładowanie...", + "loadingData": "Ładowanie danych...", + "pleaseWait": "Proszę czekać", + "processingRequest": "Przetwarzanie żądania..." + }, + "login": { + "change_server_url": "Zmień URL serwera", + "errorModal": { + "confirmButton": "OK", + "message": "Proszę sprawdzić nazwę użytkownika i hasło i spróbować ponownie.", + "title": "Logowanie nie powiodło się" + }, + "login": "Zaloguj się", + "login_button": "Zaloguj się", + "login_button_description": "Zaloguj się na swoje konto, aby kontynuować", + "login_button_error": "Błąd logowania", + "login_button_loading": "Logowanie...", + "login_button_success": "Zalogowano pomyślnie", + "password": "Hasło", + "password_incorrect": "Hasło było nieprawidłowe", + "password_placeholder": "Wprowadź swoje hasło", + "select_language": "Wybierz język", + "sso": { + "back": "Wstecz", + "change_department": "Zmień nazwę użytkownika", + "continue_button": "Kontynuuj", + "department_code_label": "Kod jednostki", + "department_code_placeholder": "Wprowadź kod jednostki", + "department_code_required": "Kod jednostki jest wymagany", + "department_description": "Wprowadź kod jednostki, aby się zalogować", + "department_id_invalid": "Identyfikator jednostki musi być liczbą", + "department_id_label": "Identyfikator jednostki (opcjonalnie)", + "department_id_placeholder": "Wprowadź identyfikator jednostki, jeśli jest znany", + "department_not_found": "Nie znaleziono jednostki. Proszę sprawdzić kod i spróbować ponownie.", + "login_with_sso_button": "Zaloguj przez SSO", + "looking_up": "Wyszukiwanie konta...", + "lookup_network_error": "Nie można połączyć się z serwerem. Proszę sprawdzić połączenie i spróbować ponownie.", + "or_sign_in_with_password": "— lub zaloguj się hasłem —", + "page_title": "Logowanie przez SSO", + "sign_in_with_sso": "Zaloguj przez SSO", + "sso_not_enabled": "SSO nie jest włączone dla tego konta. Proszę użyć nazwy użytkownika i hasła.", + "user_description": "Wprowadź swoją nazwę użytkownika lub adres e-mail Resgrid, aby zalogować się przez SSO", + "user_not_found": "Nie znaleziono konta. Proszę sprawdzić nazwę użytkownika i spróbować ponownie.", + "username_label": "Nazwa użytkownika lub e-mail", + "username_placeholder": "Wprowadź nazwę użytkownika lub e-mail", + "username_required": "Nazwa użytkownika jest wymagana" + }, + "title": "Logowanie", + "username": "Nazwa użytkownika", + "username_placeholder": "Wprowadź swoją nazwę użytkownika" + }, + "map": { + "call_set_as_current": "Zgłoszenie ustawione jako bieżące", + "failed_to_open_maps": "Nie udało się otworzyć aplikacji map", + "failed_to_set_current_call": "Nie udało się ustawić zgłoszenia jako bieżącego", + "no_location_for_routing": "Brak danych o lokalizacji do wyznaczenia trasy", + "pin_color": "Kolor pinezki", + "recenter_map": "Wyśrodkuj mapę", + "set_as_current_call": "Ustaw jako bieżące zgłoszenie", + "view_call_details": "Wyświetl szczegóły zgłoszenia" + }, + "maps": { + "contact_administrator": "Proszę skontaktować się z administratorem w celu skonfigurowania usług mapowania.", + "failed_to_load": "Nie udało się załadować mapy. Proszę sprawdzić połączenie internetowe.", + "mapbox_not_configured": "Mapbox nie jest skonfigurowany. Proszę skontaktować się z administratorem." + }, + "messages": { + "all_messages": "Wszystkie wiadomości", + "compose": "Utwórz", + "compose_new_message": "Nowa wiadomość", + "date_unknown": "Data nieznana", + "delete_confirmation_message": "Czy na pewno chcą Państwo usunąć {{count}} wiadomość(i)?", + "delete_confirmation_title": "Usuń wiadomości", + "delete_single_confirmation_message": "Czy na pewno chcą Państwo usunąć tę wiadomość?", + "enter_expiration_date": "Wprowadź datę wygaśnięcia", + "enter_message_body": "Wprowadź wiadomość", + "enter_note": "Wprowadź opcjonalną notatkę", + "enter_response": "Wprowadź odpowiedź", + "enter_subject": "Wprowadź temat wiadomości", + "error": "Błąd", + "expiration_date_format": "Format: RRRR-MM-DD GG:MM", + "expiration_date_optional": "Data wygaśnięcia (opcjonalnie)", + "expired": "Wygasłe", + "expires_on": "Wygasa dnia", + "from": "Od", + "inbox": "Skrzynka odbiorcza", + "message_body": "Treść wiadomości", + "message_content": "Zawartość wiadomości", + "message_type": "Typ wiadomości", + "no_content": "Brak treści", + "no_messages": "Nie znaleziono wiadomości", + "no_messages_description": "Wyślij pierwszą wiadomość, aby rozpocząć", + "no_subject": "Brak tematu", + "note_optional": "Notatka (opcjonalnie)", + "people": "Osoby", + "recipients": "Odbiorcy", + "recipients_count": "{{count}} odbiorców", + "recipients_selected": "Wybrano {{count}} odbiorców", + "respond_failed": "Nie udało się odpowiedzieć na wiadomość", + "respond_to_message": "Odpowiedz na wiadomość", + "responded": "Odpowiedziano", + "responded_on": "Odpowiedziano dnia", + "responding": "Odpowiadanie...", + "response": "Odpowiedź", + "response_required": "Odpowiedź jest wymagana", + "search_placeholder": "Szukaj wiadomości...", + "select_all": "Zaznacz wszystkie", + "select_message": "Wybierz wiadomość", + "select_message_type": "Wybierz typ wiadomości", + "select_recipients": "Wybierz odbiorców", + "selected_count": "Wybrano {{count}}", + "send": "Wyślij", + "send_first_message": "Wyślij pierwszą wiadomość", + "send_response": "Wyślij odpowiedź", + "sending": "Wysyłanie...", + "sent": "Wysłano", + "showing_count": "Wyświetlanie {{count}} wiadomości", + "subject": "Temat", + "title": "Wiadomości", + "types": { + "alert": "Alert", + "message": "Wiadomość", + "poll": "Ankieta" + }, + "unsaved_changes": "Niezapisane zmiany", + "unsaved_changes_message": "Mają Państwo niezapisane zmiany. Czy na pewno chcą je Państwo odrzucić?", + "validation": { + "body_required": "Treść wiadomości jest wymagana", + "recipients_required": "Wymagany jest co najmniej jeden odbiorca", + "subject_required": "Temat jest wymagany" + } + }, + "notes": { + "actions": { + "add": "Dodaj notatkę", + "delete_confirm": "Czy na pewno chcą Państwo usunąć tę notatkę?" + }, + "details": { + "close": "Zamknij", + "created": "Utworzone", + "delete": "Usuń", + "edit": "Edytuj", + "tags": "Tagi", + "title": "Szczegóły notatki", + "updated": "Zaktualizowano" + }, + "empty": "Nie znaleziono notatek", + "emptyDescription": "Nie utworzono jeszcze żadnych notatek dla Państwa jednostki.", + "search": "Szukaj notatek...", + "title": "Notatki" + }, + "notifications": { + "bulkDeleteError": "Nie udało się usunąć powiadomień", + "bulkDeleteSuccess": "Usunięto {{count}} powiadomienie(ń)", + "confirmDelete": { + "message": "Czy na pewno chcą Państwo usunąć {{count}} powiadomienie(ń)? Tej operacji nie można cofnąć.", + "title": "Potwierdź usunięcie" + }, + "deleteError": "Nie udało się usunąć powiadomienia", + "deleteSuccess": "Powiadomienie usunięte", + "deselectAll": "Odznacz wszystkie", + "empty": "Brak dostępnych aktualizacji", + "loadError": "Nie można załadować powiadomień", + "selectAll": "Zaznacz wszystkie", + "selectedCount": "Wybrano {{count}}", + "title": "Powiadomienia" + }, + "onboarding": { + "message": "Witamy w aplikacji Resgrid Responder" + }, + "personnel": { + "contactInformation": "Dane kontaktowe", + "currentStatus": "Aktualny status", + "empty": "Nie znaleziono personelu", + "emptyDescription": "Żaden personel nie spełnia kryteriów wyszukiwania lub brak danych personelu.", + "filter": { + "description": "Wybierz filtry, aby zawęzić listę personelu. Zmiany są stosowane automatycznie.", + "empty": "Brak dostępnych opcji filtrowania", + "emptyDescription": "Opcje filtrowania pojawią się tutaj, gdy będą dostępne.", + "title": "Filtruj personel" + }, + "group": "Grupa", + "id": "Identyfikator", + "roles": "Role", + "search": "Szukaj personelu...", + "staffing": "Obsada", + "status": { + "add_note": "Dodaj notatkę", + "calls_tab": "Zgłoszenia", + "confirm_status": "Potwierdź status: {{status}}", + "custom_responding_to": "Niestandardowe reagowanie na", + "general_status": "Ogólna aktualizacja statusu", + "loading_stations": "Ładowanie stacji...", + "no_destination": "Brak miejsca docelowego", + "no_stations_available": "Brak dostępnych stacji", + "note": "Notatka", + "note_placeholder": "Wprowadź notatkę (opcjonalnie)...", + "responding_to": "Reagowanie na", + "responding_to_placeholder": "Wprowadź, na co Państwo reagują...", + "review_and_confirm": "Przejrzyj i potwierdź", + "select_call_to_respond_to": "Wybierz zgłoszenie, na które chcą Państwo reagować", + "select_destination": "Wybierz miejsce docelowe", + "select_responding_to": "Ustaw status: {{status}}", + "selected_call": "Wybrane zgłoszenie", + "selected_destination": "Wybrane miejsce docelowe", + "set_status": "Ustaw status personelu", + "stations_tab": "Stacje", + "status": "Status" + } + }, + "protocols": { + "details": { + "close": "Zamknij", + "code": "Kod", + "created": "Utworzone", + "title": "Szczegóły protokołu", + "updated": "Zaktualizowano" + }, + "empty": "Nie znaleziono protokołów", + "emptyDescription": "Nie utworzono jeszcze żadnych protokołów dla Państwa jednostki.", + "search": "Szukaj protokołów...", + "title": "Protokoły" + }, + "roles": { + "modal": { + "title": "Przypisania ról jednostki" + }, + "selectUser": "Wybierz użytkownika", + "status": "{{active}} z {{total}} ról aktywnych", + "tap_to_manage": "Naciśnij, aby zarządzać rolami", + "unassigned": "Nieprzypisane" + }, + "settings": { + "about": "O aplikacji", + "account": "Konto", + "active_unit": "Aktywna jednostka", + "app_info": "Informacje o aplikacji", + "app_name": "Nazwa aplikacji", + "arabic": "Arabski", + "audio_device_selection": { + "bluetooth_device": "Urządzenie Bluetooth", + "current_selection": "Bieżący wybór", + "microphone": "Mikrofon", + "no_microphones_available": "Brak dostępnych mikrofonów", + "no_speakers_available": "Brak dostępnych głośników", + "none_selected": "Nie wybrano", + "speaker": "Głośnik", + "speaker_device": "Głośnik", + "title": "Wybór urządzenia audio", + "unavailable": "Niedostępne", + "wired_device": "Urządzenie przewodowe" + }, + "background_geolocation": "Geolokalizacja w tle", + "background_geolocation_warning": "Ta funkcja umożliwia aplikacji śledzenie lokalizacji w tle. Pomaga w koordynacji reagowania kryzysowego, ale może wpływać na żywotność baterii.", + "background_location": "Lokalizacja w tle", + "contact_us": "Skontaktuj się z nami", + "english": "Angielski", + "enter_password": "Wprowadź hasło", + "enter_server_url": "Wprowadź URL API Resgrid (np. https://api.resgrid.com)", + "enter_username": "Wprowadź nazwę użytkownika", + "environment": "Środowisko", + "french": "Francuski", + "general": "Ogólne", + "generale": "Ogólne", + "german": "Niemiecki", + "github": "Github", + "help_center": "Centrum pomocy", + "italian": "Włoski", + "keep_alive": "Utrzymuj aktywność", + "keep_alive_warning": "Ostrzeżenie: Włączenie funkcji utrzymywania aktywności uniemożliwi uśpienie urządzenia i może znacznie zwiększyć zużycie baterii.", + "keep_screen_on": "Utrzymuj ekran włączony", + "language": "Język", + "links": "Łącza", + "login_info": "Informacje logowania", + "logout": "Wyloguj się", + "logout_confirm_cancel": "Anuluj", + "logout_confirm_message": "Czy na pewno chcą się Państwo wylogować? Wszystkie lokalne dane, wartości z pamięci podręcznej i zapisane ustawienia zostaną wyczyszczone z aplikacji.", + "logout_confirm_title": "Potwierdź wylogowanie", + "logout_confirm_yes": "Tak, wyloguj się", + "more": "Więcej", + "no_units_available": "Brak dostępnych jednostek", + "none_selected": "Nie wybrano", + "notifications": "Powiadomienia push", + "notifications_badge_overflow": "99+", + "notifications_button": "Powiadomienia", + "notifications_description": "Włącz powiadomienia, aby otrzymywać alerty i aktualizacje", + "notifications_enable": "Włącz powiadomienia", + "password": "Hasło", + "polish": "Polski", + "preferences": "Preferencje", + "privacy": "Polityka prywatności", + "privacy_policy": "Polityka prywatności", + "rate": "Oceń", + "realtime_geolocation": "Geolokalizacja w czasie rzeczywistym", + "realtime_geolocation_warning": "Ta funkcja łączy się z centrum lokalizacji w czasie rzeczywistym, aby otrzymywać aktualizacje lokalizacji od innego personelu i jednostek. Wymaga aktywnego połączenia sieciowego.", + "select_unit": "Wybierz jednostkę", + "server": "Serwer", + "server_url": "URL serwera", + "server_url_note": "Uwaga: To jest URL API Resgrid. Służy do łączenia się z serwerem Resgrid. Nie należy dołączać /api/v4 w URL ani końcowego ukośnika.", + "set_active_unit": "Ustaw aktywną jednostkę", + "share": "Udostępnij", + "spanish": "Hiszpański", + "status_page": "Status systemu", + "support": "Wsparcie", + "support_us": "Wesprzyj nas", + "swedish": "Szwedzki", + "terms": "Warunki korzystania z usługi", + "theme": { + "dark": "Ciemny", + "light": "Jasny", + "system": "Systemowy", + "title": "Motyw" + }, + "title": "Ustawienia", + "ukrainian": "Ukraiński", + "unit_selection": "Wybór jednostki", + "username": "Nazwa użytkownika", + "version": "Wersja", + "website": "Strona internetowa" + }, + "shifts": { + "all_shifts": "Wszystkie zmiany", + "already_signed_up": "Już zapisano", + "assigned": "Przypisano", + "automatic": "Automatyczne", + "available": "Dostępne", + "calendar": "Kalendarz", + "current_signups": "Bieżące zapisy", + "day_details": "Szczegóły dnia zmiany", + "details": "Szczegóły zmiany", + "end_time": "Godzina zakończenia", + "groups": "Grupy", + "in_shift": "W zmianie", + "legend": "Legenda", + "loading": "Ładowanie zmian...", + "loading_details": "Ładowanie szczegółów zmiany...", + "loading_signup": "Przetwarzanie...", + "manual": "Ręczne", + "needed": "Potrzebne", + "needs": "Potrzeby", + "next_day": "Następny dzień", + "no_positions_available": "Brak dostępnych stanowisk do zapisania", + "no_shifts": "Brak dostępnych zmian", + "no_shifts_description": "Proszę skontaktować się z przełożonym, jeśli uważają Państwo, że powinni mieć przypisane zmiany", + "no_shifts_today": "Brak zaplanowanych zmian na dziś", + "no_shifts_today_description": "Proszę sprawdzić później lub skontaktować się z przełożonym w sprawie przypisania zmian", + "no_signups_yet": "Brak zapisów", + "optional": "Opcjonalne", + "personnel_count": "Liczba personelu", + "position_needs": "Potrzeby stanowiska", + "required": "Wymagane", + "roles": "Role", + "scheduled_for": "Zaplanowane na", + "search_placeholder": "Szukaj zmian...", + "shift_code": "Kod zmiany", + "shift_day": "Dzień zmiany", + "shift_name": "Nazwa zmiany", + "shift_type": { + "emergency": "Awaryjne", + "label": "Typ zmiany", + "regular": "Regularne", + "training": "Szkoleniowe", + "unknown": "Nieznane" + }, + "signed_up": "Zapisano", + "signup": "Zapisz się", + "signup_error": "Nie udało się zapisać na zmianę", + "signup_status": "Status zapisu", + "signup_success": "Pomyślnie zapisano na zmianę", + "signups": "Zapisy", + "start_time": "Godzina rozpoczęcia", + "today": "Dziś", + "todays_shifts": "Dzisiejsze zmiany", + "type_emergency": "Awaryjne", + "type_regular": "Regularne", + "type_training": "Szkoleniowe", + "type_unknown": "Nieznane", + "unknown": "Nieznane", + "upcoming_shift_days": "Nadchodzące dni zmian", + "withdraw": "Wycofaj się", + "withdraw_error": "Nie udało się wycofać ze zmiany", + "withdraw_success": "Pomyślnie wycofano ze zmiany", + "you": "Ty", + "you_are_signed_up": "Są Państwo zapisani na tę zmianę" + }, + "sidebar": { + "audio": "Strumień", + "ptt": "Głos" + }, + "tabs": { + "calendar": "Kalendarz", + "calls": "Zgłoszenia", + "contacts": "Kontakty", + "home": "Strona główna", + "map": "Mapa", + "messages": "Wiadomości", + "notes": "Notatki", + "personnel": "Ludzie", + "protocols": "Protokoły", + "settings": "Ustawienia", + "shifts": "Zmiany", + "units": "Jednostki" + }, + "units": { + "coordinates": "Współrzędne", + "empty": "Nie znaleziono jednostek", + "emptyDescription": "Brak dostępnych jednostek w Państwa organizacji", + "features": "Cechy", + "fourWheelDrive": "Napęd 4×4", + "group": "Grupa", + "lastUpdate": "Ostatnia aktualizacja", + "location": "Lokalizacja", + "maps_error": "Nie można otworzyć map", + "notes": "Notatki", + "plateNumber": "Numer rejestracyjny", + "search": "Szukaj jednostek...", + "specialPermit": "Specjalne zezwolenie", + "tapToOpenMaps": "Naciśnij, aby otworzyć w mapach", + "title": "Jednostki", + "vehicleInfo": "Informacje o pojeździe", + "vin": "VIN" + }, + "welcome": "Witamy w aplikacji Resgrid Responder" +} diff --git a/src/translations/sv.json b/src/translations/sv.json new file mode 100644 index 0000000..d1b85ad --- /dev/null +++ b/src/translations/sv.json @@ -0,0 +1,978 @@ +{ + "app": { + "title": "Resgrid Responder" + }, + "audio_streams": { + "buffering": "Buffrar", + "buffering_stream": "Buffrar ljudström...", + "close": "Stäng", + "currently_playing": "Spelar för närvarande: {{streamName}}", + "error_loading_stream": "Det gick inte att läsa in ljudström", + "loading": "Läser in", + "loading_stream": "Läser in ljudström...", + "loading_streams": "Läser in ljudströmmar...", + "name": "Namn", + "no_stream_playing": "Ingen ljudström spelas för närvarande", + "none": "Ingen", + "playing": "Spelar", + "refresh_streams": "Uppdatera strömmar", + "select_placeholder": "Välj en ljudström", + "select_stream": "Välj ljudström", + "status": "Status", + "stopped": "Stoppad", + "stream_info": "Ströminformation", + "stream_selected": "Vald: {{streamName}}", + "title": "Ljudströmmar", + "type": "Typ" + }, + "bluetooth": { + "audio_device": "BT-handset", + "available_devices": "Tillgängliga enheter", + "bluetooth_not_ready": "Bluetooth är {{state}}. Aktivera Bluetooth.", + "clear": "Rensa", + "connected": "Ansluten", + "current_selection": "Aktuellt val", + "no_device_selected": "Ingen enhet vald", + "no_devices_found": "Inga Bluetooth-ljudenheter hittades", + "not_connected": "Inte ansluten", + "scan": "Sök", + "scan_again": "Sök igen", + "scan_error_message": "Det gick inte att söka efter Bluetooth-enheter", + "scan_error_title": "Sökfel", + "scanning": "Söker...", + "select_device": "Välj Bluetooth-enhet", + "selected": "Vald", + "selection_error_message": "Det gick inte att spara föredragen enhet", + "selection_error_title": "Valfel", + "supports_mic_control": "Mikrofonkontroll", + "tap_scan_to_find_devices": "Tryck på 'Sök' för att hitta Bluetooth-ljudenheter", + "unknown_device": "Okänd enhet" + }, + "calendar": { + "allDay": "Hela dagen", + "attendanceUpdated": { + "signedUp": "Du har anmält dig till det här evenemanget.", + "title": "Närvaro uppdaterad", + "unsignedUp": "Du har tagits bort från det här evenemanget." + }, + "attendees": { + "title": "Deltagare" + }, + "attendeesCount": "{{count}} deltagare", + "attendeesCount_plural": "{{count}} deltagare", + "confirmSignup": "Bekräfta", + "confirmUnsignup": { + "message": "Är du säker på att du vill avboka din närvaro för det här evenemanget?", + "title": "Bekräfta avbokning" + }, + "createdBy": "Skapad av", + "daysOfWeek": { + "fri": "Fre", + "mon": "Mån", + "sat": "Lör", + "sun": "Sön", + "thu": "Tor", + "tue": "Tis", + "wed": "Ons" + }, + "description": "Beskrivning", + "error": { + "attendanceUpdate": "Det gick inte att uppdatera närvaron. Försök igen.", + "title": "Fel" + }, + "eventsCount": "{{count}} händelse", + "eventsCount_plural": "{{count}} händelser", + "loading": { + "date": "Läser in händelser för valt datum...", + "today": "Läser in dagens händelser...", + "upcoming": "Läser in kommande händelser..." + }, + "noEvents": "Inga schemalagda händelser", + "optional": "Valfritt", + "required": "Obligatoriskt", + "selectDate": "Välj ett datum för att visa händelser", + "selectedDate": { + "empty": "Inga händelser schemalagda för det här datumet.", + "title": "Händelser för {{date}}" + }, + "signedUp": "Anmäld", + "signup": { + "button": "Anmäl dig", + "notePlaceholder": "Ange din anteckning här...", + "notePrompt": "Lägg till en anteckning (valfritt):", + "title": "Evenemangsanmälan" + }, + "signupAvailable": "Anmälan tillgänglig", + "tabs": { + "calendar": "Kalender", + "today": "Idag", + "upcoming": "Kommande" + }, + "tapToSignUp": "Tryck för att anmäla dig", + "title": "Kalender", + "today": { + "empty": { + "description": "Du har inga schemalagda händelser för idag.", + "title": "Inga händelser idag" + } + }, + "todayButton": "Idag", + "unsignup": "Avboka närvaro", + "upcoming": { + "empty": { + "description": "Du har inga schemalagda händelser de närmaste 7 dagarna.", + "title": "Inga kommande händelser" + } + } + }, + "callImages": { + "add": "Lägg till bild", + "add_new": "Lägg till ny bild", + "capture_error": "Fel vid fotografering. Försök igen.", + "default_name": "Namnlös bild", + "error": "Fel vid hämtning av bilder", + "failed_to_load": "Det gick inte att läsa in bilden", + "image_name": "Bildnamn", + "image_note": "Bildanteckning", + "loading": "Läser in...", + "no_images": "Inga bilder tillgängliga", + "no_images_description": "Lägg till bilder i ditt larm för att underlätta dokumentation och kommunikation", + "permission_denied_settings": "Åtkomst nekad. Aktivera åtkomst i enhetsinställningarna.", + "select_error": "Fel vid val av bild. Försök igen.", + "select_from_gallery": "Välj från galleriet", + "take_photo": "Ta foto", + "title": "Larmbilder", + "upload": "Ladda upp", + "upload_error": "Det gick inte att ladda upp bilden. Försök igen.", + "upload_success": "Bilden laddades upp" + }, + "callNotes": { + "addNote": "Lägg till anteckning", + "addNoteError": "Det gick inte att lägga till anteckning. Försök igen.", + "addNotePlaceholder": "Lägg till en ny anteckning...", + "noNotes": "Inga anteckningar tillgängliga för detta larm", + "noSearchResults": "Inga anteckningar matchar din sökning", + "searchPlaceholder": "Sök anteckningar...", + "title": "Larmanteckningar" + }, + "call_detail": { + "address": "Adress", + "call_location": "Larmplats", + "close_call": "Avsluta larm", + "close_call_confirmation": "Är du säker på att du vill avsluta detta larm?", + "close_call_error": "Det gick inte att avsluta larmet", + "close_call_note": "Avslutningsanteckning", + "close_call_note_placeholder": "Ange en anteckning om avslutningen av larmet", + "close_call_success": "Larmet avslutades", + "close_call_type": "Avslutningstyp", + "close_call_type_placeholder": "Välj avslutningstyp", + "close_call_type_required": "Välj en avslutningstyp", + "close_call_types": { + "cancelled": "Avbruten", + "closed": "Avslutad", + "false_alarm": "Falskt larm", + "founded": "Grundad", + "minor": "Mindre", + "transferred": "Överlämnad", + "unfounded": "Ogrundat" + }, + "contact_email": "E-post", + "contact_info": "Kontaktuppgifter", + "contact_name": "Kontaktnamn", + "contact_phone": "Telefon", + "edit_call": "Redigera larm", + "external_id": "Externt ID", + "failed_to_open_maps": "Det gick inte att öppna kartprogrammet", + "files": { + "add_file": "Lägg till fil", + "button": "Filer", + "empty": "Inga filer tillgängliga", + "empty_description": "Lägg till filer i ditt larm för att underlätta dokumentation och kommunikation", + "error": "Fel vid hämtning av filer", + "file_name": "Filnamn", + "name_required": "Ange ett namn för filen", + "no_files": "Inga filer tillgängliga", + "no_files_description": "Lägg till filer i ditt larm för att underlätta dokumentation och kommunikation", + "open_error": "Fel vid öppning av fil", + "select_error": "Fel vid val av fil", + "select_file": "Välj fil", + "share_error": "Fel vid delning av fil", + "title": "Larmfiler", + "upload": "Ladda upp", + "upload_error": "Fel vid uppladdning av fil", + "uploading": "Laddar upp..." + }, + "group": "Grupp", + "images": "Bilder", + "loading": "Läser in larmdetaljer...", + "nature": "Art", + "no_additional_info": "Ingen ytterligare information tillgänglig", + "no_contact_info": "Inga kontaktuppgifter tillgängliga", + "no_dispatched": "Inga enheter dirigerade till detta larm", + "no_location": "Ingen platsdata tillgänglig", + "no_location_for_routing": "Ingen platsdata tillgänglig för navigering", + "no_protocols": "Inga protokoll kopplade till detta larm", + "no_timeline": "Inga tidslinjehändelser tillgängliga", + "not_available": "N/A", + "not_found": "Larmet hittades inte", + "note": "Anteckning", + "notes": "Anteckningar", + "priority": "Prioritet", + "reference_id": "Referens-ID", + "status": "Status", + "tabs": { + "contact": "Kontakt", + "dispatched": "Dirigerade", + "info": "Info", + "protocols": "Protokoll", + "timeline": "Aktivitet" + }, + "timestamp": "Tidsstämpel", + "title": "Larmdetaljer", + "type": "Typ", + "unit": "Enhet", + "update_call_error": "Det gick inte att uppdatera larmet", + "update_call_success": "Larmet uppdaterades" + }, + "calls": { + "address": "Adress", + "address_found": "Adressen hittades och platsen uppdaterades", + "address_not_found": "Adressen hittades inte, prova en annan adress", + "address_placeholder": "Ange larmets adress", + "address_required": "Ange en adress att söka efter", + "call_details": "Larmdetaljer", + "call_location": "Larmplats", + "call_number": "Larmnummer", + "call_priority": "Larmprioritet", + "confirm_deselect_message": "Är du säker på att du vill avmarkera det aktiva larmet?", + "confirm_deselect_title": "Avmarkera aktivt larm", + "contact_info": "Kontaktuppgifter", + "contact_info_placeholder": "Ange kontaktens information", + "contact_name": "Kontaktnamn", + "contact_name_placeholder": "Ange kontaktens namn", + "contact_phone": "Kontakttelefon", + "contact_phone_placeholder": "Ange kontaktens telefonnummer", + "coordinates": "GPS-koordinater", + "coordinates_found": "Koordinaterna hittades och adressen uppdaterades", + "coordinates_geocoding_error": "Det gick inte att hämta adressen för koordinaterna, men platsen har angetts på kartan", + "coordinates_invalid_format": "Ogiltigt koordinatformat. Använd formatet: latitud, longitud", + "coordinates_no_address": "Koordinaterna angavs på kartan, men ingen adress hittades", + "coordinates_out_of_range": "Koordinaterna är utanför intervallet. Latitud måste vara -90 till 90, longitud -180 till 180", + "coordinates_placeholder": "Ange GPS-koordinater (t.ex. 37.7749, -122.4194)", + "coordinates_required": "Ange koordinater att söka efter", + "create": "Skapa", + "create_error": "Fel vid skapande av larm", + "create_new_call": "Skapa nytt larm", + "create_success": "Larmet skapades", + "description": "Beskrivning", + "description_placeholder": "Ange larmets beskrivning", + "deselect": "Avmarkera", + "directions": "Vägbeskrivning", + "dispatch_to": "Dirigera till", + "dispatch_to_everyone": "Dirigera till all tillgänglig personal", + "edit_call": "Redigera larm", + "edit_call_description": "Uppdatera larminformation", + "everyone": "Alla", + "files": { + "no_files": "Inga filer tillgängliga", + "no_files_description": "Inga filer har lagts till i detta larm ännu", + "title": "Larmfiler" + }, + "geocoding_error": "Det gick inte att söka efter adressen, försök igen", + "groups": "Grupper", + "loading": "Läser in larm...", + "loading_calls": "Läser in larm...", + "name": "Namn", + "name_placeholder": "Ange larmets namn", + "nature": "Art", + "nature_placeholder": "Ange larmets art", + "new_call": "Nytt larm", + "new_call_description": "Skapa ett nytt larm för att starta en ny händelse", + "no_call_selected": "Inget aktivt larm", + "no_call_selected_info": "Denna enhet svarar för närvarande inte på några larm", + "no_calls": "Inga aktiva larm", + "no_calls_available": "Inga larm tillgängliga", + "no_calls_description": "Inga aktiva larm hittades. Välj ett aktivt larm för att visa detaljer.", + "no_location_message": "Det här larmet har ingen platsdata tillgänglig för navigering.", + "no_location_title": "Ingen plats tillgänglig", + "no_open_calls": "Inga öppna larm tillgängliga", + "note": "Anteckning", + "note_placeholder": "Ange larmets anteckning", + "personnel": "Personal", + "plus_code": "Plus-kod", + "plus_code_found": "Plus-koden hittades och platsen uppdaterades", + "plus_code_geocoding_error": "Det gick inte att söka efter plus-koden, försök igen", + "plus_code_not_found": "Plus-koden hittades inte, prova en annan plus-kod", + "plus_code_placeholder": "Ange plus-kod (t.ex. 849VCWC8+R9)", + "plus_code_required": "Ange en plus-kod att söka efter", + "priority": "Prioritet", + "priority_placeholder": "Välj larmets prioritet", + "roles": "Roller", + "search": "Sök larm...", + "select_active_call": "Välj aktivt larm", + "select_address": "Välj adress", + "select_address_placeholder": "Välj larmets adress", + "select_description": "Välj beskrivning", + "select_dispatch_recipients": "Välj dirigeringsmottagare", + "select_location": "Välj plats på kartan", + "select_name": "Välj namn", + "select_nature": "Välj art", + "select_nature_placeholder": "Välj larmets art", + "select_priority": "Välj prioritet", + "select_priority_placeholder": "Välj larmets prioritet", + "select_recipients": "Välj mottagare", + "select_type": "Välj typ", + "selected": "vald", + "title": "Larm", + "type": "Typ", + "units": "Enheter", + "users": "Användare", + "viewNotes": "Anteckningar", + "view_details": "Visa detaljer", + "what3words": "what3words", + "what3words_found": "what3words-adressen hittades och platsen uppdaterades", + "what3words_geocoding_error": "Det gick inte att söka efter what3words-adressen, försök igen", + "what3words_invalid_format": "Ogiltigt what3words-format. Använd formatet: ord.ord.ord", + "what3words_not_found": "what3words-adressen hittades inte, prova en annan adress", + "what3words_placeholder": "Ange what3words-adress (t.ex. fylld.antal.tvål)", + "what3words_required": "Ange en what3words-adress att söka efter" + }, + "common": { + "active": "Aktiv", + "add": "Lägg till", + "all": "Alla", + "back": "Tillbaka", + "cancel": "Avbryt", + "close": "Stäng", + "confirm": "Bekräfta", + "delete": "Ta bort", + "deleting": "Tar bort...", + "discard": "Kassera", + "done": "Klar", + "edit": "Redigera", + "error": "Fel", + "errorOccurred": "Ett fel inträffade", + "get_my_location": "Hämta min plats", + "loading": "Läser in", + "loading_address": "Läser in adress...", + "navigation": "Navigering", + "next": "Nästa", + "noActiveUnit": "Ingen aktiv enhet", + "noActiveUnitDescription": "Välj en aktiv enhet för att se tillgängliga statusar", + "no_address_found": "Ingen adress hittades", + "no_data_available": "Ingen data tillgänglig", + "no_location": "Ingen plats tillgänglig", + "no_results_found": "Inga resultat hittades", + "no_unit_selected": "Ingen enhet vald", + "of": "av", + "ok": "OK", + "optional": "Valfritt", + "permission_denied": "Åtkomst nekad", + "previous": "Föregående", + "refresh": "Uppdatera", + "retry": "Försök igen", + "route": "Rutt", + "save": "Spara", + "search": "Sök", + "set_location": "Ange plats", + "step": "Steg", + "submit": "Skicka in", + "submitting": "Skickar in...", + "success": "Lyckades", + "unknown_department": "Okänd avdelning", + "unknown_user": "Okänd användare", + "uploading": "Laddar upp..." + }, + "contacts": { + "add": "Lägg till kontakt", + "addedBy": "Tillagd av", + "addedOn": "Tillagd den", + "additionalInformation": "Ytterligare information", + "address": "Adress", + "bluesky": "Bluesky", + "cancel": "Avbryt", + "cellPhone": "Mobiltelefon", + "city": "Stad", + "cityState": "Stad och region", + "cityStateZip": "Stad, region, postnummer", + "company": "Företag", + "contactInformation": "Kontaktinformation", + "contactNotes": "Kontaktanteckningar", + "contactNotesEmpty": "Inga anteckningar hittades för denna kontakt", + "contactNotesEmptyDescription": "Anteckningar som läggs till för denna kontakt visas här", + "contactNotesExpired": "Denna anteckning har gått ut", + "contactNotesLoading": "Läser in kontaktanteckningar...", + "contactType": "Kontakttyp", + "countryId": "Land-ID", + "delete": "Ta bort", + "deleteConfirm": "Är du säker på att du vill ta bort den här kontakten?", + "deleteSuccess": "Kontakten togs bort", + "description": "Lägg till och hantera dina kontakter", + "descriptionLabel": "Beskrivning", + "details": "Kontaktdetaljer", + "detailsTab": "Detaljer", + "edit": "Redigera kontakt", + "editedBy": "Redigerad av", + "editedOn": "Redigerad den", + "email": "E-post", + "empty": "Inga kontakter hittades", + "emptyDescription": "Lägg till kontakter för att hantera dina personliga och affärsmässiga förbindelser", + "entranceCoordinates": "Entrékoordinater", + "errorTitle": "Fel", + "exitCoordinates": "Utfartskoordinater", + "expires": "Upphör", + "facebook": "Facebook", + "faxPhone": "Fax", + "formError": "Rätta felen i formuläret", + "homePhone": "Hemtelefon", + "identification": "Identifiering", + "important": "Markera som viktig", + "instagram": "Instagram", + "internal": "Intern", + "invalidEmail": "Ogiltig e-postadress", + "linkedin": "LinkedIn", + "locationCoordinates": "Platskoordinater", + "locationInformation": "Platsinformation", + "mastodon": "Mastodon", + "mobile": "Mobil", + "name": "Namn", + "noteAlert": "Avisering", + "noteType": "Typ", + "notes": "Anteckningar", + "notesTab": "Anteckningar", + "officePhone": "Kontorstelefon", + "openAppError": "Det gick inte att öppna {{action}}-appen", + "openLinkFailed": "Det gick inte att öppna {{action}}-länken:", + "otherInfo": "Övrig information", + "person": "Person", + "phone": "Telefon", + "public": "Offentlig", + "required": "Obligatoriskt", + "save": "Spara kontakt", + "saveSuccess": "Kontakten sparades", + "search": "Sök kontakter...", + "shouldAlert": "Ska aviseras", + "socialMediaWeb": "Sociala medier och webb", + "state": "Region", + "stateId": "Region-ID", + "systemInformation": "Systeminformation", + "tabs": { + "details": "Detaljer", + "notes": "Anteckningar" + }, + "threads": "Threads", + "title": "Kontakter", + "twitter": "Twitter", + "visibility": "Synlighet", + "website": "Webbplats", + "zip": "Postnummer" + }, + "form": { + "invalid_url": "Ange en giltig URL som börjar med http:// eller https://", + "required": "Det här fältet är obligatoriskt" + }, + "home": { + "error": { + "no_user_id": "Användar-ID är inte tillgängligt" + }, + "sidebar": { + "audio": "Ljud", + "ptt": "PTT" + }, + "staffing": { + "add_note": "Lägg till anteckning", + "confirm_staffing": "Bekräfta bemanning: {{staffing}}", + "no_options_available": "Inga bemanningsalternativ tillgängliga", + "no_staffing_options": "Inga bemanningsalternativ tillgängliga", + "note": "Anteckning", + "note_placeholder": "Ange en anteckning (valfritt)...", + "review_and_confirm": "Granska och bekräfta", + "select_staffing_level": "Välj bemanningsnivå", + "select_staffing_level_description": "Välj din aktuella bemanningsstatus", + "selected_staffing": "Vald bemanning", + "set_staffing": "Ange personalens bemanning", + "staffing_level": "Bemanningsnivå", + "update_failed": "Det gick inte att uppdatera bemanningen", + "updated_successfully": "Bemanningen uppdaterades" + }, + "stats": { + "open_calls": "Öppna larm", + "personnel_in_service": "Personal i tjänst", + "units_in_service": "Enheter i tjänst" + }, + "status": { + "no_options_available": "Inga statusalternativ tillgängliga", + "update_failed": "Det gick inte att uppdatera statusen", + "updated_successfully": "Statusen uppdaterades" + }, + "tabs": { + "dashboard": "Instrumentpanel", + "map": "Karta", + "staffing": "Bemanning", + "status": "Status" + }, + "user": { + "my_staffing": "Min bemanning", + "my_status": "Min status", + "staffing_unknown": "Okänd bemanning", + "status_unknown": "Okänd status", + "updated": "Uppdaterad" + } + }, + "livekit": { + "audio_devices": "Ljudenheter", + "audio_settings": "Ljudinställningar", + "connected_to_room": "Ansluten till kanal", + "connecting": "Ansluter...", + "disconnect": "Koppla från", + "double_click_action": "Dubbelklicksåtgärd", + "headset_button_ptt": "Headset-knapp PTT", + "headset_monitoring_active": "Headset-övervakning aktiv", + "headset_monitoring_inactive": "Headset-övervakning inaktiv", + "headset_ptt_description": "Använd AirPods- eller Bluetooth-öronsnäckans knapp för att stänga av/aktivera mikrofon", + "headset_ptt_disabled": "Headset PTT inaktiverat", + "headset_ptt_enabled": "Headset PTT aktiverat", + "join": "Gå med", + "long_press_action": "Långtrycksåtgärd", + "microphone": "Mikrofon", + "mute": "Stäng av mikrofon", + "no_action": "Ingen åtgärd", + "no_rooms_available": "Inga röstkanaler tillgängliga", + "play_pause_action": "Spela/pausa-knappåtgärd", + "ptt_mode": "PTT-läge", + "ptt_mode_disabled": "Inaktiverat", + "ptt_mode_push": "Push-to-Talk (håll in för att prata)", + "ptt_mode_toggle": "Växla (tryck för att byta tystläge)", + "sound_feedback": "Ljudåterkoppling", + "speaker": "Högtalare", + "speaking": "Talar", + "tap_to_toggle_mute": "Tryck på headset-knappen för att byta tystläge", + "title": "Röstkanaler", + "toggle_mute": "Byt tystläge", + "unmute": "Aktivera mikrofon" + }, + "loading": { + "loading": "Läser in...", + "loadingData": "Läser in data...", + "pleaseWait": "Vänta", + "processingRequest": "Behandlar din begäran..." + }, + "login": { + "change_server_url": "Ändra server-URL", + "errorModal": { + "confirmButton": "OK", + "message": "Kontrollera ditt användarnamn och lösenord och försök igen.", + "title": "Inloggningen misslyckades" + }, + "login": "Logga in", + "login_button": "Logga in", + "login_button_description": "Logga in på ditt konto för att fortsätta", + "login_button_error": "Fel vid inloggning", + "login_button_loading": "Loggar in...", + "login_button_success": "Inloggningen lyckades", + "password": "Lösenord", + "password_incorrect": "Lösenordet var felaktigt", + "password_placeholder": "Ange ditt lösenord", + "select_language": "Välj språk", + "sso": { + "back": "Tillbaka", + "change_department": "Byt användarnamn", + "continue_button": "Fortsätt", + "department_code_label": "Avdelningskod", + "department_code_placeholder": "Ange avdelningskod", + "department_code_required": "Avdelningskod krävs", + "department_description": "Ange din avdelningskod för att logga in", + "department_id_invalid": "Avdelnings-ID måste vara ett nummer", + "department_id_label": "Avdelnings-ID (valfritt)", + "department_id_placeholder": "Ange avdelnings-ID om känt", + "department_not_found": "Avdelningen hittades inte. Kontrollera koden och försök igen.", + "login_with_sso_button": "Logga in med SSO", + "looking_up": "Söker upp konto...", + "lookup_network_error": "Det gick inte att nå servern. Kontrollera din anslutning och försök igen.", + "or_sign_in_with_password": "— eller logga in med lösenord —", + "page_title": "Logga in med SSO", + "sign_in_with_sso": "Logga in med SSO", + "sso_not_enabled": "SSO är inte aktiverat för detta konto. Använd ditt användarnamn och lösenord.", + "user_description": "Ange ditt Resgrid-användarnamn eller e-post för att logga in med SSO", + "user_not_found": "Kontot hittades inte. Kontrollera ditt användarnamn och försök igen.", + "username_label": "Användarnamn eller e-post", + "username_placeholder": "Ange ditt användarnamn eller e-post", + "username_required": "Användarnamn krävs" + }, + "title": "Inloggning", + "username": "Användarnamn", + "username_placeholder": "Ange ditt användarnamn" + }, + "map": { + "call_set_as_current": "Larmet angavs som aktuellt larm", + "failed_to_open_maps": "Det gick inte att öppna kartprogrammet", + "failed_to_set_current_call": "Det gick inte att ange larmet som aktuellt larm", + "no_location_for_routing": "Ingen platsdata tillgänglig för navigering", + "pin_color": "Nålfärg", + "recenter_map": "Centrera om kartan", + "set_as_current_call": "Ange som aktuellt larm", + "view_call_details": "Visa larmdetaljer" + }, + "maps": { + "contact_administrator": "Kontakta din administratör för att konfigurera karttjänster.", + "failed_to_load": "Det gick inte att läsa in kartan. Kontrollera din internetanslutning.", + "mapbox_not_configured": "Mapbox är inte konfigurerat. Kontakta din administratör." + }, + "messages": { + "all_messages": "Alla meddelanden", + "compose": "Skriv", + "compose_new_message": "Nytt meddelande", + "date_unknown": "Datum okänt", + "delete_confirmation_message": "Är du säker på att du vill ta bort {{count}} meddelande(n)?", + "delete_confirmation_title": "Ta bort meddelanden", + "delete_single_confirmation_message": "Är du säker på att du vill ta bort det här meddelandet?", + "enter_expiration_date": "Ange utgångsdatum", + "enter_message_body": "Ange ditt meddelande", + "enter_note": "Ange en valfri anteckning", + "enter_response": "Ange ditt svar", + "enter_subject": "Ange meddelandeämne", + "error": "Fel", + "expiration_date_format": "Format: ÅÅÅÅ-MM-DD TT:MM", + "expiration_date_optional": "Utgångsdatum (valfritt)", + "expired": "Utgånget", + "expires_on": "Upphör den", + "from": "Från", + "inbox": "Inkorg", + "message_body": "Meddelandetext", + "message_content": "Meddelandeinnehåll", + "message_type": "Meddelandetyp", + "no_content": "Inget innehåll", + "no_messages": "Inga meddelanden hittades", + "no_messages_description": "Skicka ditt första meddelande för att komma igång", + "no_subject": "Inget ämne", + "note_optional": "Anteckning (valfritt)", + "people": "Personer", + "recipients": "Mottagare", + "recipients_count": "{{count}} mottagare", + "recipients_selected": "{{count}} mottagare valda", + "respond_failed": "Det gick inte att svara på meddelandet", + "respond_to_message": "Svara på meddelande", + "responded": "Besvarad", + "responded_on": "Besvarad den", + "responding": "Svarar...", + "response": "Svar", + "response_required": "Svar krävs", + "search_placeholder": "Sök meddelanden...", + "select_all": "Välj alla", + "select_message": "Välj meddelande", + "select_message_type": "Välj meddelandetyp", + "select_recipients": "Välj mottagare", + "selected_count": "{{count}} valda", + "send": "Skicka", + "send_first_message": "Skicka första meddelandet", + "send_response": "Skicka svar", + "sending": "Skickar...", + "sent": "Skickat", + "showing_count": "Visar {{count}} meddelanden", + "subject": "Ämne", + "title": "Meddelanden", + "types": { + "alert": "Avisering", + "message": "Meddelande", + "poll": "Omröstning" + }, + "unsaved_changes": "Osparade ändringar", + "unsaved_changes_message": "Du har osparade ändringar. Är du säker på att du vill kassera dem?", + "validation": { + "body_required": "Meddelandetext krävs", + "recipients_required": "Minst en mottagare krävs", + "subject_required": "Ämne krävs" + } + }, + "notes": { + "actions": { + "add": "Lägg till anteckning", + "delete_confirm": "Är du säker på att du vill ta bort den här anteckningen?" + }, + "details": { + "close": "Stäng", + "created": "Skapad", + "delete": "Ta bort", + "edit": "Redigera", + "tags": "Taggar", + "title": "Anteckningsdetaljer", + "updated": "Uppdaterad" + }, + "empty": "Inga anteckningar hittades", + "emptyDescription": "Inga anteckningar har skapats för din avdelning ännu.", + "search": "Sök anteckningar...", + "title": "Anteckningar" + }, + "notifications": { + "bulkDeleteError": "Det gick inte att ta bort aviseringar", + "bulkDeleteSuccess": "{{count}} avisering(ar) borttagen(a)", + "confirmDelete": { + "message": "Är du säker på att du vill ta bort {{count}} avisering(ar)? Den här åtgärden kan inte ångras.", + "title": "Bekräfta borttagning" + }, + "deleteError": "Det gick inte att ta bort aviseringen", + "deleteSuccess": "Aviseringen togs bort", + "deselectAll": "Avmarkera alla", + "empty": "Inga uppdateringar tillgängliga", + "loadError": "Det gick inte att läsa in aviseringar", + "selectAll": "Välj alla", + "selectedCount": "{{count}} valda", + "title": "Aviseringar" + }, + "onboarding": { + "message": "Välkommen till Resgrid Responder" + }, + "personnel": { + "contactInformation": "Kontaktinformation", + "currentStatus": "Aktuell status", + "empty": "Ingen personal hittades", + "emptyDescription": "Ingen personal matchar dina sökkriterier eller ingen personaldata är tillgänglig.", + "filter": { + "description": "Välj filter för att förfina personallistan. Ändringar tillämpas automatiskt.", + "empty": "Inga filteralternativ tillgängliga", + "emptyDescription": "Filteralternativ visas här när de är tillgängliga.", + "title": "Filtrera personal" + }, + "group": "Grupp", + "id": "ID", + "roles": "Roller", + "search": "Sök personal...", + "staffing": "Bemanning", + "status": { + "add_note": "Lägg till anteckning", + "calls_tab": "Larm", + "confirm_status": "Bekräfta status: {{status}}", + "custom_responding_to": "Anpassad svar till", + "general_status": "Allmän statusuppdatering", + "loading_stations": "Läser in stationer...", + "no_destination": "Ingen destination", + "no_stations_available": "Inga stationer tillgängliga", + "note": "Anteckning", + "note_placeholder": "Ange en anteckning (valfritt)...", + "responding_to": "Svarar till", + "responding_to_placeholder": "Ange vad du svarar till...", + "review_and_confirm": "Granska och bekräfta", + "select_call_to_respond_to": "Välj larm att svara till", + "select_destination": "Välj destination", + "select_responding_to": "Ange status: {{status}}", + "selected_call": "Valt larm", + "selected_destination": "Vald destination", + "set_status": "Ange personalstatus", + "stations_tab": "Stationer", + "status": "Status" + } + }, + "protocols": { + "details": { + "close": "Stäng", + "code": "Kod", + "created": "Skapad", + "title": "Protokolldetaljer", + "updated": "Uppdaterad" + }, + "empty": "Inga protokoll hittades", + "emptyDescription": "Inga protokoll har skapats för din avdelning ännu.", + "search": "Sök protokoll...", + "title": "Protokoll" + }, + "roles": { + "modal": { + "title": "Rolltilldelningar för enhet" + }, + "selectUser": "Välj användare", + "status": "{{active}} av {{total}} roller aktiva", + "tap_to_manage": "Tryck för att hantera roller", + "unassigned": "Otilldelad" + }, + "settings": { + "about": "Om", + "account": "Konto", + "active_unit": "Aktiv enhet", + "app_info": "Appinformation", + "app_name": "Appnamn", + "arabic": "Arabiska", + "audio_device_selection": { + "bluetooth_device": "Bluetooth-enhet", + "current_selection": "Aktuellt val", + "microphone": "Mikrofon", + "no_microphones_available": "Inga mikrofoner tillgängliga", + "no_speakers_available": "Inga högtalare tillgängliga", + "none_selected": "Inget valt", + "speaker": "Högtalare", + "speaker_device": "Högtalare", + "title": "Val av ljudenhet", + "unavailable": "Ej tillgänglig", + "wired_device": "Kabelansluten enhet" + }, + "background_geolocation": "Bakgrundsgeolokalisering", + "background_geolocation_warning": "Den här funktionen gör att appen kan spåra din plats i bakgrunden. Det hjälper till med koordinering av räddningsinsatser men kan påverka batteritiden.", + "background_location": "Bakgrundsplats", + "contact_us": "Kontakta oss", + "english": "Engelska", + "enter_password": "Ange ditt lösenord", + "enter_server_url": "Ange Resgrid API URL (t.ex. https://api.resgrid.com)", + "enter_username": "Ange ditt användarnamn", + "environment": "Miljö", + "french": "Franska", + "general": "Allmänt", + "generale": "Allmänt", + "german": "Tyska", + "github": "Github", + "help_center": "Hjälpcenter", + "italian": "Italienska", + "keep_alive": "Håll aktiv", + "keep_alive_warning": "Varning: Aktivering av håll aktiv förhindrar att din enhet försätts i viloläge och kan öka batteritömningen avsevärt.", + "keep_screen_on": "Håll skärmen aktiv", + "language": "Språk", + "links": "Länkar", + "login_info": "Inloggningsinformation", + "logout": "Logga ut", + "logout_confirm_cancel": "Avbryt", + "logout_confirm_message": "Är du säker på att du vill logga ut? Alla lokala data, cachade värden och sparade inställningar rensas från appen.", + "logout_confirm_title": "Bekräfta utloggning", + "logout_confirm_yes": "Ja, logga ut", + "more": "Mer", + "no_units_available": "Inga enheter tillgängliga", + "none_selected": "Inget valt", + "notifications": "Push-aviseringar", + "notifications_badge_overflow": "99+", + "notifications_button": "Aviseringar", + "notifications_description": "Aktivera aviseringar för att ta emot larm och uppdateringar", + "notifications_enable": "Aktivera aviseringar", + "password": "Lösenord", + "polish": "Polska", + "preferences": "Inställningar", + "privacy": "Integritetspolicy", + "privacy_policy": "Integritetspolicy", + "rate": "Betygsätt", + "realtime_geolocation": "Realtidsgeolokalisering", + "realtime_geolocation_warning": "Den här funktionen ansluter till realtidsplatshubben för att ta emot platsuppdateringar från annan personal och enheter. Det kräver en aktiv nätverksanslutning.", + "select_unit": "Välj enhet", + "server": "Server", + "server_url": "Server-URL", + "server_url_note": "Obs: Det här är URL:en till Resgrid API. Den används för att ansluta till Resgrid-servern. Inkludera inte /api/v4 i URL:en eller ett avslutande snedstreck.", + "set_active_unit": "Ange aktiv enhet", + "share": "Dela", + "spanish": "Spanska", + "status_page": "Systemstatus", + "support": "Support", + "support_us": "Stöd oss", + "swedish": "Svenska", + "terms": "Användarvillkor", + "theme": { + "dark": "Mörkt", + "light": "Ljust", + "system": "System", + "title": "Tema" + }, + "title": "Inställningar", + "ukrainian": "Ukrainska", + "unit_selection": "Enhetval", + "username": "Användarnamn", + "version": "Version", + "website": "Webbplats" + }, + "shifts": { + "all_shifts": "Alla skift", + "already_signed_up": "Redan anmäld", + "assigned": "Tilldelad", + "automatic": "Automatisk", + "available": "Tillgänglig", + "calendar": "Kalender", + "current_signups": "Aktuella anmälningar", + "day_details": "Skiftdagsdetaljer", + "details": "Skiftdetaljer", + "end_time": "Sluttid", + "groups": "Grupper", + "in_shift": "I skift", + "legend": "Förklaring", + "loading": "Läser in skift...", + "loading_details": "Läser in skiftdetaljer...", + "loading_signup": "Behandlar...", + "manual": "Manuell", + "needed": "Behövs", + "needs": "Behov", + "next_day": "Nästa dag", + "no_positions_available": "Inga positioner tillgängliga för anmälan", + "no_shifts": "Inga skift tillgängliga", + "no_shifts_description": "Kontakta din chef om du anser att du borde ha skifttilldelningar", + "no_shifts_today": "Inga skift schemalagda för idag", + "no_shifts_today_description": "Kontrollera senare eller kontakta din chef för skifttilldelningar", + "no_signups_yet": "Inga anmälningar ännu", + "optional": "Valfritt", + "personnel_count": "Personalantal", + "position_needs": "Positionsbehov", + "required": "Obligatoriskt", + "roles": "Roller", + "scheduled_for": "Schemalagd för", + "search_placeholder": "Sök skift...", + "shift_code": "Skiftkod", + "shift_day": "Skiftdag", + "shift_name": "Skiftnamn", + "shift_type": { + "emergency": "Räddningsskift", + "label": "Skifttyp", + "regular": "Ordinarie", + "training": "Utbildning", + "unknown": "Okänd" + }, + "signed_up": "Anmäld", + "signup": "Anmäl dig", + "signup_error": "Det gick inte att anmäla sig till skiftet", + "signup_status": "Anmälningsstatus", + "signup_success": "Anmälan till skiftet lyckades", + "signups": "Anmälningar", + "start_time": "Starttid", + "today": "Idag", + "todays_shifts": "Dagens skift", + "type_emergency": "Räddningsskift", + "type_regular": "Ordinarie", + "type_training": "Utbildning", + "type_unknown": "Okänd", + "unknown": "Okänd", + "upcoming_shift_days": "Kommande skiftdagar", + "withdraw": "Avregistrera", + "withdraw_error": "Det gick inte att avregistrera sig från skiftet", + "withdraw_success": "Avregistreringen från skiftet lyckades", + "you": "Du", + "you_are_signed_up": "Du är anmäld till det här skiftet" + }, + "sidebar": { + "audio": "Ström", + "ptt": "Röst" + }, + "tabs": { + "calendar": "Kalender", + "calls": "Larm", + "contacts": "Kontakter", + "home": "Hem", + "map": "Karta", + "messages": "Meddelanden", + "notes": "Anteckningar", + "personnel": "Personal", + "protocols": "Protokoll", + "settings": "Inställningar", + "shifts": "Skift", + "units": "Enheter" + }, + "units": { + "coordinates": "Koordinater", + "empty": "Inga enheter hittades", + "emptyDescription": "Inga enheter är tillgängliga i din avdelning", + "features": "Funktioner", + "fourWheelDrive": "4WD", + "group": "Grupp", + "lastUpdate": "Senast uppdaterad", + "location": "Plats", + "maps_error": "Det gick inte att öppna kartor", + "notes": "Anteckningar", + "plateNumber": "Registreringsnummer", + "search": "Sök enheter...", + "specialPermit": "Specialtillstånd", + "tapToOpenMaps": "Tryck för att öppna i kartor", + "title": "Enheter", + "vehicleInfo": "Fordonsinformation", + "vin": "VIN" + }, + "welcome": "Välkommen till Resgrid Responder" +} diff --git a/src/translations/uk.json b/src/translations/uk.json new file mode 100644 index 0000000..715c881 --- /dev/null +++ b/src/translations/uk.json @@ -0,0 +1,978 @@ +{ + "app": { + "title": "Resgrid Responder" + }, + "audio_streams": { + "buffering": "Буферизація", + "buffering_stream": "Буферизація аудіопотоку...", + "close": "Закрити", + "currently_playing": "Зараз відтворюється: {{streamName}}", + "error_loading_stream": "Не вдалося завантажити аудіопотік", + "loading": "Завантаження", + "loading_stream": "Завантаження аудіопотоку...", + "loading_streams": "Завантаження аудіопотоків...", + "name": "Назва", + "no_stream_playing": "Наразі жоден аудіопотік не відтворюється", + "none": "Немає", + "playing": "Відтворення", + "refresh_streams": "Оновити потоки", + "select_placeholder": "Виберіть аудіопотік", + "select_stream": "Вибрати аудіопотік", + "status": "Статус", + "stopped": "Зупинено", + "stream_info": "Інформація про потік", + "stream_selected": "Вибрано: {{streamName}}", + "title": "Аудіопотоки", + "type": "Тип" + }, + "bluetooth": { + "audio_device": "BT Гарнітура", + "available_devices": "Доступні пристрої", + "bluetooth_not_ready": "Bluetooth {{state}}. Будь ласка, увімкніть Bluetooth.", + "clear": "Очистити", + "connected": "Підключено", + "current_selection": "Поточний вибір", + "no_device_selected": "Пристрій не вибрано", + "no_devices_found": "Аудіопристрої Bluetooth не знайдено", + "not_connected": "Не підключено", + "scan": "Сканувати", + "scan_again": "Сканувати знову", + "scan_error_message": "Неможливо сканувати пристрої Bluetooth", + "scan_error_title": "Помилка сканування", + "scanning": "Сканування...", + "select_device": "Вибрати пристрій Bluetooth", + "selected": "Вибрано", + "selection_error_message": "Неможливо зберегти бажаний пристрій", + "selection_error_title": "Помилка вибору", + "supports_mic_control": "Керування мікрофоном", + "tap_scan_to_find_devices": "Натисніть «Сканувати», щоб знайти аудіопристрої Bluetooth", + "unknown_device": "Невідомий пристрій" + }, + "calendar": { + "allDay": "Весь день", + "attendanceUpdated": { + "signedUp": "Вас успішно зареєстровано на цю подію.", + "title": "Відвідуваність оновлено", + "unsignedUp": "Вас видалено з цієї події." + }, + "attendees": { + "title": "Учасники" + }, + "attendeesCount": "{{count}} учасник", + "attendeesCount_plural": "{{count}} учасників", + "confirmSignup": "Підтвердити", + "confirmUnsignup": { + "message": "Ви впевнені, що хочете скасувати свою участь у цій події?", + "title": "Підтвердити скасування" + }, + "createdBy": "Створено", + "daysOfWeek": { + "fri": "Пт", + "mon": "Пн", + "sat": "Сб", + "sun": "Нд", + "thu": "Чт", + "tue": "Вт", + "wed": "Ср" + }, + "description": "Опис", + "error": { + "attendanceUpdate": "Не вдалося оновити відвідуваність. Будь ласка, спробуйте ще раз.", + "title": "Помилка" + }, + "eventsCount": "{{count}} подія", + "eventsCount_plural": "{{count}} подій", + "loading": { + "date": "Завантаження подій для вибраної дати...", + "today": "Завантаження сьогоднішніх подій...", + "upcoming": "Завантаження майбутніх подій..." + }, + "noEvents": "Заплановані події відсутні", + "optional": "Необов'язково", + "required": "Обов'язково", + "selectDate": "Виберіть дату для перегляду подій", + "selectedDate": { + "empty": "На цю дату події не заплановано.", + "title": "Події на {{date}}" + }, + "signedUp": "Зареєстровано", + "signup": { + "button": "Зареєструватися", + "notePlaceholder": "Введіть примітку тут...", + "notePrompt": "Додати примітку (необов'язково):", + "title": "Реєстрація на подію" + }, + "signupAvailable": "Реєстрація доступна", + "tabs": { + "calendar": "Календар", + "today": "Сьогодні", + "upcoming": "Майбутні" + }, + "tapToSignUp": "Натисніть, щоб зареєструватися", + "title": "Календар", + "today": { + "empty": { + "description": "У вас немає запланованих подій на сьогодні.", + "title": "Сьогодні подій немає" + } + }, + "todayButton": "Сьогодні", + "unsignup": "Скасувати участь", + "upcoming": { + "empty": { + "description": "У вас немає запланованих подій протягом наступних 7 днів.", + "title": "Майбутніх подій немає" + } + } + }, + "callImages": { + "add": "Додати фото", + "add_new": "Додати нове фото", + "capture_error": "Помилка під час зйомки фото. Будь ласка, спробуйте ще раз.", + "default_name": "Фото без назви", + "error": "Помилка отримання фото", + "failed_to_load": "Не вдалося завантажити фото", + "image_name": "Назва фото", + "image_note": "Примітка до фото", + "loading": "Завантаження...", + "no_images": "Фото недоступні", + "no_images_description": "Додайте фото до виклику для полегшення документування та комунікації", + "permission_denied_settings": "У доступі відмовлено. Будь ласка, увімкніть доступ у налаштуваннях пристрою.", + "select_error": "Помилка під час вибору фото. Будь ласка, спробуйте ще раз.", + "select_from_gallery": "Вибрати з галереї", + "take_photo": "Зробити фото", + "title": "Фото виклику", + "upload": "Завантажити", + "upload_error": "Не вдалося завантажити фото. Будь ласка, спробуйте ще раз.", + "upload_success": "Фото успішно завантажено" + }, + "callNotes": { + "addNote": "Додати примітку", + "addNoteError": "Не вдалося додати примітку. Будь ласка, спробуйте ще раз.", + "addNotePlaceholder": "Додати нову примітку...", + "noNotes": "Для цього виклику примітки відсутні", + "noSearchResults": "Примітки не відповідають пошуку", + "searchPlaceholder": "Шукати примітки...", + "title": "Примітки до виклику" + }, + "call_detail": { + "address": "Адреса", + "call_location": "Місце виклику", + "close_call": "Закрити виклик", + "close_call_confirmation": "Ви впевнені, що хочете закрити цей виклик?", + "close_call_error": "Не вдалося закрити виклик", + "close_call_note": "Примітка закриття", + "close_call_note_placeholder": "Введіть примітку щодо закриття виклику", + "close_call_success": "Виклик успішно закрито", + "close_call_type": "Тип закриття", + "close_call_type_placeholder": "Вибрати тип закриття", + "close_call_type_required": "Будь ласка, виберіть тип закриття", + "close_call_types": { + "cancelled": "Скасовано", + "closed": "Закрито", + "false_alarm": "Хибна тривога", + "founded": "Підтверджено", + "minor": "Незначний", + "transferred": "Передано", + "unfounded": "Необґрунтовано" + }, + "contact_email": "Електронна пошта", + "contact_info": "Контактна інформація", + "contact_name": "Ім'я контактної особи", + "contact_phone": "Телефон", + "edit_call": "Редагувати виклик", + "external_id": "Зовнішній ідентифікатор", + "failed_to_open_maps": "Не вдалося відкрити програму карт", + "files": { + "add_file": "Додати файл", + "button": "Файли", + "empty": "Файли недоступні", + "empty_description": "Додайте файли до виклику для полегшення документування та комунікації", + "error": "Помилка отримання файлів", + "file_name": "Назва файлу", + "name_required": "Будь ласка, введіть назву файлу", + "no_files": "Файли недоступні", + "no_files_description": "Додайте файли до виклику для полегшення документування та комунікації", + "open_error": "Помилка відкриття файлу", + "select_error": "Помилка вибору файлу", + "select_file": "Вибрати файл", + "share_error": "Помилка поширення файлу", + "title": "Файли виклику", + "upload": "Завантажити", + "upload_error": "Помилка завантаження файлу", + "uploading": "Завантаження..." + }, + "group": "Група", + "images": "Фото", + "loading": "Завантаження деталей виклику...", + "nature": "Характер", + "no_additional_info": "Додаткова інформація відсутня", + "no_contact_info": "Контактна інформація відсутня", + "no_dispatched": "До цього виклику не задіяно жодних підрозділів", + "no_location": "Дані про місцезнаходження відсутні", + "no_location_for_routing": "Дані про місцезнаходження для прокладання маршруту відсутні", + "no_protocols": "До цього виклику протоколи не прикріплено", + "no_timeline": "Події на часовій шкалі відсутні", + "not_available": "Н/Д", + "not_found": "Виклик не знайдено", + "note": "Примітка", + "notes": "Примітки", + "priority": "Пріоритет", + "reference_id": "Ідентифікатор посилання", + "status": "Статус", + "tabs": { + "contact": "Контакт", + "dispatched": "Задіяні", + "info": "Інфо", + "protocols": "Протоколи", + "timeline": "Активність" + }, + "timestamp": "Мітка часу", + "title": "Деталі виклику", + "type": "Тип", + "unit": "Підрозділ", + "update_call_error": "Не вдалося оновити виклик", + "update_call_success": "Виклик успішно оновлено" + }, + "calls": { + "address": "Адреса", + "address_found": "Адресу знайдено та місцезнаходження оновлено", + "address_not_found": "Адресу не знайдено, будь ласка, спробуйте іншу адресу", + "address_placeholder": "Введіть адресу виклику", + "address_required": "Будь ласка, введіть адресу для пошуку", + "call_details": "Деталі виклику", + "call_location": "Місце виклику", + "call_number": "Номер виклику", + "call_priority": "Пріоритет виклику", + "confirm_deselect_message": "Ви впевнені, що хочете зняти вибір з поточного активного виклику?", + "confirm_deselect_title": "Зняти вибір активного виклику", + "contact_info": "Контактна інформація", + "contact_info_placeholder": "Введіть інформацію про контакт", + "contact_name": "Ім'я контактної особи", + "contact_name_placeholder": "Введіть ім'я контактної особи", + "contact_phone": "Телефон контактної особи", + "contact_phone_placeholder": "Введіть телефон контактної особи", + "coordinates": "Координати GPS", + "coordinates_found": "Координати знайдено та адресу оновлено", + "coordinates_geocoding_error": "Не вдалося отримати адресу за координатами, але місцезнаходження встановлено на карті", + "coordinates_invalid_format": "Неправильний формат координат. Будь ласка, використовуйте формат: широта, довгота", + "coordinates_no_address": "Координати встановлено на карті, але адресу не знайдено", + "coordinates_out_of_range": "Координати поза діапазоном. Широта має бути від -90 до 90, довгота від -180 до 180", + "coordinates_placeholder": "Введіть координати GPS (напр. 37.7749, -122.4194)", + "coordinates_required": "Будь ласка, введіть координати для пошуку", + "create": "Створити", + "create_error": "Помилка створення виклику", + "create_new_call": "Створити новий виклик", + "create_success": "Виклик успішно створено", + "description": "Опис", + "description_placeholder": "Введіть опис виклику", + "deselect": "Зняти вибір", + "directions": "Маршрут", + "dispatch_to": "Задіяти до", + "dispatch_to_everyone": "Задіяти весь доступний персонал", + "edit_call": "Редагувати виклик", + "edit_call_description": "Оновити інформацію про виклик", + "everyone": "Усі", + "files": { + "no_files": "Файли недоступні", + "no_files_description": "До цього виклику ще не додано файлів", + "title": "Файли виклику" + }, + "geocoding_error": "Не вдалося знайти адресу, будь ласка, спробуйте ще раз", + "groups": "Групи", + "loading": "Завантаження викликів...", + "loading_calls": "Завантаження викликів...", + "name": "Назва", + "name_placeholder": "Введіть назву виклику", + "nature": "Характер", + "nature_placeholder": "Введіть характер виклику", + "new_call": "Новий виклик", + "new_call_description": "Створіть новий виклик для початку нового інциденту", + "no_call_selected": "Активний виклик відсутній", + "no_call_selected_info": "Цей підрозділ наразі не реагує на жодні виклики", + "no_calls": "Активні виклики відсутні", + "no_calls_available": "Доступні виклики відсутні", + "no_calls_description": "Активні виклики не знайдено. Виберіть активний виклик для перегляду деталей.", + "no_location_message": "Цей виклик не має даних про місцезнаходження для навігації.", + "no_location_title": "Місцезнаходження недоступне", + "no_open_calls": "Відкриті виклики відсутні", + "note": "Примітка", + "note_placeholder": "Введіть примітку до виклику", + "personnel": "Особи", + "plus_code": "Код Plus", + "plus_code_found": "Код Plus знайдено та місцезнаходження оновлено", + "plus_code_geocoding_error": "Не вдалося знайти код Plus, будь ласка, спробуйте ще раз", + "plus_code_not_found": "Код Plus не знайдено, будь ласка, спробуйте інший код Plus", + "plus_code_placeholder": "Введіть код Plus (напр. 849VCWC8+R9)", + "plus_code_required": "Будь ласка, введіть код Plus для пошуку", + "priority": "Пріоритет", + "priority_placeholder": "Вибрати пріоритет виклику", + "roles": "Ролі", + "search": "Шукати виклики...", + "select_active_call": "Вибрати активний виклик", + "select_address": "Вибрати адресу", + "select_address_placeholder": "Вибрати адресу виклику", + "select_description": "Вибрати опис", + "select_dispatch_recipients": "Вибрати одержувачів виклику", + "select_location": "Вибрати місцезнаходження на карті", + "select_name": "Вибрати назву", + "select_nature": "Вибрати характер", + "select_nature_placeholder": "Вибрати характер виклику", + "select_priority": "Вибрати пріоритет", + "select_priority_placeholder": "Вибрати пріоритет виклику", + "select_recipients": "Вибрати одержувачів", + "select_type": "Вибрати тип", + "selected": "вибрано", + "title": "Виклики", + "type": "Тип", + "units": "Підрозділи", + "users": "Користувачі", + "viewNotes": "Примітки", + "view_details": "Переглянути деталі", + "what3words": "what3words", + "what3words_found": "Адресу what3words знайдено та місцезнаходження оновлено", + "what3words_geocoding_error": "Не вдалося знайти адресу what3words, будь ласка, спробуйте ще раз", + "what3words_invalid_format": "Неправильний формат what3words. Будь ласка, використовуйте формат: слово.слово.слово", + "what3words_not_found": "Адресу what3words не знайдено, будь ласка, спробуйте іншу адресу", + "what3words_placeholder": "Введіть адресу what3words (напр. filled.count.soap)", + "what3words_required": "Будь ласка, введіть адресу what3words для пошуку" + }, + "common": { + "active": "Активний", + "add": "Додати", + "all": "Всі", + "back": "Назад", + "cancel": "Скасувати", + "close": "Закрити", + "confirm": "Підтвердити", + "delete": "Видалити", + "deleting": "Видалення...", + "discard": "Відхилити", + "done": "Готово", + "edit": "Редагувати", + "error": "Помилка", + "errorOccurred": "Сталася помилка", + "get_my_location": "Отримати моє місцезнаходження", + "loading": "Завантаження", + "loading_address": "Завантаження адреси...", + "navigation": "Навігація", + "next": "Далі", + "noActiveUnit": "Активний підрозділ відсутній", + "noActiveUnitDescription": "Будь ласка, виберіть активний підрозділ, щоб побачити доступні статуси", + "no_address_found": "Адресу не знайдено", + "no_data_available": "Дані недоступні", + "no_location": "Місцезнаходження недоступне", + "no_results_found": "Результати не знайдено", + "no_unit_selected": "Підрозділ не вибрано", + "of": "з", + "ok": "OK", + "optional": "Необов'язково", + "permission_denied": "У доступі відмовлено", + "previous": "Попередній", + "refresh": "Оновити", + "retry": "Спробувати знову", + "route": "Маршрут", + "save": "Зберегти", + "search": "Пошук", + "set_location": "Встановити місцезнаходження", + "step": "Крок", + "submit": "Надіслати", + "submitting": "Надсилання...", + "success": "Успіх", + "unknown_department": "Невідомий підрозділ", + "unknown_user": "Невідомий користувач", + "uploading": "Завантаження..." + }, + "contacts": { + "add": "Додати контакт", + "addedBy": "Додано", + "addedOn": "Дата додавання", + "additionalInformation": "Додаткова інформація", + "address": "Адреса", + "bluesky": "Bluesky", + "cancel": "Скасувати", + "cellPhone": "Мобільний телефон", + "city": "Місто", + "cityState": "Місто та область", + "cityStateZip": "Місто, область, поштовий індекс", + "company": "Компанія", + "contactInformation": "Контактна інформація", + "contactNotes": "Примітки контакту", + "contactNotesEmpty": "Для цього контакту примітки не знайдено", + "contactNotesEmptyDescription": "Примітки, додані до цього контакту, з'являться тут", + "contactNotesExpired": "Термін дії цієї примітки закінчився", + "contactNotesLoading": "Завантаження приміток контакту...", + "contactType": "Тип контакту", + "countryId": "Ідентифікатор країни", + "delete": "Видалити", + "deleteConfirm": "Ви впевнені, що хочете видалити цей контакт?", + "deleteSuccess": "Контакт успішно видалено", + "description": "Додавайте контакти та керуйте ними", + "descriptionLabel": "Опис", + "details": "Деталі контакту", + "detailsTab": "Деталі", + "edit": "Редагувати контакт", + "editedBy": "Відредаговано", + "editedOn": "Дата редагування", + "email": "Електронна пошта", + "empty": "Контакти не знайдено", + "emptyDescription": "Додайте контакти для управління особистими та службовими зв'язками", + "entranceCoordinates": "Координати входу", + "errorTitle": "Помилка", + "exitCoordinates": "Координати виходу", + "expires": "Термін дії", + "facebook": "Facebook", + "faxPhone": "Факс", + "formError": "Будь ласка, виправте помилки у формі", + "homePhone": "Домашній телефон", + "identification": "Ідентифікація", + "important": "Позначити як важливе", + "instagram": "Instagram", + "internal": "Внутрішній", + "invalidEmail": "Неправильна адреса електронної пошти", + "linkedin": "LinkedIn", + "locationCoordinates": "Координати місцезнаходження", + "locationInformation": "Інформація про місцезнаходження", + "mastodon": "Mastodon", + "mobile": "Мобільний", + "name": "Ім'я та прізвище", + "noteAlert": "Сповіщення", + "noteType": "Тип", + "notes": "Примітки", + "notesTab": "Примітки", + "officePhone": "Офісний телефон", + "openAppError": "Не вдалося відкрити програму {{action}}", + "openLinkFailed": "Не вдалося відкрити посилання {{action}}:", + "otherInfo": "Інша інформація", + "person": "Особа", + "phone": "Телефон", + "public": "Публічний", + "required": "Обов'язково", + "save": "Зберегти контакт", + "saveSuccess": "Контакт успішно збережено", + "search": "Шукати контакти...", + "shouldAlert": "Надсилати сповіщення", + "socialMediaWeb": "Соціальні мережі та мережа", + "state": "Область", + "stateId": "Ідентифікатор області", + "systemInformation": "Системна інформація", + "tabs": { + "details": "Деталі", + "notes": "Примітки" + }, + "threads": "Threads", + "title": "Контакти", + "twitter": "Twitter", + "visibility": "Видимість", + "website": "Веб-сайт", + "zip": "Поштовий індекс" + }, + "form": { + "invalid_url": "Будь ласка, введіть дійсний URL, що починається з http:// або https://", + "required": "Це поле є обов'язковим" + }, + "home": { + "error": { + "no_user_id": "Ідентифікатор користувача недоступний" + }, + "sidebar": { + "audio": "Аудіо", + "ptt": "PTT" + }, + "staffing": { + "add_note": "Додати примітку", + "confirm_staffing": "Підтвердити укомплектування: {{staffing}}", + "no_options_available": "Параметри укомплектування недоступні", + "no_staffing_options": "Параметри укомплектування недоступні", + "note": "Примітка", + "note_placeholder": "Введіть примітку (необов'язково)...", + "review_and_confirm": "Перегляньте та підтвердіть", + "select_staffing_level": "Вибрати рівень укомплектування", + "select_staffing_level_description": "Виберіть свій поточний статус укомплектування", + "selected_staffing": "Вибране укомплектування", + "set_staffing": "Встановити укомплектування персоналу", + "staffing_level": "Рівень укомплектування", + "update_failed": "Не вдалося оновити укомплектування", + "updated_successfully": "Укомплектування успішно оновлено" + }, + "stats": { + "open_calls": "Відкриті виклики", + "personnel_in_service": "Персонал на службі", + "units_in_service": "Підрозділи на службі" + }, + "status": { + "no_options_available": "Параметри статусу недоступні", + "update_failed": "Не вдалося оновити статус", + "updated_successfully": "Статус успішно оновлено" + }, + "tabs": { + "dashboard": "Панель", + "map": "Карта", + "staffing": "Укомплектування", + "status": "Статус" + }, + "user": { + "my_staffing": "Моє укомплектування", + "my_status": "Мій статус", + "staffing_unknown": "Укомплектування невідоме", + "status_unknown": "Статус невідомий", + "updated": "Оновлено" + } + }, + "livekit": { + "audio_devices": "Аудіопристрої", + "audio_settings": "Налаштування аудіо", + "connected_to_room": "Підключено до каналу", + "connecting": "Підключення...", + "disconnect": "Відключитися", + "double_click_action": "Дія подвійного натискання", + "headset_button_ptt": "Кнопка гарнітури PTT", + "headset_monitoring_active": "Моніторинг гарнітури активний", + "headset_monitoring_inactive": "Моніторинг гарнітури неактивний", + "headset_ptt_description": "Використовуйте кнопку AirPods або навушників Bluetooth для увімкнення/вимкнення звуку", + "headset_ptt_disabled": "PTT гарнітури вимкнено", + "headset_ptt_enabled": "PTT гарнітури увімкнено", + "join": "Приєднатися", + "long_press_action": "Дія тривалого натискання", + "microphone": "Мікрофон", + "mute": "Вимкнути звук", + "no_action": "Немає дії", + "no_rooms_available": "Голосові канали недоступні", + "play_pause_action": "Дія кнопки відтворення/паузи", + "ptt_mode": "Режим PTT", + "ptt_mode_disabled": "Вимкнено", + "ptt_mode_push": "Push-to-Talk (утримуйте для розмови)", + "ptt_mode_toggle": "Перемикач (натисніть для зміни звуку)", + "sound_feedback": "Звуковий зворотній зв'язок", + "speaker": "Динамік", + "speaking": "Розмова", + "tap_to_toggle_mute": "Натисніть кнопку гарнітури для перемикання звуку", + "title": "Голосові канали", + "toggle_mute": "Перемкнути звук", + "unmute": "Увімкнути звук" + }, + "loading": { + "loading": "Завантаження...", + "loadingData": "Завантаження даних...", + "pleaseWait": "Будь ласка, зачекайте", + "processingRequest": "Обробка запиту..." + }, + "login": { + "change_server_url": "Змінити URL сервера", + "errorModal": { + "confirmButton": "OK", + "message": "Будь ласка, перевірте ім'я користувача та пароль і спробуйте ще раз.", + "title": "Помилка входу" + }, + "login": "Увійти", + "login_button": "Увійти", + "login_button_description": "Увійдіть у свій обліковий запис для продовження", + "login_button_error": "Помилка входу", + "login_button_loading": "Вхід...", + "login_button_success": "Вхід виконано успішно", + "password": "Пароль", + "password_incorrect": "Пароль невірний", + "password_placeholder": "Введіть пароль", + "select_language": "Вибрати мову", + "sso": { + "back": "Назад", + "change_department": "Змінити ім'я користувача", + "continue_button": "Продовжити", + "department_code_label": "Код підрозділу", + "department_code_placeholder": "Введіть код підрозділу", + "department_code_required": "Код підрозділу є обов'язковим", + "department_description": "Введіть код підрозділу для входу", + "department_id_invalid": "Ідентифікатор підрозділу має бути числом", + "department_id_label": "Ідентифікатор підрозділу (необов'язково)", + "department_id_placeholder": "Введіть ідентифікатор підрозділу, якщо відомо", + "department_not_found": "Підрозділ не знайдено. Будь ласка, перевірте код і спробуйте ще раз.", + "login_with_sso_button": "Увійти через SSO", + "looking_up": "Пошук облікового запису...", + "lookup_network_error": "Не вдалося зв'язатися з сервером. Будь ласка, перевірте підключення та спробуйте ще раз.", + "or_sign_in_with_password": "— або увійдіть з паролем —", + "page_title": "Вхід через SSO", + "sign_in_with_sso": "Увійти через SSO", + "sso_not_enabled": "SSO не увімкнено для цього облікового запису. Будь ласка, використовуйте ім'я користувача та пароль.", + "user_description": "Введіть ім'я користувача або електронну адресу Resgrid для входу через SSO", + "user_not_found": "Обліковий запис не знайдено. Будь ласка, перевірте ім'я користувача та спробуйте ще раз.", + "username_label": "Ім'я користувача або електронна пошта", + "username_placeholder": "Введіть ім'я користувача або електронну пошту", + "username_required": "Ім'я користувача є обов'язковим" + }, + "title": "Вхід", + "username": "Ім'я користувача", + "username_placeholder": "Введіть ім'я користувача" + }, + "map": { + "call_set_as_current": "Виклик встановлено як поточний", + "failed_to_open_maps": "Не вдалося відкрити програму карт", + "failed_to_set_current_call": "Не вдалося встановити виклик як поточний", + "no_location_for_routing": "Дані про місцезнаходження для прокладання маршруту відсутні", + "pin_color": "Колір маркера", + "recenter_map": "Відцентрувати карту", + "set_as_current_call": "Встановити як поточний виклик", + "view_call_details": "Переглянути деталі виклику" + }, + "maps": { + "contact_administrator": "Будь ласка, зверніться до адміністратора для налаштування картографічних служб.", + "failed_to_load": "Не вдалося завантажити карту. Будь ласка, перевірте підключення до Інтернету.", + "mapbox_not_configured": "Mapbox не налаштовано. Будь ласка, зверніться до адміністратора." + }, + "messages": { + "all_messages": "Всі повідомлення", + "compose": "Написати", + "compose_new_message": "Нове повідомлення", + "date_unknown": "Дата невідома", + "delete_confirmation_message": "Ви впевнені, що хочете видалити {{count}} повідомлення(нь)?", + "delete_confirmation_title": "Видалити повідомлення", + "delete_single_confirmation_message": "Ви впевнені, що хочете видалити це повідомлення?", + "enter_expiration_date": "Введіть дату закінчення терміну дії", + "enter_message_body": "Введіть повідомлення", + "enter_note": "Введіть необов'язкову примітку", + "enter_response": "Введіть відповідь", + "enter_subject": "Введіть тему повідомлення", + "error": "Помилка", + "expiration_date_format": "Формат: РРРР-ММ-ДД ГГ:ХХ", + "expiration_date_optional": "Дата закінчення терміну (необов'язково)", + "expired": "Термін дії закінчився", + "expires_on": "Термін дії закінчується", + "from": "Від", + "inbox": "Вхідні", + "message_body": "Текст повідомлення", + "message_content": "Вміст повідомлення", + "message_type": "Тип повідомлення", + "no_content": "Вміст відсутній", + "no_messages": "Повідомлення не знайдено", + "no_messages_description": "Надішліть перше повідомлення для початку роботи", + "no_subject": "Тема відсутня", + "note_optional": "Примітка (необов'язково)", + "people": "Особи", + "recipients": "Одержувачі", + "recipients_count": "{{count}} одержувачів", + "recipients_selected": "Вибрано {{count}} одержувачів", + "respond_failed": "Не вдалося відповісти на повідомлення", + "respond_to_message": "Відповісти на повідомлення", + "responded": "Відповідь надіслано", + "responded_on": "Відповідь надіслано", + "responding": "Відповідь надсилається...", + "response": "Відповідь", + "response_required": "Відповідь є обов'язковою", + "search_placeholder": "Шукати повідомлення...", + "select_all": "Вибрати всі", + "select_message": "Вибрати повідомлення", + "select_message_type": "Вибрати тип повідомлення", + "select_recipients": "Вибрати одержувачів", + "selected_count": "Вибрано {{count}}", + "send": "Надіслати", + "send_first_message": "Надіслати перше повідомлення", + "send_response": "Надіслати відповідь", + "sending": "Надсилання...", + "sent": "Надіслано", + "showing_count": "Показано {{count}} повідомлень", + "subject": "Тема", + "title": "Повідомлення", + "types": { + "alert": "Сповіщення", + "message": "Повідомлення", + "poll": "Опитування" + }, + "unsaved_changes": "Незбережені зміни", + "unsaved_changes_message": "У вас є незбережені зміни. Ви впевнені, що хочете їх відхилити?", + "validation": { + "body_required": "Текст повідомлення є обов'язковим", + "recipients_required": "Потрібен принаймні один одержувач", + "subject_required": "Тема є обов'язковою" + } + }, + "notes": { + "actions": { + "add": "Додати примітку", + "delete_confirm": "Ви впевнені, що хочете видалити цю примітку?" + }, + "details": { + "close": "Закрити", + "created": "Створено", + "delete": "Видалити", + "edit": "Редагувати", + "tags": "Теги", + "title": "Деталі примітки", + "updated": "Оновлено" + }, + "empty": "Примітки не знайдено", + "emptyDescription": "Для вашого підрозділу примітки ще не створено.", + "search": "Шукати примітки...", + "title": "Примітки" + }, + "notifications": { + "bulkDeleteError": "Не вдалося видалити сповіщення", + "bulkDeleteSuccess": "Видалено {{count}} сповіщення(нь)", + "confirmDelete": { + "message": "Ви впевнені, що хочете видалити {{count}} сповіщення(нь)? Цю дію неможливо скасувати.", + "title": "Підтвердити видалення" + }, + "deleteError": "Не вдалося видалити сповіщення", + "deleteSuccess": "Сповіщення видалено", + "deselectAll": "Зняти вибір з усіх", + "empty": "Оновлення недоступні", + "loadError": "Не вдалося завантажити сповіщення", + "selectAll": "Вибрати всі", + "selectedCount": "Вибрано {{count}}", + "title": "Сповіщення" + }, + "onboarding": { + "message": "Ласкаво просимо до Resgrid Responder" + }, + "personnel": { + "contactInformation": "Контактна інформація", + "currentStatus": "Поточний статус", + "empty": "Персонал не знайдено", + "emptyDescription": "Жоден персонал не відповідає критеріям пошуку або дані про персонал відсутні.", + "filter": { + "description": "Виберіть фільтри для уточнення списку персоналу. Зміни застосовуються автоматично.", + "empty": "Параметри фільтрування недоступні", + "emptyDescription": "Параметри фільтрування з'являться тут, коли будуть доступні.", + "title": "Фільтрувати персонал" + }, + "group": "Група", + "id": "Ідентифікатор", + "roles": "Ролі", + "search": "Шукати персонал...", + "staffing": "Укомплектування", + "status": { + "add_note": "Додати примітку", + "calls_tab": "Виклики", + "confirm_status": "Підтвердити статус: {{status}}", + "custom_responding_to": "Нестандартне реагування на", + "general_status": "Загальне оновлення статусу", + "loading_stations": "Завантаження станцій...", + "no_destination": "Пункт призначення відсутній", + "no_stations_available": "Станції недоступні", + "note": "Примітка", + "note_placeholder": "Введіть примітку (необов'язково)...", + "responding_to": "Реагування на", + "responding_to_placeholder": "Введіть, на що ви реагуєте...", + "review_and_confirm": "Перегляньте та підтвердіть", + "select_call_to_respond_to": "Вибрати виклик для реагування", + "select_destination": "Вибрати пункт призначення", + "select_responding_to": "Встановити статус: {{status}}", + "selected_call": "Вибраний виклик", + "selected_destination": "Вибраний пункт призначення", + "set_status": "Встановити статус персоналу", + "stations_tab": "Станції", + "status": "Статус" + } + }, + "protocols": { + "details": { + "close": "Закрити", + "code": "Код", + "created": "Створено", + "title": "Деталі протоколу", + "updated": "Оновлено" + }, + "empty": "Протоколи не знайдено", + "emptyDescription": "Для вашого підрозділу протоколи ще не створено.", + "search": "Шукати протоколи...", + "title": "Протоколи" + }, + "roles": { + "modal": { + "title": "Призначення ролей підрозділу" + }, + "selectUser": "Вибрати користувача", + "status": "{{active}} з {{total}} ролей активних", + "tap_to_manage": "Натисніть для управління ролями", + "unassigned": "Не призначено" + }, + "settings": { + "about": "Про застосунок", + "account": "Обліковий запис", + "active_unit": "Активний підрозділ", + "app_info": "Інформація про застосунок", + "app_name": "Назва застосунку", + "arabic": "Арабська", + "audio_device_selection": { + "bluetooth_device": "Пристрій Bluetooth", + "current_selection": "Поточний вибір", + "microphone": "Мікрофон", + "no_microphones_available": "Мікрофони недоступні", + "no_speakers_available": "Динаміки недоступні", + "none_selected": "Нічого не вибрано", + "speaker": "Динамік", + "speaker_device": "Динамік", + "title": "Вибір аудіопристрою", + "unavailable": "Недоступно", + "wired_device": "Дротовий пристрій" + }, + "background_geolocation": "Геолокація у фоновому режимі", + "background_geolocation_warning": "Ця функція дозволяє застосунку відстежувати ваше місцезнаходження у фоновому режимі. Вона допомагає координувати реагування на надзвичайні ситуації, але може впливати на термін служби акумулятора.", + "background_location": "Місцезнаходження у фоновому режимі", + "contact_us": "Зв'яжіться з нами", + "english": "Англійська", + "enter_password": "Введіть пароль", + "enter_server_url": "Введіть URL API Resgrid (напр. https://api.resgrid.com)", + "enter_username": "Введіть ім'я користувача", + "environment": "Середовище", + "french": "Французька", + "general": "Загальне", + "generale": "Загальне", + "german": "Німецька", + "github": "Github", + "help_center": "Центр допомоги", + "italian": "Італійська", + "keep_alive": "Підтримувати активність", + "keep_alive_warning": "Попередження: Увімкнення функції підтримки активності заважатиме переходу пристрою в сплячий режим і може значно збільшити витрату акумулятора.", + "keep_screen_on": "Тримати екран увімкненим", + "language": "Мова", + "links": "Посилання", + "login_info": "Інформація для входу", + "logout": "Вийти", + "logout_confirm_cancel": "Скасувати", + "logout_confirm_message": "Ви впевнені, що хочете вийти? Всі локальні дані, кешовані значення та збережені налаштування будуть видалені з застосунку.", + "logout_confirm_title": "Підтвердити вихід", + "logout_confirm_yes": "Так, вийти", + "more": "Більше", + "no_units_available": "Підрозділи недоступні", + "none_selected": "Нічого не вибрано", + "notifications": "Push-сповіщення", + "notifications_badge_overflow": "99+", + "notifications_button": "Сповіщення", + "notifications_description": "Увімкніть сповіщення для отримання попереджень та оновлень", + "notifications_enable": "Увімкнути сповіщення", + "password": "Пароль", + "polish": "Польська", + "preferences": "Налаштування", + "privacy": "Політика конфіденційності", + "privacy_policy": "Політика конфіденційності", + "rate": "Оцінити", + "realtime_geolocation": "Геолокація в реальному часі", + "realtime_geolocation_warning": "Ця функція підключається до вузла місцезнаходження в реальному часі для отримання оновлень місцезнаходження від іншого персоналу та підрозділів. Потребує активного мережевого підключення.", + "select_unit": "Вибрати підрозділ", + "server": "Сервер", + "server_url": "URL сервера", + "server_url_note": "Примітка: Це URL API Resgrid. Використовується для підключення до сервера Resgrid. Не додавайте /api/v4 до URL і не ставте завершальний слеш.", + "set_active_unit": "Встановити активний підрозділ", + "share": "Поділитися", + "spanish": "Іспанська", + "status_page": "Статус системи", + "support": "Підтримка", + "support_us": "Підтримайте нас", + "swedish": "Шведська", + "terms": "Умови надання послуг", + "theme": { + "dark": "Темна", + "light": "Світла", + "system": "Системна", + "title": "Тема" + }, + "title": "Налаштування", + "ukrainian": "Українська", + "unit_selection": "Вибір підрозділу", + "username": "Ім'я користувача", + "version": "Версія", + "website": "Веб-сайт" + }, + "shifts": { + "all_shifts": "Всі зміни", + "already_signed_up": "Вже зареєстровано", + "assigned": "Призначено", + "automatic": "Автоматично", + "available": "Доступно", + "calendar": "Календар", + "current_signups": "Поточні реєстрації", + "day_details": "Деталі дня зміни", + "details": "Деталі зміни", + "end_time": "Час закінчення", + "groups": "Групи", + "in_shift": "У зміні", + "legend": "Легенда", + "loading": "Завантаження змін...", + "loading_details": "Завантаження деталей зміни...", + "loading_signup": "Обробка...", + "manual": "Вручну", + "needed": "Потрібно", + "needs": "Потреби", + "next_day": "Наступний день", + "no_positions_available": "Вакантні посади для реєстрації відсутні", + "no_shifts": "Зміни недоступні", + "no_shifts_description": "Зверніться до свого керівника, якщо вважаєте, що вам мають бути призначені зміни", + "no_shifts_today": "На сьогодні зміни не заплановано", + "no_shifts_today_description": "Перевірте пізніше або зверніться до свого керівника щодо призначення змін", + "no_signups_yet": "Реєстрацій ще немає", + "optional": "Необов'язково", + "personnel_count": "Кількість персоналу", + "position_needs": "Потреби посади", + "required": "Обов'язково", + "roles": "Ролі", + "scheduled_for": "Заплановано на", + "search_placeholder": "Шукати зміни...", + "shift_code": "Код зміни", + "shift_day": "День зміни", + "shift_name": "Назва зміни", + "shift_type": { + "emergency": "Аварійна", + "label": "Тип зміни", + "regular": "Звичайна", + "training": "Навчальна", + "unknown": "Невідомо" + }, + "signed_up": "Зареєстровано", + "signup": "Зареєструватися", + "signup_error": "Не вдалося зареєструватися на зміну", + "signup_status": "Статус реєстрації", + "signup_success": "Успішно зареєстровано на зміну", + "signups": "Реєстрації", + "start_time": "Час початку", + "today": "Сьогодні", + "todays_shifts": "Сьогоднішні зміни", + "type_emergency": "Аварійна", + "type_regular": "Звичайна", + "type_training": "Навчальна", + "type_unknown": "Невідомо", + "unknown": "Невідомо", + "upcoming_shift_days": "Майбутні дні змін", + "withdraw": "Відкликатися", + "withdraw_error": "Не вдалося відкликатися від зміни", + "withdraw_success": "Успішно відкликано від зміни", + "you": "Ви", + "you_are_signed_up": "Ви зареєстровані на цю зміну" + }, + "sidebar": { + "audio": "Потік", + "ptt": "Голос" + }, + "tabs": { + "calendar": "Календар", + "calls": "Виклики", + "contacts": "Контакти", + "home": "Головна", + "map": "Карта", + "messages": "Повідомлення", + "notes": "Примітки", + "personnel": "Люди", + "protocols": "Протоколи", + "settings": "Налаштування", + "shifts": "Зміни", + "units": "Підрозділи" + }, + "units": { + "coordinates": "Координати", + "empty": "Підрозділи не знайдено", + "emptyDescription": "У вашому підрозділі немає доступних одиниць", + "features": "Характеристики", + "fourWheelDrive": "Повний привід", + "group": "Група", + "lastUpdate": "Останнє оновлення", + "location": "Місцезнаходження", + "maps_error": "Не вдалося відкрити карти", + "notes": "Примітки", + "plateNumber": "Номерний знак", + "search": "Шукати підрозділи...", + "specialPermit": "Спеціальний дозвіл", + "tapToOpenMaps": "Натисніть, щоб відкрити в картах", + "title": "Підрозділи", + "vehicleInfo": "Інформація про транспортний засіб", + "vin": "VIN" + }, + "welcome": "Ласкаво просимо до Resgrid Responder" +}