Git Repository
Mini Video Library
Mini Video Library scannt lokale Medienordner, verwaltet Metadaten und Vorschaubilder und streamt kompatible Videos direkt per HTTP an den Browser.
HTTPS
https://zanvex.de/git/mini-video-library.gitinternal/i18n/i18n.go
Zum Verzeichnispackage i18n
var messages = map[string]map[string]string{
"de": {
"nav.collections": "Sammlungen", "collections.eyebrow": "AUTOMATISCH SORTIERT", "collections.title": "Smart Collections", "collections.help": "Dynamische Ansichten, die sich mit deiner Bibliothek aktualisieren.",
"nav.library": "Bibliothek", "nav.settings": "Einstellungen", "footer": "Lokal. Schnell. Privat.",
"home.eyebrow": "DEINE VIDEOS", "home.title": "Einfach ansehen.", "home.subtitle": "Ohne Cloud, Konten oder Ablenkung.", "home.scanning": "Scan läuft", "home.search": "Videos durchsuchen …", "home.filter": "Filtern", "home.all_resolutions": "Alle Auflösungen", "home.all_videos": "Alle Videos", "home.favorites": "Favoriten", "home.watched": "Gesehen", "home.unwatched": "Ungesehen", "home.videos": "Videos", "home.started": "Angefangen", "home.previous": "← Vorherige", "home.next": "Nächste →", "home.page": "Seite", "home.of": "von", "home.empty": "Noch keine Videos", "home.empty_help": "Füge unter Einstellungen einen Bibliotheksordner hinzu.", "home.setup": "Bibliothek einrichten",
"video.back": "← Zur Bibliothek", "video.label": "VIDEO", "video.play": "▶ Abspielen", "video.favorite": "Favorit", "video.reveal": "Im Explorer zeigen", "video.reset": "Status zurücksetzen", "video.resolution": "Auflösung", "video.codec": "Video", "video.container": "Container", "video.duration": "Dauer", "video.size": "Größe", "video.added": "Hinzugefügt", "video.media": "MEDIEN", "video.tracks": "Spuren", "video.artwork": "Artwork ändern", "video.regenerate": "Vorschaubild neu erzeugen", "video.poster": "Eigenes Poster", "video.upload": "Poster hochladen", "video.screenshot": "Video-Screenshot", "video.online": "Online-Metadaten", "video.online_help": "AniDB / TMDB manuell abrufen", "video.tmdb": "TMDB suchen", "video.anidb": "AniDB abrufen", "video.nfo": "NFO-Datei", "video.edit": "Metadaten bearbeiten", "video.title_field": "Titel", "video.tags": "Tags", "video.description": "Beschreibung", "video.save": "Änderungen speichern", "video.back_short": "← Zurück",
"settings.appearance": "Darstellung", "settings.language": "Sprache", "settings.theme": "Theme", "settings.system": "Systemstandard", "settings.save": "Speichern", "settings.install_theme": "Theme-ZIP installieren", "settings.theme_help": "ZIP mit theme.json, theme.css und optionalen Bildern oder Fonts.", "settings.installed_themes": "Installierte Themes",
"settings.library": "Bibliothek", "settings.ffmpeg": "FFmpeg", "settings.scan": "Scan", "settings.plugins": "Plugins", "settings.problems": "Probleme", "settings.stats": "Statistik", "settings.duplicates": "Duplikate", "settings.logs": "Logs", "settings.saved": "Einstellungen gespeichert.", "settings.folders": "Bibliotheksordner", "settings.folder_help": "Ein absoluter Pfad pro Zeile", "settings.thumbnail_width": "Thumbnail-Breite", "settings.scan_interval": "Scanintervall", "settings.ffmpeg_path": "ffmpeg-Pfad", "settings.ffprobe_path": "ffprobe-Pfad", "settings.install_ffmpeg": "FFmpeg + ffprobe installieren", "settings.scan_now": "Bibliothek jetzt scannen", "settings.cancel": "Abbrechen", "settings.full_scan": "Vollständig neu einlesen", "settings.rebuild_thumbnails": "Alle Vorschaubilder erneuern", "settings.problem_files": "Problemdateien", "settings.retry_all": "Alle erneut prüfen", "settings.refresh": "Aktualisieren", "settings.all": "Alle", "settings.errors": "Fehler", "settings.warnings": "Warnungen", "settings.info": "Info",
"settings.tracks": "Sprachen & Spuren", "settings.audio_language": "Bevorzugte Audiosprache", "settings.subtitle_language": "Bevorzugte Untertitelsprache", "settings.language_auto": "Automatisch",
},
"en": {
"nav.collections": "Collections", "collections.eyebrow": "AUTOMATICALLY SORTED", "collections.title": "Smart Collections", "collections.help": "Dynamic views that update with your library.",
"nav.library": "Library", "nav.settings": "Settings", "footer": "Local. Fast. Private.",
"home.eyebrow": "YOUR VIDEOS", "home.title": "Just press play.", "home.subtitle": "No cloud, accounts, or distractions.", "home.scanning": "Scan running", "home.search": "Search videos …", "home.filter": "Filter", "home.all_resolutions": "All resolutions", "home.all_videos": "All videos", "home.favorites": "Favorites", "home.watched": "Watched", "home.unwatched": "Unwatched", "home.videos": "videos", "home.started": "In progress", "home.previous": "← Previous", "home.next": "Next →", "home.page": "Page", "home.of": "of", "home.empty": "No videos yet", "home.empty_help": "Add a library folder in Settings.", "home.setup": "Set up library",
"video.back": "← Back to library", "video.label": "VIDEO", "video.play": "▶ Play", "video.favorite": "Favorite", "video.reveal": "Show in Explorer", "video.reset": "Reset status", "video.resolution": "Resolution", "video.codec": "Video", "video.container": "Container", "video.duration": "Duration", "video.size": "Size", "video.added": "Added", "video.media": "MEDIA", "video.tracks": "Tracks", "video.artwork": "Change artwork", "video.regenerate": "Regenerate thumbnail", "video.poster": "Custom poster", "video.upload": "Upload poster", "video.screenshot": "Video screenshot", "video.online": "Online metadata", "video.online_help": "Manually fetch AniDB / TMDB", "video.tmdb": "Search TMDB", "video.anidb": "Fetch AniDB", "video.nfo": "NFO file", "video.edit": "Edit metadata", "video.title_field": "Title", "video.tags": "Tags", "video.description": "Description", "video.save": "Save changes", "video.back_short": "← Back",
"settings.appearance": "Appearance", "settings.language": "Language", "settings.theme": "Theme", "settings.system": "System default", "settings.save": "Save", "settings.install_theme": "Install theme ZIP", "settings.theme_help": "ZIP containing theme.json, theme.css, and optional images or fonts.", "settings.installed_themes": "Installed themes",
"settings.library": "Library", "settings.ffmpeg": "FFmpeg", "settings.scan": "Scan", "settings.plugins": "Plugins", "settings.problems": "Problems", "settings.stats": "Statistics", "settings.duplicates": "Duplicates", "settings.logs": "Logs", "settings.saved": "Settings saved.", "settings.folders": "Library folders", "settings.folder_help": "One absolute path per line", "settings.thumbnail_width": "Thumbnail width", "settings.scan_interval": "Scan interval", "settings.ffmpeg_path": "ffmpeg path", "settings.ffprobe_path": "ffprobe path", "settings.install_ffmpeg": "Install FFmpeg + ffprobe", "settings.scan_now": "Scan library now", "settings.cancel": "Cancel", "settings.full_scan": "Re-index everything", "settings.rebuild_thumbnails": "Regenerate all thumbnails", "settings.problem_files": "Problem files", "settings.retry_all": "Retry all", "settings.refresh": "Refresh", "settings.all": "All", "settings.errors": "Errors", "settings.warnings": "Warnings", "settings.info": "Info",
"settings.tracks": "Languages & tracks", "settings.audio_language": "Preferred audio language", "settings.subtitle_language": "Preferred subtitle language", "settings.language_auto": "Automatic",
},
}
func Normalize(language string) string {
if language == "en" {
return "en"
}
return "de"
}
func T(language, key string) string {
language = Normalize(language)
if value := messages[language][key]; value != "" {
return value
}
if value := messages["de"][key]; value != "" {
return value
}
return key
}