Files
yt-local/translations/messages.pot
Astounds a0f315be51
All checks were successful
git-sync-with-mirror / git-sync (push) Successful in 32s
CI / test (push) Successful in 46s
feature/hls: Add HLS playback support, and refactors documentation for better usability and maintainability. (#1)
## Overview
This PR introduces HLS playback support, improves the player experience, and refactors documentation for better usability and maintainability.

## Key Features

### HLS Playback Support
- Add HLS integration via new JavaScript assets:
  - `hls.min.js`
  - `plyr.hls.start.js`
  - `watch.hls.js`
- Separate DASH and HLS logic:
  - `plyr-start.js` → `plyr.dash.start.js`
  - `watch.js` → `watch.dash.js`
- Update templates (`embed.html`, `watch.html`) for conditional player loading

### Native Storyboard Preview
- Add `native_player_storyboard` setting in `settings.py`
- Implement hover thumbnail preview for native player modes
- Add `storyboard-preview.js`

### UI and Player Adjustments
- Update templates and styles (`custom_plyr.css`)
- Modify backend modules to support new player modes:
  - `watch.py`, `channel.py`, `util.py`, and related components

### Internationalization
- Update translation files:
  - `messages.po`
  - `messages.pot`

### Testing and CI
- Add and update tests:
  - `test_shorts.py`
  - `test_util.py`
- Minor CI and release script improvements

## Documentation

### OpenRC Service Guide Rewrite
- Restructure `docs/basic-script-openrc/README.md` into:
  - Prerequisites
  - Installation
  - Service Management
  - Verification
  - Troubleshooting
- Add admonition blocks:
  - `[!NOTE]`, `[!TIP]`, `[!IMPORTANT]`, `[!WARNING]`, `[!CAUTION]`
- Fix log inspection command:
  ```bash
  doas tail -f /var/log/ytlocal.log
  ````

* Add path placeholders and clarify permission requirements
* Remove legacy and duplicate content

Reviewed-on: #1
Co-authored-by: Astounds <kirito@disroot.org>
Co-committed-by: Astounds <kirito@disroot.org>
2026-04-20 01:22:55 -04:00

432 lines
7.3 KiB
Plaintext

# Translations template for PROJECT.
# Copyright (C) 2026 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2026.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-04-05 16:52-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.18.0\n"
#: youtube/i18n_strings.py:13
msgid "Network"
msgstr ""
#: youtube/i18n_strings.py:14
msgid "Playback"
msgstr ""
#: youtube/i18n_strings.py:15
msgid "Interface"
msgstr ""
#: youtube/i18n_strings.py:18
msgid "Route Tor"
msgstr ""
#: youtube/i18n_strings.py:19
msgid "Default subtitles mode"
msgstr ""
#: youtube/i18n_strings.py:20
msgid "AV1 Codec Ranking"
msgstr ""
#: youtube/i18n_strings.py:21
msgid "VP8/VP9 Codec Ranking"
msgstr ""
#: youtube/i18n_strings.py:22
msgid "H.264 Codec Ranking"
msgstr ""
#: youtube/i18n_strings.py:23
msgid "Use integrated sources"
msgstr ""
#: youtube/i18n_strings.py:24
msgid "Route images"
msgstr ""
#: youtube/i18n_strings.py:25
msgid "Enable comments.js"
msgstr ""
#: youtube/i18n_strings.py:26
msgid "Enable SponsorBlock"
msgstr ""
#: youtube/i18n_strings.py:27
msgid "Enable embed page"
msgstr ""
#: youtube/i18n_strings.py:30
msgid "Related videos mode"
msgstr ""
#: youtube/i18n_strings.py:31
msgid "Comments mode"
msgstr ""
#: youtube/i18n_strings.py:32
msgid "Enable comment avatars"
msgstr ""
#: youtube/i18n_strings.py:33
msgid "Default comment sorting"
msgstr ""
#: youtube/i18n_strings.py:34
msgid "Theater mode"
msgstr ""
#: youtube/i18n_strings.py:35
msgid "Autoplay videos"
msgstr ""
#: youtube/i18n_strings.py:36
msgid "Default resolution"
msgstr ""
#: youtube/i18n_strings.py:37
msgid "Use video player"
msgstr ""
#: youtube/i18n_strings.py:38
msgid "Use video download"
msgstr ""
#: youtube/i18n_strings.py:39
msgid "Proxy images"
msgstr ""
#: youtube/i18n_strings.py:40
msgid "Theme"
msgstr ""
#: youtube/i18n_strings.py:41
msgid "Font"
msgstr ""
#: youtube/i18n_strings.py:42
msgid "Language"
msgstr ""
#: youtube/i18n_strings.py:43
msgid "Embed page mode"
msgstr ""
#: youtube/i18n_strings.py:46
msgid "Off"
msgstr ""
#: youtube/i18n_strings.py:47
msgid "On"
msgstr ""
#: youtube/i18n_strings.py:48
msgid "Disabled"
msgstr ""
#: youtube/i18n_strings.py:49
msgid "Enabled"
msgstr ""
#: youtube/i18n_strings.py:50
msgid "Always shown"
msgstr ""
#: youtube/i18n_strings.py:51
msgid "Shown by clicking button"
msgstr ""
#: youtube/i18n_strings.py:52
msgid "Native"
msgstr ""
#: youtube/i18n_strings.py:53
msgid "Native with hotkeys"
msgstr ""
#: youtube/i18n_strings.py:54
msgid "Plyr"
msgstr ""
#: youtube/i18n_strings.py:57
msgid "Light"
msgstr ""
#: youtube/i18n_strings.py:58
msgid "Gray"
msgstr ""
#: youtube/i18n_strings.py:59
msgid "Dark"
msgstr ""
#: youtube/i18n_strings.py:62
msgid "Browser default"
msgstr ""
#: youtube/i18n_strings.py:63
msgid "Liberation Serif"
msgstr ""
#: youtube/i18n_strings.py:64
msgid "Arial"
msgstr ""
#: youtube/i18n_strings.py:65
msgid "Verdana"
msgstr ""
#: youtube/i18n_strings.py:66
msgid "Tahoma"
msgstr ""
#: youtube/i18n_strings.py:69 youtube/templates/base.html:53
msgid "Sort by"
msgstr ""
#: youtube/i18n_strings.py:70 youtube/templates/base.html:56
msgid "Relevance"
msgstr ""
#: youtube/i18n_strings.py:71 youtube/templates/base.html:60
#: youtube/templates/base.html:71
msgid "Upload date"
msgstr ""
#: youtube/i18n_strings.py:72 youtube/templates/base.html:64
msgid "View count"
msgstr ""
#: youtube/i18n_strings.py:73 youtube/templates/base.html:68
msgid "Rating"
msgstr ""
#: youtube/i18n_strings.py:76 youtube/templates/base.html:74
msgid "Any"
msgstr ""
#: youtube/i18n_strings.py:77 youtube/templates/base.html:78
msgid "Last hour"
msgstr ""
#: youtube/i18n_strings.py:78 youtube/templates/base.html:82
msgid "Today"
msgstr ""
#: youtube/i18n_strings.py:79 youtube/templates/base.html:86
msgid "This week"
msgstr ""
#: youtube/i18n_strings.py:80 youtube/templates/base.html:90
msgid "This month"
msgstr ""
#: youtube/i18n_strings.py:81 youtube/templates/base.html:94
msgid "This year"
msgstr ""
#: youtube/i18n_strings.py:84
msgid "Type"
msgstr ""
#: youtube/i18n_strings.py:85
msgid "Video"
msgstr ""
#: youtube/i18n_strings.py:86
msgid "Channel"
msgstr ""
#: youtube/i18n_strings.py:87
msgid "Playlist"
msgstr ""
#: youtube/i18n_strings.py:88
msgid "Movie"
msgstr ""
#: youtube/i18n_strings.py:89
msgid "Show"
msgstr ""
#: youtube/i18n_strings.py:92
msgid "Duration"
msgstr ""
#: youtube/i18n_strings.py:93
msgid "Short (< 4 minutes)"
msgstr ""
#: youtube/i18n_strings.py:94
msgid "Long (> 20 minutes)"
msgstr ""
#: youtube/i18n_strings.py:97 youtube/templates/base.html:45
msgid "Search"
msgstr ""
#: youtube/i18n_strings.py:98 youtube/templates/watch.html:104
msgid "Download"
msgstr ""
#: youtube/i18n_strings.py:99
msgid "Subscribe"
msgstr ""
#: youtube/i18n_strings.py:100
msgid "Unsubscribe"
msgstr ""
#: youtube/i18n_strings.py:101
msgid "Import"
msgstr ""
#: youtube/i18n_strings.py:102
msgid "Export"
msgstr ""
#: youtube/i18n_strings.py:103
msgid "Save"
msgstr ""
#: youtube/i18n_strings.py:104
msgid "Check"
msgstr ""
#: youtube/i18n_strings.py:105
msgid "Mute"
msgstr ""
#: youtube/i18n_strings.py:106
msgid "Unmute"
msgstr ""
#: youtube/i18n_strings.py:109 youtube/templates/base.html:51
msgid "Options"
msgstr ""
#: youtube/i18n_strings.py:110
msgid "Settings"
msgstr ""
#: youtube/i18n_strings.py:111
msgid "Error"
msgstr ""
#: youtube/i18n_strings.py:112
msgid "loading..."
msgstr ""
#: youtube/i18n_strings.py:115
msgid "Top"
msgstr ""
#: youtube/i18n_strings.py:116
msgid "Newest"
msgstr ""
#: youtube/i18n_strings.py:117
msgid "Auto"
msgstr ""
#: youtube/i18n_strings.py:118
msgid "English"
msgstr ""
#: youtube/i18n_strings.py:119
msgid "Español"
msgstr ""
#: youtube/i18n_strings.py:122
msgid "Auto (HLS preferred)"
msgstr ""
#: youtube/i18n_strings.py:123
msgid "Force HLS"
msgstr ""
#: youtube/i18n_strings.py:124
msgid "Force DASH"
msgstr ""
#: youtube/i18n_strings.py:125
msgid "#1"
msgstr ""
#: youtube/i18n_strings.py:126
msgid "#2"
msgstr ""
#: youtube/i18n_strings.py:127
msgid "#3"
msgstr ""
#: youtube/i18n_strings.py:130 youtube/templates/settings.html:53
msgid "Save settings"
msgstr ""
#: youtube/i18n_strings.py:133
msgid "Other"
msgstr ""
#: youtube/i18n_strings.py:136
msgid "Playback mode"
msgstr ""
#: youtube/i18n_strings.py:139
msgid "Autocheck subscriptions"
msgstr ""
#: youtube/i18n_strings.py:140
msgid "Include shorts in subscriptions"
msgstr ""
#: youtube/i18n_strings.py:141
msgid "Include shorts in channel"
msgstr ""
#: youtube/templates/base.html:44
msgid "Type to search..."
msgstr ""
#: youtube/templates/comments.html:61
msgid "More comments"
msgstr ""
#: youtube/templates/watch.html:100
msgid "Direct Link"
msgstr ""
#: youtube/templates/watch.html:152
msgid "More info"
msgstr ""
#: youtube/templates/watch.html:176 youtube/templates/watch.html:203
msgid "AutoNext"
msgstr ""
#: youtube/templates/watch.html:225
msgid "Related Videos"
msgstr ""
#: youtube/templates/watch.html:239
msgid "Comments disabled"
msgstr ""
#: youtube/templates/watch.html:242
msgid "Comment"
msgstr ""