<?php
/**
 * Swedish copy for Personal admin (personalliggare, servitörer, personalvyer).
 *
 * @package Maca_Menu_List
 */

if (!defined('ABSPATH')) {
    exit;
}

/**
 * Whether Swedish Personal admin strings should apply.
 *
 * @return bool
 */
function maca_menulist_should_apply_personal_admin_sv() {
    if (function_exists('maca_menulist_is_personal_admin_request') && maca_menulist_is_personal_admin_request()) {
        return true;
    }

    // phpcs:disable WordPress.Security.NonceVerification.Missing -- Detect personal POST handlers.
    if (isset($_POST['maca_attendance_action']) || isset($_POST['maca_waiters_action']) || isset($_POST['maca_personal_action'])) {
        return true;
    }
    // phpcs:enable WordPress.Security.NonceVerification.Missing

    return false;
}

/**
 * English msgid => Swedish for Personal admin.
 *
 * @return array<string, string>
 */
function maca_menulist_personal_admin_sv_strings() {
    return array(
        'Personal' => 'Personal',
        'Employees' => 'Anställda',
        'Report' => 'Rapport',
        'Monthly archive' => 'Månadsarkiv',
        'Change log' => 'Ändringslogg',
        'Waiters' => 'Servitörer',
        'Staff screens' => 'Personalvyer',
        'Personalliggare, servitörer and staff screens in one place.' => 'Personalliggare, servitörer och personalvyer på ett ställe.',
        'Staff screen settings saved.' => 'Inställningar för personalvyer sparade.',
        'Permalink rules refreshed.' => 'Permalänkar uppdaterade.',
        'PIN and URLs for waiter/kitchen pages and personalliggare. Table ordering options (delivery mode, guest order list) remain under Settings → Table ordering.' => 'PIN och URL:er för servitör/kök och personalliggare. Bordsbeställning (leveransläge, gästorderlista) finns kvar under Inställningar → Bordsbeställning.',
        'Staff PIN' => 'Personal-PIN',
        'Used for waiter/kitchen pages and personalliggare control view. Leave blank to keep existing PIN.' => 'Används för servitör/kök och kontrollvy för personalliggare. Lämna tomt för att behålla befintlig PIN.',
        'Used for waiter/kitchen pages and personalliggare control view.' => 'Används för servitör/kök och kontrollvy för personalliggare.',
        'Enter your PIN again here and save once — required after the latest update.' => 'Ange PIN igen här och spara en gång — krävs efter senaste uppdateringen.',
        'Waiter page slug' => 'Servitörssidans slug',
        'Kitchen page slug' => 'Kökssidans slug',
        'Personalliggare' => 'Personalliggare',
        'Enable personalliggare (clock in/out)' => 'Aktivera personalliggare (stämpla in/ut)',
        'Clock-in page slug' => 'Stämplingsadress (slug)',
        'Clock-in: %1$s · Control view: %2$s' => 'Stämpla: %1$s · Kontrollvy: %2$s',
        'Save staff screens' => 'Spara personalvyer',
        'Staff page status' => 'Status för personalssidor',
        'Waiter:' => 'Servitör:',
        'Kitchen:' => 'Kök:',
        'Refresh permalink rules' => 'Uppdatera permalänkar',
        'Use if staff URLs show “not found” after changing slugs.' => 'Använd om personal-URL:er visar ”hittades inte” efter slug-ändring.',
        'Date' => 'Datum',
        'Name' => 'Namn',
        'Personal identity number' => 'Personnummer',
        'In' => 'In',
        'Out' => 'Ut',
        'Status' => 'Status',
        'Clocked in' => 'Instämplad',
        'Clocked out' => 'Utstämplad',
        'No activity' => 'Ingen aktivitet',
        'Not clocked in' => 'Inte instämplad',
        'Archive file not found.' => 'Arkivfilen hittades inte.',
        'Monthly archive settings saved.' => 'Inställningar för månadsarkiv sparade.',
        'Enter a name.' => 'Ange ett namn.',
        'Enter a valid personal identity number (10 or 12 digits).' => 'Ange ett giltigt personnummer (10 eller 12 siffror).',
        'Could not save employee.' => 'Kunde inte spara anställd.',
        'Employee not found.' => 'Anställd hittades inte.',
        'Could not reset code.' => 'Kunde inte återställa koden.',
        'New personal code: %s — share it securely with the employee.' => 'Ny personlig kod: %s — dela den säkert med den anställde.',
        'Today' => 'Idag',
        'No active employees yet.' => 'Inga aktiva anställda ännu.',
        'Edit employee' => 'Redigera anställd',
        'Add employee' => 'Lägg till anställd',
        'Stored for Skatteverket reports. 10 or 12 digits.' => 'Lagras för rapporter till Skatteverket. 10 eller 12 siffror.',
        'ID type' => 'ID-typ',
        'Foreign ID' => 'Utländskt ID',
        'Active' => 'Aktiv',
        'Can clock in/out' => 'Kan stämpla in/ut',
        'Save employee' => 'Spara anställd',
        'Generate new personal code' => 'Skapa ny personlig kod',
        'Add new employee' => 'Lägg till ny anställd',
        'Actions' => 'Åtgärder',
        'No employees yet.' => 'Inga anställda ännu.',
        'Yes' => 'Ja',
        'No' => 'Nej',
        'Edit' => 'Redigera',
        'Attendance report' => 'Personalliggarrapport',
        'Full report with personal identity numbers for archive and Skatteverket inspection. Use Correct to fix times — every change is logged.' => 'Fullständig rapport med personnummer för arkiv och Skatteverket. Använd Rätta för att korrigera tider — varje ändring loggas.',
        'From' => 'Från',
        'To' => 'Till',
        'Only days with clock activity' => 'Bara dagar med stämpling',
        'Filter' => 'Filtrera',
        'Export CSV' => 'Exportera CSV',
        'Print' => 'Skriv ut',
        'No rows match the filter.' => 'Inga rader matchar filtret.',
        'Correct' => 'Rätta',
        'Back to report' => 'Tillbaka till rapporten',
        'Correct attendance' => 'Rätta stämpling',
        'Changes are saved with before/after values in the change log. Leave a field blank only if you do not want to change that time.' => 'Ändringar sparas med före/efter i ändringsloggen. Lämna ett fält tomt om du inte vill ändra den tiden.',
        'Employee' => 'Anställd',
        'Clock in' => 'Stämpla in',
        'Set or correct start time. Required if adding a missing clock-in.' => 'Ange eller rätta starttid. Krävs om instämpling saknas.',
        'Clock out' => 'Stämpla ut',
        'Set or correct end time. Required if adding a missing clock-out.' => 'Ange eller rätta sluttid. Krävs om utstämpling saknas.',
        'Note (optional)' => 'Anteckning (valfritt)',
        'Save correction' => 'Spara rättelse',
        'Saves a full monthly report (CSV + printable HTML) on the server. Files are stored under uploads and are only available to administrators — not via direct web links.' => 'Sparar en fullständig månadsrapport (CSV + utskriftsvänlig HTML) på servern. Filer lagras under uploads och är bara tillgängliga för administratörer — inte via direktlänkar.',
        'Automatic archive' => 'Automatiskt arkiv',
        'Create archive on the 1st of each month for the previous month' => 'Skapa arkiv den 1:a varje månad för föregående månad',
        'Run time' => 'Körtid',
        'Site timezone. Default: 03:00 on the 1st.' => 'Sajtens tidszon. Standard: 03:00 den 1:a.',
        'Retention' => 'Lagringstid',
        'months' => 'månader',
        'Skatteverket requires at least 24 months. Older archives are deleted automatically.' => 'Skatteverket kräver minst 24 månader. Äldre arkiv raderas automatiskt.',
        'Save archive settings' => 'Spara arkivinställningar',
        'Next automatic archive: %s' => 'Nästa automatiska arkiv: %s',
        'Last archive: %1$s (%2$s)' => 'Senaste arkiv: %1$s (%2$s)',
        'Create archive now for month' => 'Skapa arkiv nu för månad',
        'Create archive' => 'Skapa arkiv',
        'Saved archives' => 'Sparade arkiv',
        'Month' => 'Månad',
        'Period' => 'Period',
        'Rows' => 'Rader',
        'Created' => 'Skapad',
        'No monthly archives yet.' => 'Inga månadsarkiv ännu.',
        'Download CSV' => 'Ladda ner CSV',
        'Open printable report' => 'Öppna utskriftsrapport',
        'All clock events and future corrections are logged here.' => 'Alla stämplingar och rättelser loggas här.',
        'When' => 'Tidpunkt',
        'Action' => 'Åtgärd',
        'Changed by' => 'Ändrad av',
        'Details' => 'Detaljer',
        'No log entries yet.' => 'Inga loggposter ännu.',
        'Created' => 'Skapad',
        'Corrected' => 'Rättad',
        'Voided' => 'Makulerad',
        'Monthly archive saved for %s.' => 'Månadsarkiv sparat för %s.',
        'Enable table ordering with waiter or kitchen delivery under Settings → Table ordering.' => 'Aktivera bordsbeställning med servitör eller kök under Inställningar → Bordsbeställning.',
        'Create waiter profiles and assign tables. On the shared waiter page (protected by PIN), staff can view all tables or filter to one waiter’s assigned tables.' => 'Skapa servitörsprofiler och tilldela bord. På den gemensamma servitörssidan (skyddad med PIN) kan personal se alla bord eller filtrera på en servitörs bord.',
        'Add waiter' => 'Lägg till servitör',
        'No waiters yet. Add profiles and assign tables from your booking list.' => 'Inga servitörer ännu. Lägg till profiler och tilldela bord från bokningslistan.',
        'Tables' => 'Bord',
        'Enter a name for the waiter.' => 'Ange ett namn för servitören.',
        'Could not save waiter.' => 'Kunde inte spara servitör.',
        'Waiter saved.' => 'Servitör sparad.',
        'Waiter deleted.' => 'Servitör raderad.',
        'Back to list' => 'Tillbaka till listan',
        'Sort order' => 'Sorteringsordning',
        'Show in waiter filter on staff page' => 'Visa i servitörsfilter på personalvyn',
        'Assigned tables' => 'Tilldelade bord',
        'No tables found. Add tables under %s first, or enter table numbers manually below.' => 'Inga bord hittades. Lägg till bord under %s först, eller ange bordsnummer manuellt nedan.',
        'Table numbers must match the QR URL (?bord=) and guest orders.' => 'Bordsnummer måste matcha QR-URL (?bord=) och gästorder.',
        'Table %1$s (%2$d seats)' => 'Bord %1$s (%2$d platser)',
        'Save waiter' => 'Spara servitör',
        'Delete this waiter?' => 'Radera denna servitör?',
        'Delete waiter' => 'Radera servitör',
        'Invalid request.' => 'Ogiltig begäran.',
        'Could not save attendance.' => 'Kunde inte spara stämpling.',
        'Event' => 'Händelse',
        'Time' => 'Tid',
        'Time corrected' => 'Tid rättad',
        'Could not update attendance.' => 'Kunde inte uppdatera stämpling.',
        'Added by manager' => 'Tillagd av ansvarig',
        'Enter at least one time to correct.' => 'Ange minst en tid att rätta.',
        'Invalid clock-in time.' => 'Ogiltig instämplingstid.',
        'Invalid clock-out time.' => 'Ogiltig utstämplingstid.',
        'Clock-out must be after clock-in.' => 'Utstämpling måste vara efter instämpling.',
        'Could not correct clock-in.' => 'Kunde inte rätta instämpling.',
        'Could not correct clock-out.' => 'Kunde inte rätta utstämpling.',
        'Attendance corrected. Change logged.' => 'Stämpling rättad. Ändringen loggad.',
        'Invalid month.' => 'Ogiltig månad.',
        'Attendance report is not available.' => 'Personalliggarrapporten är inte tillgänglig.',
        'Could not write CSV archive.' => 'Kunde inte skriva CSV-arkiv.',
        'Could not write printable archive.' => 'Kunde inte skriva utskriftsarkiv.',
        'Personal → Staff screens' => 'Personal → Personalvyer',
        'Staff PIN, waiter/kitchen URLs, personalliggare and permalink refresh.' => 'Personal-PIN, servitör/kök-URL:er, personalliggare och uppdatering av permalänkar.',
        'Re-enter your staff PIN under Personal → Staff screens and save once — required after the latest update.' => 'Ange personal-PIN igen under Personal → Personalvyer och spara en gång — krävs efter senaste uppdateringen.',
    );
}

/**
 * Translate Personal admin strings to Swedish.
 *
 * @param string $translated Translated or fallback string.
 * @param string $text       Message id.
 * @param string $domain     Text domain.
 * @return string
 */
function maca_menulist_filter_personal_admin_gettext($translated, $text, $domain) {
    if ($domain !== 'maca-restu-pro' || !maca_menulist_should_apply_personal_admin_sv()) {
        return $translated;
    }

    $map = maca_menulist_personal_admin_sv_strings();

    if (isset($map[ $text ])) {
        return $map[ $text ];
    }

    if ($translated !== $text) {
        return $translated;
    }

    return $text;
}

add_filter('gettext_maca-restu', 'maca_menulist_filter_personal_admin_gettext', 35, 3);
