From f14453368cdd7f7a8d9f3f53e74ec1196d3093b6 Mon Sep 17 00:00:00 2001 From: Ricardo Date: Fri, 13 Feb 2026 22:33:41 +0100 Subject: [PATCH] feat: add i18n support for 14 languages Add translations for de, es, es-419, fr, hi, id, it, nl, pl, pt, pt-BR, sr, sv, zh-Hans-CN to match upstream Indiekit's supported locales. Co-Authored-By: Claude Opus 4.6 --- locales/de.json | 26 ++++++++++++++++++++++++++ locales/es-419.json | 26 ++++++++++++++++++++++++++ locales/es.json | 26 ++++++++++++++++++++++++++ locales/fr.json | 26 ++++++++++++++++++++++++++ locales/hi.json | 26 ++++++++++++++++++++++++++ locales/id.json | 26 ++++++++++++++++++++++++++ locales/it.json | 26 ++++++++++++++++++++++++++ locales/nl.json | 26 ++++++++++++++++++++++++++ locales/pl.json | 26 ++++++++++++++++++++++++++ locales/pt-BR.json | 26 ++++++++++++++++++++++++++ locales/pt.json | 26 ++++++++++++++++++++++++++ locales/sr.json | 26 ++++++++++++++++++++++++++ locales/sv.json | 26 ++++++++++++++++++++++++++ locales/zh-Hans-CN.json | 26 ++++++++++++++++++++++++++ package.json | 2 +- 15 files changed, 365 insertions(+), 1 deletion(-) create mode 100644 locales/de.json create mode 100644 locales/es-419.json create mode 100644 locales/es.json create mode 100644 locales/fr.json create mode 100644 locales/hi.json create mode 100644 locales/id.json create mode 100644 locales/it.json create mode 100644 locales/nl.json create mode 100644 locales/pl.json create mode 100644 locales/pt-BR.json create mode 100644 locales/pt.json create mode 100644 locales/sr.json create mode 100644 locales/sv.json create mode 100644 locales/zh-Hans-CN.json diff --git a/locales/de.json b/locales/de.json new file mode 100644 index 0000000..0682576 --- /dev/null +++ b/locales/de.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "Neueste Videos", + "channel": "Kanal", + "live": "Live jetzt", + "upcoming": "Demnächst", + "offline": "Offline", + "subscribers": "Abonnenten", + "views": "Aufrufe", + "watchNow": "Jetzt ansehen", + "viewChannel": "Kanal anzeigen", + "viewAll": "Alle Videos anzeigen", + "noVideos": "Keine Videos gefunden", + "refreshed": "Aktualisiert", + "error": { + "noApiKey": "YouTube-API-Schlüssel nicht konfiguriert", + "noChannel": "YouTube-Kanal nicht angegeben", + "connection": "Verbindung zur YouTube-API nicht möglich" + }, + "widget": { + "description": "Vollständigen Kanal auf YouTube anzeigen", + "view": "YouTube-Kanal öffnen" + } + } +} diff --git a/locales/es-419.json b/locales/es-419.json new file mode 100644 index 0000000..35bb0b8 --- /dev/null +++ b/locales/es-419.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "Videos más recientes", + "channel": "Canal", + "live": "En vivo ahora", + "upcoming": "Próximamente", + "offline": "Desconectado", + "subscribers": "suscriptores", + "views": "vistas", + "watchNow": "Ver ahora", + "viewChannel": "Ver canal", + "viewAll": "Ver todos los videos", + "noVideos": "No se encontraron videos", + "refreshed": "Actualizado", + "error": { + "noApiKey": "Clave API de YouTube no configurada", + "noChannel": "Canal de YouTube no especificado", + "connection": "No se pudo conectar con la API de YouTube" + }, + "widget": { + "description": "Ver el canal completo en YouTube", + "view": "Abrir canal de YouTube" + } + } +} diff --git a/locales/es.json b/locales/es.json new file mode 100644 index 0000000..3b99e70 --- /dev/null +++ b/locales/es.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "Últimos vídeos", + "channel": "Canal", + "live": "En directo", + "upcoming": "Próximamente", + "offline": "Desconectado", + "subscribers": "suscriptores", + "views": "visualizaciones", + "watchNow": "Ver ahora", + "viewChannel": "Ver canal", + "viewAll": "Ver todos los vídeos", + "noVideos": "No se encontraron vídeos", + "refreshed": "Actualizado", + "error": { + "noApiKey": "Clave API de YouTube no configurada", + "noChannel": "Canal de YouTube no especificado", + "connection": "No se pudo conectar con la API de YouTube" + }, + "widget": { + "description": "Ver el canal completo en YouTube", + "view": "Abrir canal de YouTube" + } + } +} diff --git a/locales/fr.json b/locales/fr.json new file mode 100644 index 0000000..fb9b7cd --- /dev/null +++ b/locales/fr.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "Dernières vidéos", + "channel": "Chaîne", + "live": "En direct", + "upcoming": "À venir", + "offline": "Hors ligne", + "subscribers": "abonnés", + "views": "vues", + "watchNow": "Regarder maintenant", + "viewChannel": "Voir la chaîne", + "viewAll": "Voir toutes les vidéos", + "noVideos": "Aucune vidéo trouvée", + "refreshed": "Actualisé", + "error": { + "noApiKey": "Clé API YouTube non configurée", + "noChannel": "Chaîne YouTube non spécifiée", + "connection": "Impossible de se connecter à l'API YouTube" + }, + "widget": { + "description": "Voir la chaîne complète sur YouTube", + "view": "Ouvrir la chaîne YouTube" + } + } +} diff --git a/locales/hi.json b/locales/hi.json new file mode 100644 index 0000000..26f8b8d --- /dev/null +++ b/locales/hi.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "नवीनतम वीडियो", + "channel": "चैनल", + "live": "अभी लाइव", + "upcoming": "आने वाला", + "offline": "ऑफ़लाइन", + "subscribers": "सब्सक्राइबर", + "views": "दृश्य", + "watchNow": "अभी देखें", + "viewChannel": "चैनल देखें", + "viewAll": "सभी वीडियो देखें", + "noVideos": "कोई वीडियो नहीं मिला", + "refreshed": "ताज़ा किया गया", + "error": { + "noApiKey": "YouTube API कुंजी कॉन्फ़िगर नहीं है", + "noChannel": "YouTube चैनल निर्दिष्ट नहीं है", + "connection": "YouTube API से कनेक्ट नहीं हो सका" + }, + "widget": { + "description": "YouTube पर पूरा चैनल देखें", + "view": "YouTube चैनल खोलें" + } + } +} diff --git a/locales/id.json b/locales/id.json new file mode 100644 index 0000000..70fee2e --- /dev/null +++ b/locales/id.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "Video Terbaru", + "channel": "Saluran", + "live": "Live Sekarang", + "upcoming": "Akan Datang", + "offline": "Offline", + "subscribers": "pelanggan", + "views": "tayangan", + "watchNow": "Tonton Sekarang", + "viewChannel": "Lihat Saluran", + "viewAll": "Lihat Semua Video", + "noVideos": "Tidak ada video ditemukan", + "refreshed": "Diperbarui", + "error": { + "noApiKey": "Kunci API YouTube tidak dikonfigurasi", + "noChannel": "Saluran YouTube tidak ditentukan", + "connection": "Tidak dapat terhubung ke YouTube API" + }, + "widget": { + "description": "Lihat saluran lengkap di YouTube", + "view": "Buka Saluran YouTube" + } + } +} diff --git a/locales/it.json b/locales/it.json new file mode 100644 index 0000000..433897d --- /dev/null +++ b/locales/it.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "Video recenti", + "channel": "Canale", + "live": "In diretta ora", + "upcoming": "In arrivo", + "offline": "Offline", + "subscribers": "iscritti", + "views": "visualizzazioni", + "watchNow": "Guarda ora", + "viewChannel": "Visualizza canale", + "viewAll": "Visualizza tutti i video", + "noVideos": "Nessun video trovato", + "refreshed": "Aggiornato", + "error": { + "noApiKey": "Chiave API YouTube non configurata", + "noChannel": "Canale YouTube non specificato", + "connection": "Impossibile connettersi all'API di YouTube" + }, + "widget": { + "description": "Visualizza il canale completo su YouTube", + "view": "Apri canale YouTube" + } + } +} diff --git a/locales/nl.json b/locales/nl.json new file mode 100644 index 0000000..3505ff9 --- /dev/null +++ b/locales/nl.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "Nieuwste video's", + "channel": "Kanaal", + "live": "Nu live", + "upcoming": "Binnenkort", + "offline": "Offline", + "subscribers": "abonnees", + "views": "weergaven", + "watchNow": "Nu kijken", + "viewChannel": "Kanaal bekijken", + "viewAll": "Alle video's bekijken", + "noVideos": "Geen video's gevonden", + "refreshed": "Vernieuwd", + "error": { + "noApiKey": "YouTube API-sleutel niet geconfigureerd", + "noChannel": "YouTube-kanaal niet opgegeven", + "connection": "Kon geen verbinding maken met YouTube API" + }, + "widget": { + "description": "Volledig kanaal op YouTube bekijken", + "view": "YouTube-kanaal openen" + } + } +} diff --git a/locales/pl.json b/locales/pl.json new file mode 100644 index 0000000..5918f42 --- /dev/null +++ b/locales/pl.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "Najnowsze filmy", + "channel": "Kanał", + "live": "Teraz na żywo", + "upcoming": "Nadchodzące", + "offline": "Offline", + "subscribers": "subskrybentów", + "views": "wyświetleń", + "watchNow": "Obejrzyj teraz", + "viewChannel": "Wyświetl kanał", + "viewAll": "Wyświetl wszystkie filmy", + "noVideos": "Nie znaleziono filmów", + "refreshed": "Odświeżono", + "error": { + "noApiKey": "Klucz API YouTube nie jest skonfigurowany", + "noChannel": "Kanał YouTube nie został określony", + "connection": "Nie można połączyć się z API YouTube" + }, + "widget": { + "description": "Zobacz pełny kanał na YouTube", + "view": "Otwórz kanał YouTube" + } + } +} diff --git a/locales/pt-BR.json b/locales/pt-BR.json new file mode 100644 index 0000000..e7b50f3 --- /dev/null +++ b/locales/pt-BR.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "Vídeos mais recentes", + "channel": "Canal", + "live": "Ao vivo agora", + "upcoming": "Em breve", + "offline": "Offline", + "subscribers": "inscritos", + "views": "visualizações", + "watchNow": "Assistir agora", + "viewChannel": "Ver canal", + "viewAll": "Ver todos os vídeos", + "noVideos": "Nenhum vídeo encontrado", + "refreshed": "Atualizado", + "error": { + "noApiKey": "Chave API do YouTube não configurada", + "noChannel": "Canal do YouTube não especificado", + "connection": "Não foi possível conectar à API do YouTube" + }, + "widget": { + "description": "Ver o canal completo no YouTube", + "view": "Abrir canal do YouTube" + } + } +} diff --git a/locales/pt.json b/locales/pt.json new file mode 100644 index 0000000..b3f9776 --- /dev/null +++ b/locales/pt.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "Vídeos mais recentes", + "channel": "Canal", + "live": "Ao vivo agora", + "upcoming": "Em breve", + "offline": "Offline", + "subscribers": "subscritores", + "views": "visualizações", + "watchNow": "Ver agora", + "viewChannel": "Ver canal", + "viewAll": "Ver todos os vídeos", + "noVideos": "Nenhum vídeo encontrado", + "refreshed": "Atualizado", + "error": { + "noApiKey": "Chave API do YouTube não configurada", + "noChannel": "Canal do YouTube não especificado", + "connection": "Não foi possível ligar à API do YouTube" + }, + "widget": { + "description": "Ver o canal completo no YouTube", + "view": "Abrir canal do YouTube" + } + } +} diff --git a/locales/sr.json b/locales/sr.json new file mode 100644 index 0000000..87e64ae --- /dev/null +++ b/locales/sr.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "Најновији видео снимци", + "channel": "Канал", + "live": "Уживо сада", + "upcoming": "Ускоро", + "offline": "Офлајн", + "subscribers": "претплатника", + "views": "прегледа", + "watchNow": "Гледај сада", + "viewChannel": "Погледај канал", + "viewAll": "Погледај све видео снимке", + "noVideos": "Нису пронађени видео снимци", + "refreshed": "Освежено", + "error": { + "noApiKey": "YouTube API кључ није конфигурисан", + "noChannel": "YouTube канал није наведен", + "connection": "Није могуће повезати се са YouTube API" + }, + "widget": { + "description": "Погледајте комплетан канал на YouTube", + "view": "Отвори YouTube канал" + } + } +} diff --git a/locales/sv.json b/locales/sv.json new file mode 100644 index 0000000..db66a24 --- /dev/null +++ b/locales/sv.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "Senaste videor", + "channel": "Kanal", + "live": "Live nu", + "upcoming": "Kommande", + "offline": "Offline", + "subscribers": "prenumeranter", + "views": "visningar", + "watchNow": "Titta nu", + "viewChannel": "Visa kanal", + "viewAll": "Visa alla videor", + "noVideos": "Inga videor hittades", + "refreshed": "Uppdaterad", + "error": { + "noApiKey": "YouTube API-nyckel inte konfigurerad", + "noChannel": "YouTube-kanal inte angiven", + "connection": "Kunde inte ansluta till YouTube API" + }, + "widget": { + "description": "Visa fullständig kanal på YouTube", + "view": "Öppna YouTube-kanal" + } + } +} diff --git a/locales/zh-Hans-CN.json b/locales/zh-Hans-CN.json new file mode 100644 index 0000000..ed142f2 --- /dev/null +++ b/locales/zh-Hans-CN.json @@ -0,0 +1,26 @@ +{ + "youtube": { + "title": "YouTube", + "videos": "最新视频", + "channel": "频道", + "live": "正在直播", + "upcoming": "即将开始", + "offline": "离线", + "subscribers": "订阅者", + "views": "次观看", + "watchNow": "立即观看", + "viewChannel": "查看频道", + "viewAll": "查看所有视频", + "noVideos": "未找到视频", + "refreshed": "已刷新", + "error": { + "noApiKey": "未配置 YouTube API 密钥", + "noChannel": "未指定 YouTube 频道", + "connection": "无法连接到 YouTube API" + }, + "widget": { + "description": "在 YouTube 上查看完整频道", + "view": "打开 YouTube 频道" + } + } +} diff --git a/package.json b/package.json index 44803f4..5597445 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@rmdes/indiekit-endpoint-youtube", - "version": "1.2.2", + "version": "1.2.3", "description": "YouTube channel endpoint for Indiekit. Display latest videos and live status from any YouTube channel.", "keywords": [ "indiekit",