diff --git a/Assets/Translations/cs.json b/Assets/Translations/cs.json index 9d94373d6..b48de8480 100644 --- a/Assets/Translations/cs.json +++ b/Assets/Translations/cs.json @@ -36,7 +36,9 @@ "hide-mode-description": "Určuje chování widgetu, když není žádné okno aktivní.", "scrolling-mode-description": "Řídí, kdy je povoleno posouvání textu pro dlouhé názvy oken.", "show-app-icon-description": "Zobrazit ikonu aplikace vedle názvu okna.", - "show-app-icon-label": "Zobrazit ikonu aplikace" + "show-app-icon-label": "Zobrazit ikonu aplikace", + "show-app-text-description": "Zobrazit název okna.", + "show-app-text-label": "Zobrazit název okna" }, "audio-visualizer": { "color-name-description": "Vybrat barvu vizualizéru.", @@ -944,6 +946,8 @@ "predefined-desc": "Vybrat z kolekce předdefinovaných barevných schémat.", "predefined-generate-templates-label": "Generovat šablony pro předdefinovaná schémata", "predefined-title": "Předdefinovaná barevná schémata", + "sync-gsettings-description": "Přizpůsobit systémové téma aktivní světlé nebo tmavé variantě.", + "sync-gsettings-label": "Synchronizovat téma systému", "templates-desc": "Aplikovat barvy na externí aplikace.", "templates-filter-description": "Zobrazit šablony z konkrétní kategorie.", "templates-filter-label": "Filtrovat podle kategorie", @@ -1225,6 +1229,8 @@ "screen-corners-solid-black-label": "Plně černé rohy", "screen-corners-title": "Rohy obrazovky", "settings-copied": "Nastavení zkopírováno do schránky", + "smooth-scrolling-description": "Animovat posouvání seznamů pro plynulejší zážitek s kolečkem.", + "smooth-scrolling-label": "Plynulé posouvání", "tab-basics": "Základy", "tab-keybinds": "Klávesové zkratky" }, @@ -1361,6 +1367,8 @@ "title": "Spouštěč" }, "location": { + "auto-locate-description": "Automaticky detekovat vaši polohu pravidelně pomocí vaší IP adresy.", + "auto-locate-label": "Automatické Zjištění", "calendar-cards-desc": "Organizovat a povolit/zakázat karty v panelu kalendáře.", "calendar-cards-title": "Karty kalendáře", "calendar-header-label": "Záhlaví kalendáře", @@ -1378,6 +1386,7 @@ "date-time-use-analog-label": "Použít analogový styl hodin", "date-time-week-numbers-description": "Zobrazit číslo týdne v roce (např. týden 38) v kalendáři.", "date-time-week-numbers-label": "Zobrazit čísla týdnů", + "geolocate-now-button": "Najít nyní", "location-desc": "Získejte přesné počasí a rozvrh nočního světla nastavením polohy.", "location-search-description": "např. Praha, CZ", "location-search-label": "Hledat polohu", @@ -2055,13 +2064,19 @@ "apikey-label": "Klíč API", "apikey-managed-by-env": "Spravováno přes proměnnou prostředí NOCTALIA_WALLHAVEN_API_KEY.", "apikey-placeholder": "Zadejte váš klíč Wallhaven API", - "apply-all-monitors-description": "Aplikovat vybranou tapetu na všechny monitory.", - "apply-all-monitors-label": "Použít na všechny monitory", + "appearance-dark-tab": "Tmavý", + "appearance-light-tab": "Světlý", "categories-anime": "Anime", "categories-label": "Kategorie", "categories-people": "Lidé", "color-extraction-disabled": "Použít extrakci barev tapety", "color-extraction-enabled": "Použít předdefinovaná barevná schémata", + "header-devices-apply-all-tooltip": "Vybrat tapetu pro každý monitor", + "header-devices-per-monitor-tooltip": "Použít na všechny monitory", + "header-link-light-dark-tooltip": "Zachovat tapetu při změně motivu", + "header-separate-light-dark-tooltip": "Automaticky přepínat tapetu s tématem", + "header-sun-linked-tooltip": "Oddělit světlé a tmavé tapety", + "header-sun-separate-tooltip": "Stejná tapeta pro světlý a tmavý režim", "order-asc": "Vzestupně", "order-desc": "Sestupně", "order-label": "Pořadí", diff --git a/Assets/Translations/de.json b/Assets/Translations/de.json index 5dae4459d..c36f59a9c 100644 --- a/Assets/Translations/de.json +++ b/Assets/Translations/de.json @@ -1367,6 +1367,8 @@ "title": "Starter" }, "location": { + "auto-locate-description": "Ermittelt Ihren Standort automatisch und regelmäßig anhand Ihrer IP-Adresse.", + "auto-locate-label": "Automatische Ortung", "calendar-cards-desc": "Karten im Kalender-Panel organisieren und aktivieren/deaktivieren.", "calendar-cards-title": "Kalenderkarten", "calendar-header-label": "Kalenderkopfzeile", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Analoge Uhr verwenden", "date-time-week-numbers-description": "Zeige die Woche des Jahres (z.B. Woche 38) im Kalender an.", "date-time-week-numbers-label": "Wochennummern anzeigen", + "geolocate-now-button": "Jetzt orten", "location-desc": "Genaues Wetter und Nachtlicht-Planung durch Festlegung Ihres Standorts erhalten.", "location-search-description": "z.B. Dortmund, Deutschland", "location-search-label": "Nach einem Standort suchen", diff --git a/Assets/Translations/en-GB.json b/Assets/Translations/en-GB.json index be8cead4f..2552a6c34 100644 --- a/Assets/Translations/en-GB.json +++ b/Assets/Translations/en-GB.json @@ -1367,6 +1367,8 @@ "title": "Launcher" }, "location": { + "auto-locate-description": "Automatically detect your location periodically using your IP address.", + "auto-locate-label": "Auto-Locate", "calendar-cards-desc": "Organize and enable/disable cards in the calendar panel.", "calendar-cards-title": "Calendar cards", "calendar-header-label": "Calendar Header", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Use analog style clock", "date-time-week-numbers-description": "Display the week of the year (e.g. week 38) in the calendar.", "date-time-week-numbers-label": "Show week numbers", + "geolocate-now-button": "Locate now", "location-desc": "Get accurate weather and Night Light scheduling by setting your location.", "location-search-description": "e.g. Toronto, ON", "location-search-label": "Search for a location", diff --git a/Assets/Translations/en.json b/Assets/Translations/en.json index e1297f1aa..b320f4dc2 100644 --- a/Assets/Translations/en.json +++ b/Assets/Translations/en.json @@ -1367,6 +1367,8 @@ "title": "Launcher" }, "location": { + "auto-locate-description": "Automatically detect your location periodically using your IP address.", + "auto-locate-label": "Auto-locate", "calendar-cards-desc": "Organize and enable/disable cards in the calendar panel.", "calendar-cards-title": "Calendar cards", "calendar-header-label": "Calendar Header", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Use analog style clock", "date-time-week-numbers-description": "Display the week of the year (e.g. week 38) in the calendar.", "date-time-week-numbers-label": "Show week numbers", + "geolocate-now-button": "Locate now", "location-desc": "Get accurate weather and Night Light scheduling by setting your location.", "location-search-description": "e.g. Toronto, ON", "location-search-label": "Search for a location", diff --git a/Assets/Translations/es.json b/Assets/Translations/es.json index 867d1b17f..2ae417014 100644 --- a/Assets/Translations/es.json +++ b/Assets/Translations/es.json @@ -1367,6 +1367,8 @@ "title": "Lanzador" }, "location": { + "auto-locate-description": "Detecta automáticamente tu ubicación periódicamente usando tu dirección IP.", + "auto-locate-label": "Auto-Localizar", "calendar-cards-desc": "Organizar y activar/desactivar tarjetas en el panel del calendario.", "calendar-cards-title": "Tarjetas de calendario", "calendar-header-label": "Encabezado del calendario", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Usar reloj de estilo analógico", "date-time-week-numbers-description": "Muestra la semana del año (p. ej. Semana 38) en el calendario.", "date-time-week-numbers-label": "Mostrar números de semana", + "geolocate-now-button": "Localizar ahora", "location-desc": "Obtén el clima y la programación de la luz nocturna precisos estableciendo tu ubicación.", "location-search-description": "p. ej. Toronto, ON", "location-search-label": "Buscar una ubicación", diff --git a/Assets/Translations/fr.json b/Assets/Translations/fr.json index 717f5aff6..dd4422d5e 100644 --- a/Assets/Translations/fr.json +++ b/Assets/Translations/fr.json @@ -1367,6 +1367,8 @@ "title": "Lanceur" }, "location": { + "auto-locate-description": "Détecte automatiquement votre position périodiquement en utilisant votre adresse IP.", + "auto-locate-label": "Localisation Automatique", "calendar-cards-desc": "Organiser et activer/désactiver les cartes dans le panneau de calendrier.", "calendar-cards-title": "Cartes de calendrier", "calendar-header-label": "En-tête du calendrier", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Utiliser une horloge de style analogique", "date-time-week-numbers-description": "Afficher la semaine de l'année (ex : Semaine 38) dans le calendrier.", "date-time-week-numbers-label": "Afficher les numéros de semaine", + "geolocate-now-button": "Localiser maintenant", "location-desc": "Obtenez une météo et une planification de l'éclairage nocturne précises en définissant votre emplacement.", "location-search-description": "ex : Toronto, ON", "location-search-label": "Rechercher un emplacement", diff --git a/Assets/Translations/hu.json b/Assets/Translations/hu.json index 235b725db..665d663c6 100644 --- a/Assets/Translations/hu.json +++ b/Assets/Translations/hu.json @@ -1367,6 +1367,8 @@ "title": "Indító" }, "location": { + "auto-locate-description": "Automata helymeghatározás az IP-cím alapján, rendszeres időközönként.", + "auto-locate-label": "Automatikus Helymeghatározás", "calendar-cards-desc": "A kártyák rendezésének engedélyezése/letiltása a naptár panelen.", "calendar-cards-title": "Naptárkártyák", "calendar-header-label": "Naptár fejléc", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Analóg stílusú óra használata", "date-time-week-numbers-description": "Az év hetének megjelenítése (pl. 38. hét) a naptárban.", "date-time-week-numbers-label": "Hét számok megjelenítése", + "geolocate-now-button": "Helymeghatározás most", "location-desc": "Pontos időjárás és éjszakai fény ütemezés elérése a hely beállításával.", "location-search-description": "pl. Toronto, ON", "location-search-label": "Hely keresése", diff --git a/Assets/Translations/it.json b/Assets/Translations/it.json index 2cf34ea26..10c7f1a9f 100644 --- a/Assets/Translations/it.json +++ b/Assets/Translations/it.json @@ -1367,6 +1367,8 @@ "title": "Launcher" }, "location": { + "auto-locate-description": "Rileva automaticamente la tua posizione periodicamente usando il tuo indirizzo IP.", + "auto-locate-label": "Localizzazione Automatica", "calendar-cards-desc": "Organizza e abilita/disabilita le schede nel pannello calendario.", "calendar-cards-title": "Schede calendario", "calendar-header-label": "Intestazione calendario", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Usa orologio stile analogico", "date-time-week-numbers-description": "Mostra nel calendario la settimana dell’anno (es. settimana 38).", "date-time-week-numbers-label": "Mostra numeri settimana", + "geolocate-now-button": "Localizza ora", "location-desc": "Ottieni meteo accurato e pianificazione Luce notturna impostando la tua posizione.", "location-search-description": "es. Torino, TO", "location-search-label": "Cerca una posizione", diff --git a/Assets/Translations/ja.json b/Assets/Translations/ja.json index ce32db5db..64d2d5845 100644 --- a/Assets/Translations/ja.json +++ b/Assets/Translations/ja.json @@ -1367,6 +1367,8 @@ "title": "ランチャー" }, "location": { + "auto-locate-description": "IPアドレスを使用して、定期的に現在地を自動検出します。", + "auto-locate-label": "自動検出", "calendar-cards-desc": "カレンダーパネルのカードを整理し、有効・無効を切り替えます。", "calendar-cards-title": "カレンダーカード", "calendar-header-label": "カレンダーヘッダー", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "アナログ時計を使用", "date-time-week-numbers-description": "カレンダーに週番号(例:第38週)を表示します。", "date-time-week-numbers-label": "週番号を表示", + "geolocate-now-button": "今すぐ検索", "location-desc": "場所を設定して、正確な天気情報や夜間モードのスケジュールを取得します。", "location-search-description": "例:東京、日本", "location-search-label": "場所を検索", diff --git a/Assets/Translations/ko-KR.json b/Assets/Translations/ko-KR.json index e27bc6cc9..29e671f6d 100644 --- a/Assets/Translations/ko-KR.json +++ b/Assets/Translations/ko-KR.json @@ -1367,6 +1367,8 @@ "title": "런처" }, "location": { + "auto-locate-description": "IP 주소를 사용하여 주기적으로 위치를 자동으로 감지합니다.", + "auto-locate-label": "자동 찾기", "calendar-cards-desc": "달력 패널에서 카드를 정리하고 활성화/비활성화합니다.", "calendar-cards-title": "달력 카드", "calendar-header-label": "달력 헤더", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "아날로그 스타일 시계 사용", "date-time-week-numbers-description": "달력에 해당 연도의 주차(예: 38주차)를 표시합니다.", "date-time-week-numbers-label": "주 번호 표시", + "geolocate-now-button": "지금 찾기", "location-desc": "위치를 설정하여 정확한 날씨 및 야간 조명 일정을 가져오세요.", "location-search-description": "예: 종로구, 해운대, 강릉", "location-search-label": "위치 검색", diff --git a/Assets/Translations/nl.json b/Assets/Translations/nl.json index 9318e3242..f3689d098 100644 --- a/Assets/Translations/nl.json +++ b/Assets/Translations/nl.json @@ -1367,6 +1367,8 @@ "title": "Launcher" }, "location": { + "auto-locate-description": "Detecteert automatisch uw locatie periodiek met behulp van uw IP-adres.", + "auto-locate-label": "Automatische Lokalisatie", "calendar-cards-desc": "Kaarten organiseren en in-/uitschakelen in het kalenderpaneel.", "calendar-cards-title": "Kalenderkaarten", "calendar-header-label": "Kalenderkop", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Analoge klok gebruiken", "date-time-week-numbers-description": "Toon het weeknummer van het jaar (bijv. week 38) in de kalender.", "date-time-week-numbers-label": "Weeknummers tonen", + "geolocate-now-button": "Nu lokaliseren", "location-desc": "Krijg nauwkeurige weersinformatie en nachtlichtplanning door je locatie in te stellen.", "location-search-description": "bijv. Toronto, ON", "location-search-label": "Zoek een locatie", diff --git a/Assets/Translations/pl.json b/Assets/Translations/pl.json index 8bdac0fdd..a8f44a398 100644 --- a/Assets/Translations/pl.json +++ b/Assets/Translations/pl.json @@ -1367,6 +1367,8 @@ "title": "Launcher" }, "location": { + "auto-locate-description": "Automatycznie wykrywaj swoją lokalizację okresowo, używając adresu IP.", + "auto-locate-label": "Automatyczne Wykrywanie", "calendar-cards-desc": "Organizuj i włączaj/wyłączaj karty w panelu kalendarza.", "calendar-cards-title": "Karty kalendarza", "calendar-header-label": "Nagłówek kalendarza", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Użyj zegara analogowego", "date-time-week-numbers-description": "Wyświetlaj numer tygodnia w roku (np. tydzień 38) w kalendarzu.", "date-time-week-numbers-label": "Pokaż numery tygodni", + "geolocate-now-button": "Zlokalizuj teraz", "location-desc": "Ustaw lokalizację, aby otrzymywać dokładną pogodę i harmonogram podświetlenia nocnego.", "location-search-description": "np. Warszawa, PL", "location-search-label": "Szukaj lokalizacji", diff --git a/Assets/Translations/pt.json b/Assets/Translations/pt.json index ecbe3b5f3..2212d8c68 100644 --- a/Assets/Translations/pt.json +++ b/Assets/Translations/pt.json @@ -1367,6 +1367,8 @@ "title": "Lançador" }, "location": { + "auto-locate-description": "Deteta automaticamente a sua localização periodicamente usando o seu endereço IP.", + "auto-locate-label": "Auto-Localização", "calendar-cards-desc": "Organize e ative/desative cartões no painel do calendário.", "calendar-cards-title": "Cartões de calendário", "calendar-header-label": "Cabeçalho do calendário", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Use um relógio de estilo analógico", "date-time-week-numbers-description": "Exibe a semana do ano (p. ex. Semana 38) no calendário.", "date-time-week-numbers-label": "Mostrar números da semana", + "geolocate-now-button": "Localizar agora", "location-desc": "Obtenha previsão do tempo e agendamento de luz noturna precisos definindo sua localização.", "location-search-description": "p. ex. São Paulo, SP", "location-search-label": "Procurar por uma localização", diff --git a/Assets/Translations/ru.json b/Assets/Translations/ru.json index c8b5d950a..24ae9d0a9 100644 --- a/Assets/Translations/ru.json +++ b/Assets/Translations/ru.json @@ -1367,6 +1367,8 @@ "title": "Лаунчер" }, "location": { + "auto-locate-description": "Автоматически определять ваше местоположение периодически, используя ваш IP-адрес.", + "auto-locate-label": "Автоматическое Определение", "calendar-cards-desc": "Организуйте и включайте/выключайте карточки в панели календаря.", "calendar-cards-title": "Карточки календаря", "calendar-header-label": "Заголовок календаря", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Использовать аналоговый стиль часов", "date-time-week-numbers-description": "Отображает номер недели в году (например, неделя 38) в календаре.", "date-time-week-numbers-label": "Показывать номера недель", + "geolocate-now-button": "Найти сейчас", "location-desc": "Получите точную погоду и расписание ночного света, установив своё местоположение.", "location-search-description": "напр. Москва, RU", "location-search-label": "Поиск местоположения", diff --git a/Assets/Translations/sv.json b/Assets/Translations/sv.json index cab07abd4..1da647ccc 100644 --- a/Assets/Translations/sv.json +++ b/Assets/Translations/sv.json @@ -1367,6 +1367,8 @@ "title": "Startprogram" }, "location": { + "auto-locate-description": "Upptäck automatiskt din plats periodiskt med hjälp av din IP-adress.", + "auto-locate-label": "Automatisk Lokalisering", "calendar-cards-desc": "Organisera och aktivera/inaktivera kort i kalenderpanelen.", "calendar-cards-title": "Kalenderkort", "calendar-header-label": "Kalenderrubrik", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Använd analog klocka", "date-time-week-numbers-description": "Visa veckans nummer (t.ex. vecka 38) i kalendern.", "date-time-week-numbers-label": "Visa veckans nummer", + "geolocate-now-button": "Lokalisera nu", "location-desc": "Få exakt väderinformation och schemaläggning av nattbelysning genom att ange din plats.", "location-search-description": "t.ex. Stockholm, SE", "location-search-label": "Sök efter en plats", diff --git a/Assets/Translations/tr.json b/Assets/Translations/tr.json index b3601d4b8..85096ca70 100644 --- a/Assets/Translations/tr.json +++ b/Assets/Translations/tr.json @@ -1367,6 +1367,8 @@ "title": "Başlatıcı" }, "location": { + "auto-locate-description": "IP adresinizi kullanarak konumunuzu periyodik olarak otomatik olarak algılayın.", + "auto-locate-label": "Otomatik Konumlandırma", "calendar-cards-desc": "Takvim panelinde kartları düzenleyin ve etkinleştirin/devre dışı bırakın.", "calendar-cards-title": "Takvim kartları", "calendar-header-label": "Takvim başlığı", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Analog tarzı saat kullan", "date-time-week-numbers-description": "Takvimde yılın haftasını (örn. 38. Hafta) gösterir.", "date-time-week-numbers-label": "Hafta numaralarını göster", + "geolocate-now-button": "Şimdi konumlandır", "location-desc": "Konumunuzu ayarlayarak hassas hava durumu ve gece ışığı zamanlaması alın.", "location-search-description": "örn. İstanbul, TR", "location-search-label": "Konum ara", diff --git a/Assets/Translations/uk-UA.json b/Assets/Translations/uk-UA.json index ac2e2ada3..ec3e00b27 100644 --- a/Assets/Translations/uk-UA.json +++ b/Assets/Translations/uk-UA.json @@ -1367,6 +1367,8 @@ "title": "Лаунчер" }, "location": { + "auto-locate-description": "Автоматично визначати ваше місцезнаходження періодично, використовуючи вашу IP-адресу.", + "auto-locate-label": "Автоматичне Визначення", "calendar-cards-desc": "Організуйте та вмикайте/вимикайте картки на панелі календаря.", "calendar-cards-title": "Календарні картки", "calendar-header-label": "Заголовок календаря", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Використовувати аналоговий годинник", "date-time-week-numbers-description": "Відображати номер тижня року (напр. тиждень 38) у календарі.", "date-time-week-numbers-label": "Показувати номери тижнів", + "geolocate-now-button": "Знайти зараз", "location-desc": "Отримуйте точну погоду та планування нічного світла, встановивши ваше розташування.", "location-search-description": "напр. Торонто, ОН", "location-search-label": "Шукати розташування", diff --git a/Assets/Translations/vi.json b/Assets/Translations/vi.json index 92100e3c8..9449d2dba 100644 --- a/Assets/Translations/vi.json +++ b/Assets/Translations/vi.json @@ -1367,6 +1367,8 @@ "title": "Trình khởi chạy" }, "location": { + "auto-locate-description": "Tự động phát hiện vị trí của bạn định kỳ bằng địa chỉ IP của bạn.", + "auto-locate-label": "Tự Động Định Vị", "calendar-cards-desc": "Sắp xếp và bật/tắt các thẻ trong bảng điều khiển lịch.", "calendar-cards-title": "Thẻ lịch", "calendar-header-label": "Tiêu đề Lịch", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "Sử dụng đồng hồ kiểu kim", "date-time-week-numbers-description": "Hiển thị tuần trong năm (ví dụ: tuần 38) trong lịch.", "date-time-week-numbers-label": "Hiển thị số tuần", + "geolocate-now-button": "Định vị ngay", "location-desc": "Nhận thông tin thời tiết chính xác và lên lịch Ánh sáng đêm bằng cách đặt vị trí của bạn.", "location-search-description": "ví dụ: Toronto, ON", "location-search-label": "Tìm kiếm một địa điểm", diff --git a/Assets/Translations/zh-CN.json b/Assets/Translations/zh-CN.json index 0c079c933..74b1f04d5 100644 --- a/Assets/Translations/zh-CN.json +++ b/Assets/Translations/zh-CN.json @@ -1367,6 +1367,8 @@ "title": "启动器" }, "location": { + "auto-locate-description": "使用您的 IP 地址定期自动检测您的位置。", + "auto-locate-label": "自动定位", "calendar-cards-desc": "在日历面板中组织和启用/禁用卡片。", "calendar-cards-title": "日历卡", "calendar-header-label": "日历标题", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "使用模拟时钟样式", "date-time-week-numbers-description": "在日历中显示一年中的第几周(例如:第 38 周)。", "date-time-week-numbers-label": "显示周数", + "geolocate-now-button": "立即定位", "location-desc": "通过设置您的位置获取准确的天气和调度夜间模式。", "location-search-description": "例如:多伦多, 安大略省", "location-search-label": "搜索位置", diff --git a/Assets/Translations/zh-TW.json b/Assets/Translations/zh-TW.json index 0cfa13615..77b55c595 100644 --- a/Assets/Translations/zh-TW.json +++ b/Assets/Translations/zh-TW.json @@ -1367,6 +1367,8 @@ "title": "啟動器" }, "location": { + "auto-locate-description": "使用您的 IP 位址定期自動偵測您的位置。", + "auto-locate-label": "自動定位", "calendar-cards-desc": "整理及啟用/停用在行事曆面板使用的卡片", "calendar-cards-title": "行事曆卡片", "calendar-header-label": "行事曆抬頭", @@ -1384,6 +1386,7 @@ "date-time-use-analog-label": "使用類比時鐘", "date-time-week-numbers-description": "在行事曆顯示今年當週的週數 (例如: 第38週)", "date-time-week-numbers-label": "顯示週數", + "geolocate-now-button": "立即定位", "location-desc": "設定你的所在地以取得準確的天氣及夜光模式時間", "location-search-description": "例如: Taipei (英文)", "location-search-label": "搜尋位置", diff --git a/Assets/settings-default.json b/Assets/settings-default.json index 7ed5088c3..c0a00188e 100644 --- a/Assets/settings-default.json +++ b/Assets/settings-default.json @@ -170,7 +170,8 @@ "analogClockInCalendar": false, "firstDayOfWeek": -1, "hideWeatherTimezone": false, - "hideWeatherCityName": false + "hideWeatherCityName": false, + "autoLocate": true }, "calendar": { "cards": [ diff --git a/Assets/settings-search-index.json b/Assets/settings-search-index.json index fbff4a441..e1d0eeefe 100644 --- a/Assets/settings-search-index.json +++ b/Assets/settings-search-index.json @@ -2192,6 +2192,15 @@ "subTab": 0, "subTabLabel": "common.location" }, + { + "labelKey": "panels.location.auto-locate-label", + "descriptionKey": "panels.location.auto-locate-description", + "widget": "NToggle", + "tab": 17, + "tabLabel": "panels.region.title", + "subTab": 0, + "subTabLabel": "common.location" + }, { "labelKey": "panels.location.weather-enabled-label", "descriptionKey": "panels.location.weather-enabled-description", diff --git a/Assets/settings-widgets-default.json b/Assets/settings-widgets-default.json index eeb2c07a7..9503ed6cc 100644 --- a/Assets/settings-widgets-default.json +++ b/Assets/settings-widgets-default.json @@ -1,8 +1,8 @@ { "bar": { "ActiveWindow": { - "showIcon": true, "showText": true, + "showIcon": true, "hideMode": "hidden", "scrollingMode": "hover", "maxWidth": 145, @@ -78,7 +78,7 @@ "maxTextLength": { "horizontal": 10, "vertical": 10 - },"showIcon": true, + }, "enableColorization": false, "colorizeSystemIcon": "none", "ipcIdentifier": "" @@ -292,4 +292,4 @@ "colorName": "primary" } } -} +} \ No newline at end of file diff --git a/Commons/Settings.qml b/Commons/Settings.qml index df3e42da6..cfb575d2b 100644 --- a/Commons/Settings.qml +++ b/Commons/Settings.qml @@ -352,6 +352,7 @@ Singleton { property int firstDayOfWeek: -1 // -1 = auto (use locale), 0 = Sunday, 1 = Monday, 6 = Saturday property bool hideWeatherTimezone: false property bool hideWeatherCityName: false + property bool autoLocate: true } // calendar diff --git a/Modules/Panels/Settings/Tabs/Region/LocationSubTab.qml b/Modules/Panels/Settings/Tabs/Region/LocationSubTab.qml index 271bc064d..cc0894581 100644 --- a/Modules/Panels/Settings/Tabs/Region/LocationSubTab.qml +++ b/Modules/Panels/Settings/Tabs/Region/LocationSubTab.qml @@ -74,16 +74,37 @@ ColumnLayout { } NText { - visible: LocationService.coordinatesReady - text: I18n.tr("system.location-display", { - "name": LocationService.stableName, - "coordinates": LocationService.displayCoordinates - }) + text: LocationService.coordinatesReady ? I18n.tr("system.location-display", { + "name": LocationService.stableName, + "coordinates": LocationService.displayCoordinates + }) : "" pointSize: Style.fontSizeS color: Color.mOnSurfaceVariant } } + // Auto-locate + RowLayout { + Layout.fillWidth: true + spacing: Style.marginM + + NToggle { + Layout.fillWidth: true + label: I18n.tr("panels.location.auto-locate-label") + description: I18n.tr("panels.location.auto-locate-description") + checked: Settings.data.location.autoLocate + onToggled: checked => Settings.data.location.autoLocate = checked + defaultValue: Settings.getDefaultValue("location.autoLocate") + } + + NButton { + text: I18n.tr("panels.location.geolocate-now-button") + icon: "current-location" + enabled: !LocationService.isFetchingWeather + onClicked: LocationService.geolocateAndApply() + } + } + ColumnLayout { spacing: Style.marginL Layout.fillWidth: true diff --git a/Services/Location/LocationService.qml b/Services/Location/LocationService.qml index 7a29cab37..9b40c16a4 100644 --- a/Services/Location/LocationService.qml +++ b/Services/Location/LocationService.qml @@ -70,6 +70,16 @@ Singleton { return `${lat}, ${lon}`; } + // Auto-geolocate timer - periodically updates location via IP geolocation + Timer { + id: autoLocateTimer + interval: 30 * 60 * 1000 + running: Settings.data.location.autoLocate + repeat: true + triggeredOnStart: true + onTriggered: root.geolocateAndApply() + } + // Update timer runs when weather is enabled or location-based scheduling is active Timer { id: updateTimer @@ -244,6 +254,46 @@ Singleton { xhr.send(); } + // Geolocate via IP address using the Noctalia API + function geolocate(callback, errorCallback) { + Logger.d("Location", "Geolocating via IP"); + var url = "https://api.noctalia.dev/geolocate"; + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function () { + if (xhr.readyState === XMLHttpRequest.DONE) { + if (xhr.status === 200) { + try { + var data = JSON.parse(xhr.responseText); + if (data.lat != null) { + callback(data.lat, data.lng, data.city, data.country); + } else { + errorCallback("Location", "Geolocate: no coordinates returned"); + } + } catch (e) { + errorCallback("Location", "Failed to parse geolocate data: " + e); + } + } else { + errorCallback("Location", "Geolocate error: " + xhr.status); + } + } + }; + xhr.open("GET", url); + xhr.send(); + } + + // Geolocate via IP and apply the result as the current location + function geolocateAndApply() { + if (isFetchingWeather) { + Logger.w("Location", "Geolocate skipped, fetch already in progress"); + return; + } + geolocate(function (lat, lng, city, country) { + Logger.i("Location", "Geolocated to", city + ",", country); + Settings.data.location.name = city; + resetWeather(); + }, errorCallback); + } + // -------------------------------- function errorCallback(module, message) { Logger.e(module, message);