export type UiLanguage = 'PL' | 'EN' | 'UK' | 'DE'; const en: Record = { 'Kupuję': 'Buy', 'Wynajmuję': 'Rent', 'Jak sprzedawać': 'How to sell', 'Wycena mieszkania': 'Property valuation', 'Firmy i usługi': 'Companies and services', 'Poradniki': 'Guides', 'Dane i ustawienia': 'Data and settings', 'Edytuj profil': 'Edit profile', 'Dodatkowe informacje': 'Additional information', 'Adres zamieszkania': 'Residential address', 'Preferencje kontaktu': 'Contact preferences', 'Język komunikacji': 'Communication language', 'Nie podano': 'Not provided', 'Polski': 'Polish', 'Zapisz zmiany': 'Save changes', 'Dodaj zdjęcie': 'Add photo', 'Zmień zdjęcie': 'Change photo', 'Usuń zdjęcie': 'Remove photo', 'Personalizacja profilu': 'Profile personalization', 'Widoczność profilu': 'Profile visibility', 'Publiczna': 'Public', 'Prywatna': 'Private', 'Tylko kontakty': 'Contacts only', 'Profil publiczny': 'Public profile', 'Zobacz profil': 'View profile', 'Usunięcie konta': 'Account deletion', 'Usuń konto': 'Delete account', 'Porównanie mieszkań': 'Apartment comparison', 'Porównaj do 4 mieszkań i wybierz najlepszą ofertę dla siebie.': 'Compare up to 4 apartments and choose the best option for you.', 'Dodaj mieszkania do porównania': 'Add apartments to compare', 'Możesz porównać do 4 ofert jednocześnie.': 'You can compare up to 4 listings at once.', 'Szukaj mieszkań': 'Search apartments', 'Wszystkie typy': 'All types', 'Mieszkanie': 'Apartment', 'Dom': 'House', 'Działka': 'Plot', 'Lokal użytkowy': 'Commercial unit', 'Pokój': 'Room', 'Dodaj': 'Add', 'Podsumowanie porównania': 'Comparison summary', 'Cena': 'Price', 'Cena całkowita': 'Total price', 'Cena za m²': 'Price per m²', 'Przelicznik ceny do metrażu': 'Price-to-area ratio', 'Lokalizacja': 'Location', 'Lokalizacja ogłoszenia': 'Listing location', 'Metraż': 'Area', 'Powierzchnia użytkowa': 'Usable area', 'Liczba pokoi': 'Number of rooms', 'Ilość pomieszczeń': 'Number of spaces', 'Piętro': 'Floor', 'Poziom mieszkania': 'Apartment floor', 'Stan': 'Condition', 'Stan techniczny': 'Technical condition', 'Rok budowy': 'Year built', 'Rok oddania do użytku': 'Year commissioned', 'Czynsz': 'Rent', 'Miesięczny czynsz': 'Monthly rent', 'Parking': 'Parking', 'Miejsce parkingowe': 'Parking space', 'Balkon / Taras': 'Balcony / Terrace', 'Dodatkowa przestrzeń': 'Additional space', 'Dostępność': 'Availability', 'Termin dostępności': 'Availability date', 'Ocena ogólna': 'Overall score', 'Na podstawie kluczowych czynników': 'Based on key factors', 'Brak wybranych ogłoszeń': 'No selected listings', 'Dodaj pierwsze mieszkanie, aby rozpocząć porównanie.': 'Add your first apartment to start comparison.', 'Zobacz ogłoszenie': 'View listing', 'Wczytuję ogłoszenia...': 'Loading listings...', 'Udostępnij porównanie': 'Share comparison', 'Wyczyść wszystko': 'Clear all', 'Strona główna': 'Home page', 'Porównywarka mieszkań': 'Apartment comparison tool', 'Sprzedaż': 'Sale', 'Wynajem': 'Rent', 'Dodaj min. 2 oferty do porównania': 'Add at least 2 listings to compare', 'Świetna': 'Excellent', 'Bardzo dobra': 'Very good', 'Dobra': 'Good', 'Do poprawy': 'Needs improvement', 'Od zaraz': 'Immediately', 'Do uzgodnienia': 'To be agreed', 'Brak': 'None', }; const uk: Record = { 'Kupuję': 'Купую', 'Wynajmuję': 'Орендую', 'Jak sprzedawać': 'Як продавати', 'Wycena mieszkania': 'Оцінка нерухомості', 'Firmy i usługi': 'Компанії та послуги', 'Poradniki': 'Порадники', 'Dane i ustawienia': 'Дані та налаштування', 'Edytuj profil': 'Редагувати профіль', 'Dodatkowe informacje': 'Додаткова інформація', 'Adres zamieszkania': 'Адреса проживання', 'Preferencje kontaktu': 'Параметри контакту', 'Język komunikacji': 'Мова спілкування', 'Nie podano': 'Не вказано', 'Polski': 'Польська', 'Zapisz zmiany': 'Зберегти зміни', 'Dodaj zdjęcie': 'Додати фото', 'Zmień zdjęcie': 'Змінити фото', 'Usuń zdjęcie': 'Видалити фото', 'Personalizacja profilu': 'Персоналізація профілю', 'Widoczność profilu': 'Видимість профілю', 'Publiczna': 'Публічний', 'Prywatna': 'Приватний', 'Tylko kontakty': 'Лише контакти', 'Profil publiczny': 'Публічний профіль', 'Zobacz profil': 'Переглянути профіль', 'Usunięcie konta': 'Видалення облікового запису', 'Usuń konto': 'Видалити обліковий запис', 'Porównanie mieszkań': 'Порівняння квартир', 'Porównaj do 4 mieszkań i wybierz najlepszą ofertę dla siebie.': 'Порівняйте до 4 квартир і оберіть найкращу пропозицію для себе.', 'Dodaj mieszkania do porównania': 'Додайте квартири для порівняння', 'Możesz porównać do 4 ofert jednocześnie.': 'Ви можете порівняти до 4 оголошень одночасно.', 'Szukaj mieszkań': 'Пошук квартир', 'Wszystkie typy': 'Усі типи', 'Mieszkanie': 'Квартира', 'Dom': 'Будинок', 'Działka': 'Ділянка', 'Lokal użytkowy': 'Комерційне приміщення', 'Pokój': 'Кімната', 'Dodaj': 'Додати', 'Podsumowanie porównania': 'Підсумок порівняння', 'Cena': 'Ціна', 'Cena całkowita': 'Загальна ціна', 'Cena za m²': 'Ціна за м²', 'Lokalizacja': 'Локація', 'Metraż': 'Площа', 'Liczba pokoi': 'Кількість кімнат', 'Piętro': 'Поверх', 'Stan': 'Стан', 'Rok budowy': 'Рік побудови', 'Czynsz': 'Орендна плата', 'Parking': 'Паркування', 'Balkon / Taras': 'Балкон / Тераса', 'Dostępność': 'Доступність', 'Ocena ogólna': 'Загальна оцінка', 'Brak wybranych ogłoszeń': 'Немає вибраних оголошень', 'Zobacz ogłoszenie': 'Переглянути оголошення', 'Udostępnij porównanie': 'Поділитися порівнянням', 'Wyczyść wszystko': 'Очистити все', 'Strona główna': 'Головна сторінка', 'Porównywarka mieszkań': 'Порівняння квартир', 'Sprzedaż': 'Продаж', 'Wynajem': 'Оренда', 'Brak': 'Немає', }; const de: Record = { 'Kupuję': 'Ich kaufe', 'Wynajmuję': 'Ich miete', 'Jak sprzedawać': 'Wie verkauft man', 'Wycena mieszkania': 'Immobilienbewertung', 'Firmy i usługi': 'Firmen und Dienstleistungen', 'Poradniki': 'Ratgeber', 'Dane i ustawienia': 'Daten und Einstellungen', 'Edytuj profil': 'Profil bearbeiten', 'Dodatkowe informacje': 'Zusätzliche Informationen', 'Adres zamieszkania': 'Wohnadresse', 'Preferencje kontaktu': 'Kontaktpräferenzen', 'Język komunikacji': 'Kommunikationssprache', 'Nie podano': 'Nicht angegeben', 'Polski': 'Polnisch', 'Zapisz zmiany': 'Änderungen speichern', 'Dodaj zdjęcie': 'Foto hinzufügen', 'Zmień zdjęcie': 'Foto ändern', 'Usuń zdjęcie': 'Foto entfernen', 'Personalizacja profilu': 'Profilpersonalisierung', 'Widoczność profilu': 'Profilsichtbarkeit', 'Publiczna': 'Öffentlich', 'Prywatna': 'Privat', 'Tylko kontakty': 'Nur Kontakte', 'Profil publiczny': 'Öffentliches Profil', 'Zobacz profil': 'Profil ansehen', 'Usunięcie konta': 'Konto löschen', 'Usuń konto': 'Konto entfernen', 'Porównanie mieszkań': 'Wohnungsvergleich', 'Porównaj do 4 mieszkań i wybierz najlepszą ofertę dla siebie.': 'Vergleichen Sie bis zu 4 Wohnungen und wählen Sie das beste Angebot.', 'Dodaj mieszkania do porównania': 'Wohnungen zum Vergleich hinzufügen', 'Możesz porównać do 4 ofert jednocześnie.': 'Sie können bis zu 4 Angebote gleichzeitig vergleichen.', 'Szukaj mieszkań': 'Wohnungen suchen', 'Wszystkie typy': 'Alle Typen', 'Mieszkanie': 'Wohnung', 'Dom': 'Haus', 'Działka': 'Grundstück', 'Lokal użytkowy': 'Gewerbeobjekt', 'Pokój': 'Zimmer', 'Dodaj': 'Hinzufügen', 'Podsumowanie porównania': 'Vergleichszusammenfassung', 'Cena': 'Preis', 'Cena całkowita': 'Gesamtpreis', 'Cena za m²': 'Preis pro m²', 'Lokalizacja': 'Standort', 'Metraż': 'Fläche', 'Liczba pokoi': 'Zimmeranzahl', 'Piętro': 'Etage', 'Stan': 'Zustand', 'Rok budowy': 'Baujahr', 'Czynsz': 'Miete', 'Parking': 'Parken', 'Balkon / Taras': 'Balkon / Terrasse', 'Dostępność': 'Verfügbarkeit', 'Ocena ogólna': 'Gesamtbewertung', 'Brak wybranych ogłoszeń': 'Keine ausgewählten Anzeigen', 'Zobacz ogłoszenie': 'Anzeige ansehen', 'Udostępnij porównanie': 'Vergleich teilen', 'Wyczyść wszystko': 'Alles löschen', 'Strona główna': 'Startseite', 'Porównywarka mieszkań': 'Wohnungsvergleich', 'Sprzedaż': 'Verkauf', 'Wynajem': 'Miete', 'Brak': 'Keine', }; const dictionaries: Record, Record> = { EN: en, UK: uk, DE: de, }; function normalizeKey(value: string): string { return value.replace(/\s+/g, ' ').trim(); } export function getManualTranslation(language: UiLanguage, source: string): string | null { if (language === 'PL') { return source; } const dictionary = dictionaries[language]; if (!dictionary) { return null; } const exact = dictionary[source]; if (exact) { return exact; } const normalizedSource = normalizeKey(source); if (!normalizedSource) { return null; } const normalizedHit = dictionary[normalizedSource]; return normalizedHit ?? null; }