diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-08-24 10:04:46 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-08-24 10:04:46 +0200 |
| commit | 6af05abf410bbd038ce7fa6915a659defc509071 (patch) | |
| tree | 09b1c941fa446b077ff51282fa18250998528263 /packages/meshbay-hub/src/meshbay_hub/static/locales | |
| parent | c4981454078a59f776d484f0f1828f2fc5eaad09 (diff) | |
| download | meshbay-6af05abf410bbd038ce7fa6915a659defc509071.tar.gz | |
feat(node,hub): add Videos group app (poster grid, flat list, TMDB metadata)
Implements docs/mediacenter.md: a "Videos" group application built on the
existing files index rather than a separate catalogue. On the node side,
new indexer enrichment (technical probe, filename/season parsing, thumbnail
generation) runs per-file once an operator has chosen a video_root for the
group, plus a TMDB client for on-demand poster/metadata lookups (never
client-side, thumbnails delivered over the existing chunk path). On the hub
side, a new video-app.js renders a lazily-mounted poster grid or a
thumbnail-only flat list, with TMDB entirely optional per group.
Along the way: the global apps registry now drives Settings' default-tab
picker instead of a hardcoded list, and the video_root is configured from
group Settings (like uploads) rather than from Files, with the node
refusing to run any TMDB/thumbnail work until one is set.
Fixes several bugs found via live testing against a real library, notably
a race between two effects writing the same "image ready" state that could
leave a poster grid spinning forever on a same-tab revisit — see
mediacenter.md §5.4 for the full account of each one.
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales')
10 files changed, 292 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js index 866212f..6634cfb 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js @@ -76,6 +76,7 @@ export default { 'group.default_name': 'Gruppe', 'group.tab_files': 'Dateien', 'group.tab_chat': 'Chat', + 'group.tab_video': 'Videos', 'group.tab_members': 'Mitglieder', 'group.tab_settings': "Einstellungen", 'members.danger_leave_hint': "Sie verlieren den Zugriff auf die Dateien und den Chat dieser Gruppe.", @@ -156,6 +157,18 @@ export default { 'group.upload_indexing': 'wird indiziert …', 'video.err_transport': 'Transport nicht verbunden', 'video.err_mse': 'Codec wird für das Streaming nicht unterstützt: {codec}', + 'video.mode_poster': 'Poster', + 'video.mode_flat': 'Flache Liste', + 'video.empty': 'Keine Videos gefunden.', + 'video.no_root_configured': 'Für diese Gruppe ist noch kein Videos-Stammordner festgelegt — ein Operator kann in den Einstellungen einen auswählen.', + 'video.director': 'Regie', + 'video.specials': 'Specials', + 'video.season_n': 'Staffel {n}', + 'video.episode_n': 'Episode {n}', + 'video.n_episodes': { + one: '{n} Episode', + other: '{n} Episoden', + }, // LAN-Cast 'cast.start': 'Auf Gerät übertragen', @@ -572,6 +585,22 @@ export default { 'settings_node.scan_save': 'Speichern', 'settings_node.scan_saving': 'Wird gespeichert…', 'settings_node.scan_saved': 'Gespeichert.', + 'settings_node.tmdb_title': 'TMDB-Metadaten', + 'settings_node.tmdb_hint': 'Ermöglicht der Videos-App, Poster, Beschreibungen und Besetzung von TMDB anzuzeigen. Deaktiviert bedeutet: nur Vorschaubilder, keine Anfrage an einen Drittanbieter.', + 'settings_node.tmdb_enabled': 'Aktiviert', + 'settings_node.tmdb_disabled': 'Deaktiviert', + 'settings_node.tmdb_token_label': 'Eigenes API-Token (optional)', + 'settings_node.tmdb_token_placeholder': 'Leer lassen, um das mitgelieferte Standard-Token zu verwenden', + 'settings_node.tmdb_token_customized': 'Ein eigenes Token ist gesetzt.', + 'settings_node.tmdb_token_default': 'Verwendet das mitgelieferte Standard-Token.', + 'settings_node.tmdb_save': 'Speichern', + 'settings_node.tmdb_language_label': 'Sprache', + 'settings_node.tmdb_language_hint': 'Gilt für alle — ein gemeinsamer Cache, keine Anfrage pro Betrachter.', + 'settings_node.video_root_title': 'Videos-Stammordner', + 'settings_node.video_root_hint': 'Welcher Ordner (oder Unterordner) als Einstiegspunkt der Videos-App für diese Gruppe dient. In Videos wird nichts angezeigt, und es werden keine TMDB-Abfragen ausgeführt, bis einer ausgewählt wurde.', + 'settings_node.video_root_none': '— keiner ausgewählt —', + 'settings_node.video_root_save': 'Speichern', + 'settings_node.video_root_change_confirm': 'Das Ändern des Videos-Stammordners ersetzt, was jedes Mitglied im Videos-Tab sieht. Fortfahren?', // Create-group wizard 'wizard.title': 'Gruppe erstellen', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js index a83b067..ebdb3e2 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js @@ -77,6 +77,7 @@ export default { 'group.default_name': 'Group', 'group.tab_files': 'Files', 'group.tab_chat': 'Chat', + 'group.tab_video': 'Videos', 'group.tab_members': 'Members', 'group.tab_settings': "Settings", 'members.danger_leave_hint': "You will lose access to this group's files and chat.", @@ -154,6 +155,18 @@ export default { 'group.upload_indexing': 'indexing…', 'video.err_transport': 'Transport not connected', 'video.err_mse': 'Codec not supported for streaming: {codec}', + 'video.mode_poster': 'Posters', + 'video.mode_flat': 'Flat list', + 'video.empty': 'No videos found.', + 'video.no_root_configured': 'No Videos root folder is set for this group yet — an operator can choose one in Settings.', + 'video.director': 'Director', + 'video.specials': 'Specials', + 'video.season_n': 'Season {n}', + 'video.episode_n': 'Episode {n}', + 'video.n_episodes': { + one: '{n} episode', + other: '{n} episodes', + }, // LAN cast 'cast.start': 'Cast to device', @@ -396,6 +409,22 @@ export default { 'settings_node.scan_save': 'Save', 'settings_node.scan_saving': 'Saving…', 'settings_node.scan_saved': 'Saved.', + 'settings_node.tmdb_title': 'TMDB metadata', + 'settings_node.tmdb_hint': 'Lets the Videos app show posters, overviews and cast from TMDB. Off means thumbnail-only browsing, with no request to a third party.', + 'settings_node.tmdb_enabled': 'Enabled', + 'settings_node.tmdb_disabled': 'Disabled', + 'settings_node.tmdb_token_label': 'Custom API token (optional)', + 'settings_node.tmdb_token_placeholder': 'Leave blank to use the shipped default', + 'settings_node.tmdb_token_customized': 'A custom token is set.', + 'settings_node.tmdb_token_default': 'Using the shipped default token.', + 'settings_node.tmdb_save': 'Save', + 'settings_node.tmdb_language_label': 'Language', + 'settings_node.tmdb_language_hint': 'Applies to everyone — one shared cache, not a per-viewer request.', + 'settings_node.video_root_title': 'Videos root folder', + 'settings_node.video_root_hint': 'Which folder (or subfolder) the Videos app treats as its entry point for this group. Nothing shows in Videos, and no TMDB lookups run, until one is chosen.', + 'settings_node.video_root_none': '— none chosen —', + 'settings_node.video_root_save': 'Save', + 'settings_node.video_root_change_confirm': 'Changing the Videos root replaces what every member sees in the Videos tab. Continue?', // Members 'members.col_role': 'Role', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js index 1621182..d028279 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js @@ -74,6 +74,7 @@ export default { 'group.default_name': 'Grupo', 'group.tab_files': 'Archivos', 'group.tab_chat': 'Chat', + 'group.tab_video': 'Vídeos', 'group.tab_members': 'Miembros', 'group.tab_settings': "Ajustes", 'members.danger_leave_hint': "Perderá el acceso a los archivos y al chat de este grupo.", @@ -154,6 +155,18 @@ export default { 'group.upload_indexing': 'indexando…', 'video.err_transport': 'Transporte no conectado', 'video.err_mse': 'Códec no compatible con la reproducción en continuo: {codec}', + 'video.mode_poster': 'Pósteres', + 'video.mode_flat': 'Lista plana', + 'video.empty': 'No se encontraron vídeos.', + 'video.no_root_configured': 'Aún no se ha definido una carpeta raíz de Vídeos para este grupo — un operador puede elegir una en Configuración.', + 'video.director': 'Director', + 'video.specials': 'Especiales', + 'video.season_n': 'Temporada {n}', + 'video.episode_n': 'Episodio {n}', + 'video.n_episodes': { + one: '{n} episodio', + other: '{n} episodios', + }, // LAN cast 'cast.start': 'Enviar a dispositivo', @@ -567,6 +580,22 @@ export default { 'settings_node.scan_save': 'Guardar', 'settings_node.scan_saving': 'Guardando…', 'settings_node.scan_saved': 'Guardado.', + 'settings_node.tmdb_title': 'Metadatos de TMDB', + 'settings_node.tmdb_hint': 'Permite que la aplicación de Vídeos muestre pósteres, sinopsis y reparto desde TMDB. Desactivado significa solo miniaturas, sin ninguna solicitud a un tercero.', + 'settings_node.tmdb_enabled': 'Activado', + 'settings_node.tmdb_disabled': 'Desactivado', + 'settings_node.tmdb_token_label': 'Token de API personalizado (opcional)', + 'settings_node.tmdb_token_placeholder': 'Déjelo en blanco para usar el token predeterminado', + 'settings_node.tmdb_token_customized': 'Hay un token personalizado configurado.', + 'settings_node.tmdb_token_default': 'Usando el token predeterminado.', + 'settings_node.tmdb_save': 'Guardar', + 'settings_node.tmdb_language_label': 'Idioma', + 'settings_node.tmdb_language_hint': 'Se aplica a todos — una caché compartida, no una solicitud por espectador.', + 'settings_node.video_root_title': 'Carpeta raíz de Vídeos', + 'settings_node.video_root_hint': 'Qué carpeta (o subcarpeta) trata la app Vídeos como su punto de entrada para este grupo. No se muestra nada en Vídeos, ni se realizan búsquedas en TMDB, hasta que se elija una.', + 'settings_node.video_root_none': '— ninguna elegida —', + 'settings_node.video_root_save': 'Guardar', + 'settings_node.video_root_change_confirm': 'Cambiar la raíz de Vídeos reemplaza lo que ve cada miembro en la pestaña Vídeos. ¿Continuar?', // Create group wizard 'wizard.title': 'Crear grupo', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js index 6e21a06..621650d 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js @@ -75,6 +75,7 @@ export default { 'group.default_name': 'Groupe', 'group.tab_files': 'Fichiers', 'group.tab_chat': 'Discussion', + 'group.tab_video': 'Vidéos', 'group.tab_members': 'Membres', 'group.tab_settings': "Paramètres", 'members.danger_leave_hint': "Vous perdrez l’accès aux fichiers et à la discussion de ce groupe.", @@ -155,6 +156,18 @@ export default { 'group.upload_indexing': 'indexation…', 'video.err_transport': 'Transport non connecté', 'video.err_mse': 'Codec non pris en charge pour la diffusion : {codec}', + 'video.mode_poster': 'Affiches', + 'video.mode_flat': 'Liste à plat', + 'video.empty': 'Aucune vidéo trouvée.', + 'video.no_root_configured': "Aucun dossier racine des Vidéos n'est encore défini pour ce groupe — un opérateur peut en choisir un dans les Paramètres.", + 'video.director': 'Réalisateur', + 'video.specials': 'Bonus', + 'video.season_n': 'Saison {n}', + 'video.episode_n': 'Épisode {n}', + 'video.n_episodes': { + one: '{n} épisode', + other: '{n} épisodes', + }, // LAN cast 'cast.start': 'Diffuser sur un appareil', @@ -583,6 +596,22 @@ export default { 'settings_node.scan_save': 'Enregistrer', 'settings_node.scan_saving': 'Enregistrement…', 'settings_node.scan_saved': 'Enregistré.', + 'settings_node.tmdb_title': 'Métadonnées TMDB', + 'settings_node.tmdb_hint': "Permet à l'application Vidéos d'afficher affiches, résumés et distribution depuis TMDB. Désactivé signifie navigation par vignettes uniquement, sans aucune requête vers un tiers.", + 'settings_node.tmdb_enabled': 'Activé', + 'settings_node.tmdb_disabled': 'Désactivé', + 'settings_node.tmdb_token_label': "Jeton d'API personnalisé (facultatif)", + 'settings_node.tmdb_token_placeholder': 'Laisser vide pour utiliser le jeton fourni par défaut', + 'settings_node.tmdb_token_customized': 'Un jeton personnalisé est défini.', + 'settings_node.tmdb_token_default': 'Utilise le jeton fourni par défaut.', + 'settings_node.tmdb_save': 'Enregistrer', + 'settings_node.tmdb_language_label': 'Langue', + 'settings_node.tmdb_language_hint': "S'applique à tout le monde — un cache partagé, pas une requête par personne.", + 'settings_node.video_root_title': 'Dossier racine des Vidéos', + 'settings_node.video_root_hint': "Quel dossier (ou sous-dossier) sert de point d'entrée à l'application Vidéos pour ce groupe. Rien ne s'affiche dans Vidéos, et aucune recherche TMDB n'est effectuée, tant qu'aucun n'est choisi.", + 'settings_node.video_root_none': '— aucun choisi —', + 'settings_node.video_root_save': 'Enregistrer', + 'settings_node.video_root_change_confirm': "Changer la racine des Vidéos remplace ce que chaque membre voit dans l'onglet Vidéos. Continuer ?", // Create group wizard 'wizard.title': 'Créer un groupe', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js index edd15ab..71fb9ba 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js @@ -75,6 +75,7 @@ export default { 'group.default_name': 'Gruppo', 'group.tab_files': 'File', 'group.tab_chat': 'Chat', + 'group.tab_video': 'Video', 'group.tab_members': 'Membri', 'group.tab_settings': "Impostazioni", 'members.danger_leave_hint': "Perderai l’accesso ai file e alla chat di questo gruppo.", @@ -155,6 +156,18 @@ export default { 'group.upload_indexing': 'indicizzazione…', 'video.err_transport': 'Trasporto non connesso', 'video.err_mse': 'Codec non supportato per lo streaming: {codec}', + 'video.mode_poster': 'Locandine', + 'video.mode_flat': 'Elenco semplice', + 'video.empty': 'Nessun video trovato.', + 'video.no_root_configured': 'Per questo gruppo non è ancora impostata una cartella radice di Video — un operatore può sceglierne una nelle Impostazioni.', + 'video.director': 'Regista', + 'video.specials': 'Speciali', + 'video.season_n': 'Stagione {n}', + 'video.episode_n': 'Episodio {n}', + 'video.n_episodes': { + one: '{n} episodio', + other: '{n} episodi', + }, // LAN cast 'cast.start': 'Trasmetti al dispositivo', @@ -581,6 +594,22 @@ export default { 'settings_node.scan_save': 'Salva', 'settings_node.scan_saving': 'Salvataggio…', 'settings_node.scan_saved': 'Salvato.', + 'settings_node.tmdb_title': 'Metadati TMDB', + 'settings_node.tmdb_hint': "Permette all'app Video di mostrare locandine, trame e cast da TMDB. Disattivato significa solo miniature, senza alcuna richiesta verso terzi.", + 'settings_node.tmdb_enabled': 'Attivato', + 'settings_node.tmdb_disabled': 'Disattivato', + 'settings_node.tmdb_token_label': 'Token API personalizzato (facoltativo)', + 'settings_node.tmdb_token_placeholder': 'Lascia vuoto per usare il token predefinito', + 'settings_node.tmdb_token_customized': 'È impostato un token personalizzato.', + 'settings_node.tmdb_token_default': 'In uso il token predefinito.', + 'settings_node.tmdb_save': 'Salva', + 'settings_node.tmdb_language_label': 'Lingua', + 'settings_node.tmdb_language_hint': 'Vale per tutti — una cache condivisa, non una richiesta per spettatore.', + 'settings_node.video_root_title': 'Cartella radice di Video', + 'settings_node.video_root_hint': "Quale cartella (o sottocartella) l'app Video considera come punto di ingresso per questo gruppo. In Video non viene mostrato nulla, e non viene eseguita alcuna ricerca TMDB, finché non ne viene scelta una.", + 'settings_node.video_root_none': '— nessuna scelta —', + 'settings_node.video_root_save': 'Salva', + 'settings_node.video_root_change_confirm': 'Cambiare la radice di Video sostituisce ciò che ogni membro vede nella scheda Video. Continuare?', // Create-group wizard 'wizard.title': 'Crea gruppo', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js index 00fffed..3336705 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js @@ -73,6 +73,7 @@ export default { 'group.default_name': 'グループ', 'group.tab_files': 'ファイル', 'group.tab_chat': 'チャット', + 'group.tab_video': '動画', 'group.tab_members': 'メンバー', 'group.tab_settings': "設定", 'members.danger_leave_hint': "このグループのファイルとチャットにアクセスできなくなります。", @@ -152,6 +153,18 @@ export default { 'group.upload_indexing': 'インデックスを作成中…', 'video.err_transport': 'トランスポートが接続されていません', 'video.err_mse': 'ストリーミング再生に対応していないコーデックです:{codec}', + 'video.mode_poster': 'ポスター表示', + 'video.mode_flat': 'フラット表示', + 'video.empty': '動画が見つかりません。', + 'video.no_root_configured': 'このグループにはまだ動画のルートフォルダが設定されていません — 操作者が設定画面で選択できます。', + 'video.director': '監督', + 'video.specials': '特別編', + 'video.season_n': 'シーズン{n}', + 'video.episode_n': '第{n}話', + 'video.n_episodes': { + one: '{n}話', + other: '{n}話', + }, // LAN cast 'cast.start': 'デバイスにキャスト', @@ -565,6 +578,22 @@ export default { 'settings_node.scan_save': '保存', 'settings_node.scan_saving': '保存中…', 'settings_node.scan_saved': '保存しました。', + 'settings_node.tmdb_title': 'TMDBメタデータ', + 'settings_node.tmdb_hint': '動画アプリでTMDBのポスター、あらすじ、キャストを表示できるようにします。無効にするとサムネイルのみの表示になり、第三者への通信は発生しません。', + 'settings_node.tmdb_enabled': '有効', + 'settings_node.tmdb_disabled': '無効', + 'settings_node.tmdb_token_label': 'カスタムAPIトークン(任意)', + 'settings_node.tmdb_token_placeholder': '空欄にすると同梱のデフォルトトークンを使用します', + 'settings_node.tmdb_token_customized': 'カスタムトークンが設定されています。', + 'settings_node.tmdb_token_default': '同梱のデフォルトトークンを使用しています。', + 'settings_node.tmdb_save': '保存', + 'settings_node.tmdb_language_label': '言語', + 'settings_node.tmdb_language_hint': '全員に適用されます — 共有キャッシュであり、視聴者ごとのリクエストではありません。', + 'settings_node.video_root_title': '動画のルートフォルダ', + 'settings_node.video_root_hint': 'このグループで動画アプリの起点とするフォルダ(またはサブフォルダ)です。選択されるまで、動画には何も表示されず、TMDB への問い合わせも行われません。', + 'settings_node.video_root_none': '— 未選択 —', + 'settings_node.video_root_save': '保存', + 'settings_node.video_root_change_confirm': '動画のルートフォルダを変更すると、全メンバーの動画タブの表示内容が変わります。続行しますか?', // Wizard 'wizard.title': 'グループを作成', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js index 2837ebb..28be024 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js @@ -76,6 +76,7 @@ export default { 'group.default_name': 'Groep', 'group.tab_files': 'Bestanden', 'group.tab_chat': 'Chat', + 'group.tab_video': "Video's", 'group.tab_members': 'Leden', 'group.tab_settings': "Instellingen", 'members.danger_leave_hint': "U verliest de toegang tot de bestanden en de chat van deze groep.", @@ -156,6 +157,18 @@ export default { 'group.upload_indexing': 'indexeren…', 'video.err_transport': 'Transport niet verbonden', 'video.err_mse': 'Codec wordt niet ondersteund voor streamen: {codec}', + 'video.mode_poster': 'Posters', + 'video.mode_flat': 'Platte lijst', + 'video.empty': "Geen video's gevonden.", + 'video.no_root_configured': "Er is nog geen hoofdmap voor Video's ingesteld voor deze groep — een operator kan er een kiezen bij Instellingen.", + 'video.director': 'Regisseur', + 'video.specials': "Extra's", + 'video.season_n': 'Seizoen {n}', + 'video.episode_n': 'Aflevering {n}', + 'video.n_episodes': { + one: '{n} aflevering', + other: '{n} afleveringen', + }, // LAN cast 'cast.start': 'Naar apparaat casten', @@ -583,6 +596,22 @@ export default { 'settings_node.scan_save': 'Opslaan', 'settings_node.scan_saving': 'Bezig met opslaan…', 'settings_node.scan_saved': 'Opgeslagen.', + 'settings_node.tmdb_title': 'TMDB-metadata', + 'settings_node.tmdb_hint': "Laat de Video's-app posters, samenvattingen en cast van TMDB tonen. Uit betekent alleen miniaturen, zonder enig verzoek aan een derde partij.", + 'settings_node.tmdb_enabled': 'Ingeschakeld', + 'settings_node.tmdb_disabled': 'Uitgeschakeld', + 'settings_node.tmdb_token_label': 'Eigen API-token (optioneel)', + 'settings_node.tmdb_token_placeholder': 'Leeg laten om de meegeleverde standaard te gebruiken', + 'settings_node.tmdb_token_customized': 'Er is een eigen token ingesteld.', + 'settings_node.tmdb_token_default': 'Gebruikt de meegeleverde standaardtoken.', + 'settings_node.tmdb_save': 'Opslaan', + 'settings_node.tmdb_language_label': 'Taal', + 'settings_node.tmdb_language_hint': 'Geldt voor iedereen — één gedeelde cache, geen verzoek per kijker.', + 'settings_node.video_root_title': "Hoofdmap voor Video's", + 'settings_node.video_root_hint': "Welke map (of submap) de Video's-app als startpunt gebruikt voor deze groep. Er wordt niets getoond in Video's, en er worden geen TMDB-opzoekingen uitgevoerd, totdat er een gekozen is.", + 'settings_node.video_root_none': '— geen gekozen —', + 'settings_node.video_root_save': 'Opslaan', + 'settings_node.video_root_change_confirm': "Het wijzigen van de hoofdmap voor Video's vervangt wat elk lid ziet in het tabblad Video's. Doorgaan?", // Create group wizard 'wizard.title': 'Groep aanmaken', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js index 760f29c..d4eb325 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js @@ -80,6 +80,7 @@ export default { 'group.default_name': 'Grupa', 'group.tab_files': 'Pliki', 'group.tab_chat': 'Czat', + 'group.tab_video': 'Wideo', 'group.tab_members': 'Członkowie', 'group.tab_settings': "Ustawienia", 'members.danger_leave_hint': "Utracisz dostęp do plików i czatu tej grupy.", @@ -161,6 +162,20 @@ export default { 'group.upload_indexing': 'indeksowanie…', 'video.err_transport': 'Transport nie jest połączony', 'video.err_mse': 'Kodek nieobsługiwany przy odtwarzaniu strumieniowym: {codec}', + 'video.mode_poster': 'Plakaty', + 'video.mode_flat': 'Lista płaska', + 'video.empty': 'Nie znaleziono żadnych filmów.', + 'video.no_root_configured': 'Dla tej grupy nie wybrano jeszcze katalogu głównego Wideo — operator może go wybrać w Ustawieniach.', + 'video.director': 'Reżyser', + 'video.specials': 'Dodatki', + 'video.season_n': 'Sezon {n}', + 'video.episode_n': 'Odcinek {n}', + 'video.n_episodes': { + one: '{n} odcinek', + few: '{n} odcinki', + many: '{n} odcinków', + other: '{n} odcinka', + }, // LAN cast 'cast.start': 'Przesyłaj na urządzenie', @@ -604,6 +619,22 @@ export default { 'settings_node.scan_save': 'Zapisz', 'settings_node.scan_saving': 'Zapisywanie…', 'settings_node.scan_saved': 'Zapisano.', + 'settings_node.tmdb_title': 'Metadane TMDB', + 'settings_node.tmdb_hint': 'Pozwala aplikacji Wideo pokazywać plakaty, opisy i obsadę z TMDB. Wyłączone oznacza przeglądanie tylko z miniaturami, bez żadnego żądania do zewnętrznego serwisu.', + 'settings_node.tmdb_enabled': 'Włączone', + 'settings_node.tmdb_disabled': 'Wyłączone', + 'settings_node.tmdb_token_label': 'Własny token API (opcjonalnie)', + 'settings_node.tmdb_token_placeholder': 'Pozostaw puste, aby użyć domyślnego tokenu', + 'settings_node.tmdb_token_customized': 'Ustawiono własny token.', + 'settings_node.tmdb_token_default': 'Używany jest domyślny token.', + 'settings_node.tmdb_save': 'Zapisz', + 'settings_node.tmdb_language_label': 'Język', + 'settings_node.tmdb_language_hint': 'Dotyczy wszystkich — jedna współdzielona pamięć podręczna, bez osobnego żądania dla każdego widza.', + 'settings_node.video_root_title': 'Katalog główny Wideo', + 'settings_node.video_root_hint': 'Który katalog (lub podkatalog) aplikacja Wideo traktuje jako punkt wejścia dla tej grupy. W Wideo nic się nie wyświetla i nie są wykonywane żadne zapytania do TMDB, dopóki nie zostanie wybrany.', + 'settings_node.video_root_none': '— nie wybrano —', + 'settings_node.video_root_save': 'Zapisz', + 'settings_node.video_root_change_confirm': 'Zmiana katalogu głównego Wideo zastępuje to, co widzi każdy członek w karcie Wideo. Kontynuować?', // Create-group wizard 'wizard.title': 'Utwórz grupę', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js index 0001051..bba07a2 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js @@ -76,6 +76,7 @@ export default { 'group.default_name': 'Grupo', 'group.tab_files': 'Arquivos', 'group.tab_chat': 'Conversa', + 'group.tab_video': 'Vídeos', 'group.tab_members': 'Membros', 'group.tab_settings': "Configurações", 'members.danger_leave_hint': "Você perderá o acesso aos arquivos e ao chat deste grupo.", @@ -156,6 +157,18 @@ export default { 'group.upload_indexing': 'indexando…', 'video.err_transport': 'Transporte não conectado', 'video.err_mse': 'Codec sem suporte para transmissão: {codec}', + 'video.mode_poster': 'Pôsteres', + 'video.mode_flat': 'Lista simples', + 'video.empty': 'Nenhum vídeo encontrado.', + 'video.no_root_configured': 'Ainda não há uma pasta raiz de Vídeos definida para este grupo — um operador pode escolher uma em Configurações.', + 'video.director': 'Diretor', + 'video.specials': 'Especiais', + 'video.season_n': 'Temporada {n}', + 'video.episode_n': 'Episódio {n}', + 'video.n_episodes': { + one: '{n} episódio', + other: '{n} episódios', + }, // LAN cast 'cast.start': 'Transmitir para dispositivo', @@ -568,6 +581,22 @@ export default { 'settings_node.scan_save': 'Salvar', 'settings_node.scan_saving': 'Salvando…', 'settings_node.scan_saved': 'Salvo.', + 'settings_node.tmdb_title': 'Metadados do TMDB', + 'settings_node.tmdb_hint': 'Permite que o app de Vídeos mostre pôsteres, sinopses e elenco do TMDB. Desativado significa navegação apenas com miniaturas, sem nenhuma solicitação a terceiros.', + 'settings_node.tmdb_enabled': 'Ativado', + 'settings_node.tmdb_disabled': 'Desativado', + 'settings_node.tmdb_token_label': 'Token de API personalizado (opcional)', + 'settings_node.tmdb_token_placeholder': 'Deixe em branco para usar o token padrão', + 'settings_node.tmdb_token_customized': 'Um token personalizado está definido.', + 'settings_node.tmdb_token_default': 'Usando o token padrão.', + 'settings_node.tmdb_save': 'Salvar', + 'settings_node.tmdb_language_label': 'Idioma', + 'settings_node.tmdb_language_hint': 'Aplica-se a todos — um cache compartilhado, não uma solicitação por espectador.', + 'settings_node.video_root_title': 'Pasta raiz de Vídeos', + 'settings_node.video_root_hint': 'Qual pasta (ou subpasta) o app Vídeos trata como ponto de entrada para este grupo. Nada é exibido em Vídeos, e nenhuma busca no TMDB é feita, até que uma seja escolhida.', + 'settings_node.video_root_none': '— nenhuma escolhida —', + 'settings_node.video_root_save': 'Salvar', + 'settings_node.video_root_change_confirm': 'Alterar a raiz de Vídeos substitui o que cada membro vê na aba Vídeos. Continuar?', // Create group wizard 'wizard.title': 'Criar grupo', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js index ad8bf53..c9199c4 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js @@ -73,6 +73,7 @@ export default { 'group.default_name': '群组', 'group.tab_files': '文件', 'group.tab_chat': '聊天', + 'group.tab_video': '视频', 'group.tab_members': '成员', 'group.tab_settings': "设置", 'members.danger_leave_hint': "您将无法再访问该群组的文件和聊天。", @@ -149,6 +150,18 @@ export default { 'group.upload_indexing': '建立索引中…', 'video.err_transport': '传输未连接', 'video.err_mse': '该编解码器不支持流式播放:{codec}', + 'video.mode_poster': '海报视图', + 'video.mode_flat': '平铺列表', + 'video.empty': '未找到视频。', + 'video.no_root_configured': '此群组尚未设置视频根目录 — 操作员可以在设置中选择一个。', + 'video.director': '导演', + 'video.specials': '特别篇', + 'video.season_n': '第 {n} 季', + 'video.episode_n': '第 {n} 集', + 'video.n_episodes': { + one: '{n} 集', + other: '{n} 集', + }, // LAN cast 'cast.start': '投射到设备', @@ -551,6 +564,22 @@ export default { 'settings_node.scan_save': '保存', 'settings_node.scan_saving': '保存中…', 'settings_node.scan_saved': '已保存。', + 'settings_node.tmdb_title': 'TMDB 元数据', + 'settings_node.tmdb_hint': '允许视频应用显示来自 TMDB 的海报、简介和演职人员。关闭后仅显示缩略图浏览,不会向第三方发送任何请求。', + 'settings_node.tmdb_enabled': '已启用', + 'settings_node.tmdb_disabled': '已禁用', + 'settings_node.tmdb_token_label': '自定义 API 令牌(可选)', + 'settings_node.tmdb_token_placeholder': '留空以使用内置的默认令牌', + 'settings_node.tmdb_token_customized': '已设置自定义令牌。', + 'settings_node.tmdb_token_default': '正在使用内置的默认令牌。', + 'settings_node.tmdb_save': '保存', + 'settings_node.tmdb_language_label': '语言', + 'settings_node.tmdb_language_hint': '适用于所有人 — 共享同一个缓存,不是按观看者分别请求。', + 'settings_node.video_root_title': '视频根目录', + 'settings_node.video_root_hint': '该文件夹(或子文件夹)将作为此群组"视频"应用的入口。在选择之前,"视频"中不会显示任何内容,也不会执行任何 TMDB 查询。', + 'settings_node.video_root_none': '— 未选择 —', + 'settings_node.video_root_save': '保存', + 'settings_node.video_root_change_confirm': '更改视频根目录会替换每位成员在"视频"标签页中看到的内容。是否继续?', // Create group wizard 'wizard.title': '创建群组', |