Compare commits
5 commits
main
...
YTLite5.0b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6be6f6b7fc | ||
|
|
61a90d0712 | ||
|
|
523f95ef50 | ||
|
|
2b7f01581a | ||
|
|
17dd9f4436 |
32 changed files with 1579 additions and 227 deletions
1
.github/ISSUE_TEMPLATE/bug.yaml
vendored
1
.github/ISSUE_TEMPLATE/bug.yaml
vendored
|
|
@ -77,6 +77,7 @@ body:
|
|||
options:
|
||||
- buildapp.yml (GitHub Actions)
|
||||
- build.sh (Shell script)
|
||||
- Downloaded from third party
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
|
|
|||
28
.github/workflows/buildapp.yml
vendored
28
.github/workflows/buildapp.yml
vendored
|
|
@ -1,6 +1,3 @@
|
|||
# Original idea by @ISnackable. Many thanks to him for handling the most hardest parts!
|
||||
# https://github.com/ISnackable/CercubePlus/blob/main/.github/workflows/Build.yml
|
||||
|
||||
name: Build and Release YTLitePlus
|
||||
|
||||
on:
|
||||
|
|
@ -16,6 +13,11 @@ on:
|
|||
default: ""
|
||||
required: true
|
||||
type: string
|
||||
ytlite_deb_url:
|
||||
description: "Direct URL of the YTLite deb file"
|
||||
default: ""
|
||||
required: true
|
||||
type: string
|
||||
bundle_id:
|
||||
description: "Modify the bundle ID"
|
||||
default: "com.google.ios.youtube"
|
||||
|
|
@ -90,7 +92,6 @@ jobs:
|
|||
- name: Download iOS SDK
|
||||
if: steps.SDK.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
# Only download the specific SDK version
|
||||
git clone -n --depth=1 --filter=tree:0 https://github.com/theos/sdks/
|
||||
cd sdks
|
||||
git sparse-checkout set --no-cone iPhoneOS${{ inputs.sdk_version }}.sdk
|
||||
|
|
@ -115,23 +116,25 @@ jobs:
|
|||
|
||||
- name: Fix Compiling
|
||||
run: |
|
||||
# Update GNU Make to allow for faster building
|
||||
echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
|
||||
(echo export PATH="/usr/local/opt/make/libexec/gnubin:$PATH" >> ~/.bash_profile)
|
||||
source ~/.bash_profile
|
||||
|
||||
- name: Prepare YouTube iPA
|
||||
- name: Prepare YouTube iPA and YTLite deb
|
||||
run: |
|
||||
# Download and unzip iPA
|
||||
wget "$YOUTUBE_URL" --no-verbose -O main/YouTube.ipa
|
||||
unzip -q main/YouTube.ipa -d main/tmp
|
||||
# Get the version number of the YouTube app and store it
|
||||
echo "YT_VERSION=$(grep -A 1 '<key>CFBundleVersion</key>' main/tmp/Payload/YouTube.app/Info.plist | grep '<string>' | awk -F'[><]' '{print $3}')" >> $GITHUB_ENV
|
||||
# Get the version number of the latest release
|
||||
wget -qO- https://github.com/dayanch96/YTLite/releases/latest > main/tmp/release_page.html
|
||||
YTLITE_VERSION=$(grep -o -E '/tag/v[^"]+' main/tmp/release_page.html | head -n 1 | sed 's/\/tag\/v//')
|
||||
|
||||
# Download YTLite deb
|
||||
wget "$YTLITE_DEB_URL" --no-verbose -O main/YTLite.deb
|
||||
# Extract YTLite version from the deb file
|
||||
YTLITE_VERSION=$(dpkg-deb -f main/YTLite.deb Version)
|
||||
echo "YTLITE_VERSION=${YTLITE_VERSION}" >> $GITHUB_ENV
|
||||
echo $YTLITE_VERSION
|
||||
|
||||
# Remove contents in the iPA that interfere with sideloading
|
||||
rm -rf main/tmp/Payload/YouTube.app/_CodeSignature/CodeResources
|
||||
rm -rf main/tmp/Payload/YouTube.app/PlugIns/*
|
||||
|
|
@ -151,9 +154,12 @@ jobs:
|
|||
filepath = 'main/tmp/Payload/YouTube.app/Info.plist'
|
||||
remove_uisupporteddevices(filepath)
|
||||
EOF
|
||||
# Manually install the Open in YouTube extension
|
||||
cp -R main/Extensions/*.appex main/tmp/Payload/YouTube.app/PlugIns
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
YOUTUBE_URL: ${{ inputs.decrypted_youtube_url }}
|
||||
YTLITE_DEB_URL: ${{ inputs.ytlite_deb_url }}
|
||||
|
||||
- name: Build Package
|
||||
id: build_package
|
||||
|
|
@ -165,7 +171,7 @@ jobs:
|
|||
sed -i '' "s/^PACKAGE_VERSION.*$/PACKAGE_VERSION = ${{ env.YT_VERSION }}-${{ env.YTLITE_VERSION }}/" Makefile
|
||||
sed -i '' "s/^export TARGET.*$/export TARGET = iphone:clang:${{ inputs.sdk_version }}:14.0/" Makefile
|
||||
# Build the package
|
||||
make package
|
||||
make YTLITE_DEB_URL=${{ inputs.ytlite_deb_url }} package
|
||||
# Rename the package based on the version
|
||||
(mv "packages/$(ls -t packages | head -n1)" "packages/YTLitePlus_${{ env.YT_VERSION }}_${{ env.YTLITE_VERSION }}.ipa")
|
||||
# Pass package name to the upload step
|
||||
|
|
@ -252,4 +258,4 @@ jobs:
|
|||
run: |
|
||||
REPO_URL="https://github.com/${{ github.repository }}"
|
||||
DELETE_RUNS_URL="$REPO_URL/actions/workflows/delete-workflow-runs.yml"
|
||||
echo -e '### 🧹 Cleanup\n\nYou can remove previous GitHub Action runs here: '$DELETE_RUNS_URL >> $GITHUB_STEP_SUMMARY
|
||||
echo -e '### 🧹 Cleanup\n\nYou can remove previous GitHub Action runs here: '$DELETE_RUNS_URL >> $GITHUB_STEP_SUMMARY
|
||||
1
.github/workflows/delete-workflow-runs.yml
vendored
1
.github/workflows/delete-workflow-runs.yml
vendored
|
|
@ -42,7 +42,6 @@ on:
|
|||
- success
|
||||
dry_run:
|
||||
description: 'Logs simulated changes, no deletions are performed'
|
||||
type: boolean
|
||||
required: false
|
||||
|
||||
jobs:
|
||||
|
|
|
|||
3
.gitmodules
vendored
3
.gitmodules
vendored
|
|
@ -55,3 +55,6 @@
|
|||
[submodule "Tweaks/YouTimeStamp"]
|
||||
path = Tweaks/YouTimeStamp
|
||||
url = https://github.com/arichornloverALT/YouTimeStamp.git
|
||||
[submodule "Tweaks/YouLoop"]
|
||||
path = Tweaks/YouLoop
|
||||
url = https://github.com/bhackel/YouLoop
|
||||
|
|
|
|||
21
LICENSE
Normal file
21
LICENSE
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2024 YTLitePlus
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
15
Makefile
15
Makefile
|
|
@ -15,7 +15,7 @@ EXTRA_CFLAGS := $(addprefix -I,$(shell find Tweaks/FLEX -name '*.h' -exec dirnam
|
|||
# Allow YouTubeHeader to be accessible using #include <...>
|
||||
export ADDITIONAL_CFLAGS = -I$(THEOS_PROJECT_DIR)/Tweaks
|
||||
|
||||
YTLitePlus_INJECT_DYLIBS = Tweaks/YTLite/var/jb/Library/MobileSubstrate/DynamicLibraries/YTLite.dylib .theos/obj/libcolorpicker.dylib .theos/obj/iSponsorBlock.dylib .theos/obj/YTUHD.dylib .theos/obj/YouPiP.dylib .theos/obj/YouTubeDislikesReturn.dylib .theos/obj/YTABConfig.dylib .theos/obj/YouMute.dylib .theos/obj/DontEatMyContent.dylib .theos/obj/YTHoldForSpeed.dylib .theos/obj/YTVideoOverlay.dylib .theos/obj/YouGroupSettings.dylib .theos/obj/YouQuality.dylib .theos/obj/YouTimeStamp.dylib
|
||||
YTLitePlus_INJECT_DYLIBS = Tweaks/YTLite/Library/MobileSubstrate/DynamicLibraries/YTLite.dylib .theos/obj/libcolorpicker.dylib .theos/obj/iSponsorBlock.dylib .theos/obj/YTUHD.dylib .theos/obj/YouPiP.dylib .theos/obj/YouTubeDislikesReturn.dylib .theos/obj/YTABConfig.dylib .theos/obj/YouMute.dylib .theos/obj/DontEatMyContent.dylib .theos/obj/YTHoldForSpeed.dylib .theos/obj/YTVideoOverlay.dylib .theos/obj/YouGroupSettings.dylib .theos/obj/YouQuality.dylib .theos/obj/YouTimeStamp.dylib .theos/obj/YouLoop.dylib
|
||||
YTLitePlus_FILES = YTLitePlus.xm $(shell find Source -name '*.xm' -o -name '*.x' -o -name '*.m') $(shell find Tweaks/FLEX -type f \( -iname \*.c -o -iname \*.m -o -iname \*.mm \))
|
||||
YTLitePlus_IPA = ./tmp/Payload/YouTube.app
|
||||
YTLitePlus_CFLAGS = -fobjc-arc -Wno-deprecated-declarations -Wno-unsupported-availability-guard -Wno-unused-but-set-variable -DTWEAK_VERSION=$(PACKAGE_VERSION) $(EXTRA_CFLAGS)
|
||||
|
|
@ -23,18 +23,18 @@ YTLitePlus_FRAMEWORKS = UIKit Security
|
|||
|
||||
include $(THEOS)/makefiles/common.mk
|
||||
include $(THEOS_MAKE_PATH)/tweak.mk
|
||||
SUBPROJECTS += Tweaks/Alderis Tweaks/iSponsorBlock Tweaks/YTUHD Tweaks/YouPiP Tweaks/Return-YouTube-Dislikes Tweaks/YTABConfig Tweaks/YouMute Tweaks/DontEatMyContent Tweaks/YTHoldForSpeed Tweaks/YTVideoOverlay Tweaks/YouQuality Tweaks/YouTimeStamp Tweaks/YouGroupSettings
|
||||
SUBPROJECTS += Tweaks/Alderis Tweaks/iSponsorBlock Tweaks/YTUHD Tweaks/YouPiP Tweaks/Return-YouTube-Dislikes Tweaks/YTABConfig Tweaks/YouMute Tweaks/DontEatMyContent Tweaks/YTHoldForSpeed Tweaks/YTVideoOverlay Tweaks/YouQuality Tweaks/YouTimeStamp Tweaks/YouGroupSettings Tweaks/YouLoop
|
||||
include $(THEOS_MAKE_PATH)/aggregate.mk
|
||||
|
||||
YTLITE_PATH = Tweaks/YTLite
|
||||
YTLITE_VERSION := $(shell wget -qO- "https://github.com/dayanch96/YTLite/releases/latest" | grep -o -E '/tag/v[^"]+' | head -n 1 | sed 's/\/tag\/v//')
|
||||
YTLITE_VERSION := $(YTLITE_VERSION)
|
||||
YTLITE_DEB = $(YTLITE_PATH)/com.dvntm.ytlite_$(YTLITE_VERSION)_iphoneos-arm64.deb
|
||||
YTLITE_DYLIB = $(YTLITE_PATH)/var/jb/Library/MobileSubstrate/DynamicLibraries/YTLite.dylib
|
||||
YTLITE_BUNDLE = $(YTLITE_PATH)/var/jb/Library/Application\ Support/YTLite.bundle
|
||||
YTLITE_DYLIB = $(YTLITE_PATH)/Library/MobileSubstrate/DynamicLibraries/YTLite.dylib
|
||||
YTLITE_BUNDLE = $(YTLITE_PATH)/Library/Application\ Support/YTLite.bundle
|
||||
before-package::
|
||||
@echo -e "==> \033[1mMoving tweak's bundle to Resources/...\033[0m"
|
||||
@mkdir -p Resources/Frameworks/Alderis.framework && find .theos/obj/install/Library/Frameworks/Alderis.framework -maxdepth 1 -type f -exec cp {} Resources/Frameworks/Alderis.framework/ \;
|
||||
@cp -R Tweaks/YTLite/var/jb/Library/Application\ Support/YTLite.bundle Resources/
|
||||
@cp -R Tweaks/YTLite/Library/Application\ Support/YTLite.bundle Resources/
|
||||
@cp -R Tweaks/YTUHD/layout/Library/Application\ Support/YTUHD.bundle Resources/
|
||||
@cp -R Tweaks/YouPiP/layout/Library/Application\ Support/YouPiP.bundle Resources/
|
||||
@cp -R Tweaks/Return-YouTube-Dislikes/layout/Library/Application\ Support/RYD.bundle Resources/
|
||||
|
|
@ -46,6 +46,7 @@ before-package::
|
|||
@cp -R Tweaks/YTVideoOverlay/layout/Library/Application\ Support/YTVideoOverlay.bundle Resources/
|
||||
@cp -R Tweaks/YouQuality/layout/Library/Application\ Support/YouQuality.bundle Resources/
|
||||
@cp -R Tweaks/YouTimeStamp/layout/Library/Application\ Support/YouTimeStamp.bundle Resources/
|
||||
@cp -R Tweaks/YouLoop/layout/Library/Application\ Support/YouLoop.bundle Resources/
|
||||
@cp -R lang/YTLitePlus.bundle Resources/
|
||||
@echo -e "==> \033[1mChanging the installation path of dylibs...\033[0m"
|
||||
@ldid -r .theos/obj/iSponsorBlock.dylib && install_name_tool -change /usr/lib/libcolorpicker.dylib @rpath/libcolorpicker.dylib .theos/obj/iSponsorBlock.dylib
|
||||
|
|
@ -59,7 +60,7 @@ before-all::
|
|||
rm -rf $(YTLITE_PATH)/*; \
|
||||
$(PRINT_FORMAT_BLUE) "Downloading YTLite"; \
|
||||
echo "YTLITE_VERSION: $(YTLITE_VERSION)"; \
|
||||
curl -s -L "https://github.com/dayanch96/YTLite/releases/download/v$(YTLITE_VERSION)/com.dvntm.ytlite_$(YTLITE_VERSION)_iphoneos-arm64.deb" -o $(YTLITE_DEB); \
|
||||
curl -s -L "$(YTLITE_DEB_URL)" -o $(YTLITE_DEB); \
|
||||
tar -xf $(YTLITE_DEB) -C $(YTLITE_PATH); tar -xf $(YTLITE_PATH)/data.tar* -C $(YTLITE_PATH); \
|
||||
if [[ ! -f $(YTLITE_DYLIB) || ! -d $(YTLITE_BUNDLE) ]]; then \
|
||||
$(PRINT_FORMAT_ERROR) "Failed to extract YTLite"; exit 1; \
|
||||
|
|
|
|||
161
README.md
161
README.md
|
|
@ -26,122 +26,49 @@
|
|||
|
||||
# Credits
|
||||
|
||||
<table id='ytliteplus credit'>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a href='https://github.com/dayanch96'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/293f1a61-00b8-424a-9e00-f520f5a88064' width='120px;'>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/arichorn'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/2753042f-9efa-404d-a719-4761ad48d323' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/balackburn'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/d08ccf99-d3e5-4388-833f-22632dc66fd2' width='120px'>
|
||||
</td>
|
||||
</a>
|
||||
<td id='ssuesskind'>
|
||||
<a href='https://github.com/ssuesskind'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/ed6bc6a0-ef55-4548-8d60-32d86f2aa9f3' width='120px;'>
|
||||
</a>
|
||||
<td align="center">
|
||||
<a href='https://github.com/Deci8BelioS'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/8cca7bf9-4c52-4c25-99dd-2b26434b7deb' width='120px'>
|
||||
</a>
|
||||
<br>
|
||||
</tr>
|
||||
<br>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a href='https://github.com/MiRO92'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/ca462139-3a55-4ce1-a774-ffd13c459c80' width='120px'>
|
||||
|
||||
</a>
|
||||
<br>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/qnblackcat'>
|
||||
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/20b0d6d9-d892-4af4-9762-6617d49743b8' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/PoomSmart'>
|
||||
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/668fe74e-9da1-4115-8fd0-ed7c308976b3' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/level3tjg'>
|
||||
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/b11fe92d-aceb-4aa1-88bf-7699c5f4ac5f' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/BandarHL'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/dc4f0597-017b-44c1-8b52-33ec168a56f3' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a href='https://github.com/Galactic-Dev'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/f489e91e-3b04-45d3-b094-68b83c43da25' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/julioverne'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/0f7336ea-7f54-4155-995f-dea58d39f022' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/hbang'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/2eec50db-e2df-4217-a230-5c5cc7223934' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/Lyvendia'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/36902aa9-1f81-403c-b9b5-ebbd9e8b9ef9' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/therealFoxster'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/60427fc8-e019-43d6-86ae-01ad8b4a1e77' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a href='https://github.com/ichitaso'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/6a1cb4b7-5eec-4cda-8bed-f5dea2408323' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/AhmedBafkir'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/55b270be-1d43-4e2c-81da-ee04d993d447' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/CokePokes'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/5a40346b-b652-4eca-955f-272baf45c6dd' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/ISnackable'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/5b5355b1-0a7d-4202-affe-725406e9af72' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href='https://github.com/theos/theos'>
|
||||
<img src='https://github.com/Balackburn/YTLitePlus/assets/93828569/e5c37588-95f4-4773-b3fe-40ba02499160' width='120px'>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/dayanch96"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/dayanch96.png" width="100px;" alt="dayanch96"/></a></td>
|
||||
<td align="center"><a href="https://github.com/Balackburn"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/Balackburn.png" width="100px;" alt="Balackburn"/></a></td>
|
||||
<td align="center"><a href="https://github.com/arichornloverALT"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/arichornloverALT.png" width="100px;" alt="arichornloverALT"/></a></td>
|
||||
<td align="center"><a href="https://github.com/PoomSmart"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/PoomSmart.png" width="100px;" alt="PoomSmart"/></a></td>
|
||||
<td align="center"><a href="https://github.com/qnblackcat"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/qnblackcat.png" width="100px;" alt="qnblackcat"/></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/SKEIDs"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/SKEIDs.png" width="100px;" alt="SKEIDs"/></a></td>
|
||||
<td align="center"><a href="https://github.com/asdfzxcvbn"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/asdfzxcvbn.png" width="100px;" alt="asdfzxcvbn"/></a></td>
|
||||
<td align="center"><a href="https://github.com/matt911"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/matt911.png" width="100px;" alt="matt911"/></a></td>
|
||||
<td align="center"><a href="https://github.com/bhackel"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/bhackel.png" width="100px;" alt="bhackel"/></a></td>
|
||||
<td align="center"><a href="https://github.com/AlexInABox"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/AlexInABox.png" width="100px;" alt="AlexInABox"/></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/Glenta"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/Glenta.png" width="100px;" alt="Glenta"/></a></td>
|
||||
<td align="center"><a href="https://github.com/gototheskinny"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/gototheskinny.png" width="100px;" alt="gototheskinny"/></a></td>
|
||||
<td align="center"><a href="https://github.com/MrAlucardDante"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/MrAlucardDante.png" width="100px;" alt="MrAlucardDante"/></a></td>
|
||||
<td align="center"><a href="https://github.com/Galactic-Dev"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/Galactic-Dev.png" width="100px;" alt="Galactic-Dev"/></a></td>
|
||||
<td align="center"><a href="https://github.com/AhmedBafkir"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/AhmedBafkir.png" width="100px;" alt="AhmedBafkir"/></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/MiRO92"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/MiRO92.png" width="100px;" alt="MiRO92"/></a></td>
|
||||
<td align="center"><a href="https://github.com/ichitaso"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/ichitaso.png" width="100px;" alt="ichitaso"/></a></td>
|
||||
<td align="center"><a href="https://github.com/Deci8BelioS"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/Deci8BelioS.png" width="100px;" alt="Deci8BelioS"/></a></td>
|
||||
<td align="center"><a href="https://github.com/julioverne"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/julioverne.png" width="100px;" alt="julioverne"/></a></td>
|
||||
<td align="center"><a href="https://github.com/therealFoxster"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/therealFoxster.png" width="100px;" alt="therealFoxster"/></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/Lyvendia"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/Lyvendia.png" width="100px;" alt="Lyvendia"/></a></td>
|
||||
<td align="center"><a href="https://github.com/ssuesskind"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/ssuesskind.png" width="100px;" alt="ssuesskind"/></a></td>
|
||||
<td align="center"><a href="https://github.com/hbang"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/hbang.png" width="100px;" alt="hbang"/></a></td>
|
||||
<td align="center"><a href="https://github.com/level3tjg"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/level3tjg.png" width="100px;" alt="level3tjg"/></a></td>
|
||||
<td align="center"><a href="https://github.com/zSaaiq"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/zSaaiq.png" width="100px;" alt="zSaaiq"/></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/ISnackable"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/ISnackable.png" width="100px;" alt="ISnackable"/></a></td>
|
||||
<td align="center"><a href="https://github.com/VictorxD70"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/VictorxD70.png" width="100px;" alt="VictorxD70"/></a></td>
|
||||
<td align="center"><a href="https://github.com/Macleykun"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/Macleykun.png" width="100px;" alt="Macleykun"/></a></td>
|
||||
<td align="center"><a href="https://github.com/BandarHL"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/BandarHL.png" width="100px;" alt="BandarHL"/></a></td>
|
||||
<td align="center"><a href="https://github.com/CokePokes"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/CokePokes.png" width="100px;" alt="CokePokes"/></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
# Features
|
||||
|
|
@ -184,7 +111,7 @@
|
|||
|
||||
20. **OLDDarkmode**: Replace new official Youtube darkmode with old (grey) Youtube darkmode.
|
||||
|
||||
21. **LowContrastMode**: Makes the YouTube Interface Low Contrast as possible to make it easier on the eyes.
|
||||
21. **LowContrastMode**: Makes the UI interface look dimmer to make it easier on the eyes. (App Compatibility: v17.33.2-v17.38.10)
|
||||
|
||||
# AltStore
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,6 @@
|
|||
#import "../YTLitePlus.h"
|
||||
|
||||
//
|
||||
static BOOL IsEnabled(NSString *key) {
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:key];
|
||||
}
|
||||
// Low Contrast Mode
|
||||
static int contrastMode() {
|
||||
return [[NSUserDefaults standardUserDefaults] integerForKey:@"lcm"];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,12 +32,6 @@
|
|||
settingItemId:0]
|
||||
*/
|
||||
|
||||
static BOOL IsEnabled(NSString *key) {
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:key];
|
||||
}
|
||||
static int GetSelection(NSString *key) {
|
||||
return [[NSUserDefaults standardUserDefaults] integerForKey:key];
|
||||
}
|
||||
static int contrastMode() {
|
||||
return [[NSUserDefaults standardUserDefaults] integerForKey:@"lcm"];
|
||||
}
|
||||
|
|
@ -47,6 +41,8 @@ static int appVersionSpoofer() {
|
|||
|
||||
@interface YTSettingsSectionItemManager (YTLitePlus)
|
||||
- (void)updateYTLitePlusSectionWithEntry:(id)entry;
|
||||
- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray<NSURL *> *)urls;
|
||||
- (void)documentPickerWasCancelled:(UIDocumentPickerViewController *)controller;
|
||||
@end
|
||||
|
||||
extern NSBundle *YTLitePlusBundle();
|
||||
|
|
@ -80,7 +76,7 @@ static const NSInteger YTLiteSection = 789;
|
|||
%end
|
||||
|
||||
|
||||
// Settings
|
||||
// Add YTLitePlus to the settings list
|
||||
%hook YTAppSettingsPresentationData
|
||||
+ (NSArray *)settingsCategoryOrder {
|
||||
NSArray *order = %orig;
|
||||
|
|
@ -108,14 +104,15 @@ static const NSInteger YTLiteSection = 789;
|
|||
Class YTSettingsSectionItemClass = %c(YTSettingsSectionItem);
|
||||
YTSettingsViewController *settingsViewController = [self valueForKey:@"_settingsViewControllerDelegate"];
|
||||
|
||||
// Add item for going to the YTLitePlus GitHub page
|
||||
YTSettingsSectionItem *main = [%c(YTSettingsSectionItem)
|
||||
itemWithTitle:[NSString stringWithFormat:LOC(@"VERSION"), @(OS_STRINGIFY(TWEAK_VERSION))]
|
||||
titleDescription:LOC(@"VERSION_CHECK")
|
||||
accessibilityIdentifier:nil
|
||||
detailTextBlock:nil
|
||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/Balackburn/YTLitePlus/releases/latest"]];
|
||||
}];
|
||||
itemWithTitle:[NSString stringWithFormat:LOC(@"VERSION"), @(OS_STRINGIFY(TWEAK_VERSION))]
|
||||
titleDescription:LOC(@"VERSION_CHECK")
|
||||
accessibilityIdentifier:nil
|
||||
detailTextBlock:nil
|
||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/YTLitePlus/YTLitePlus/releases/latest"]];
|
||||
}];
|
||||
[sectionItems addObject:main];
|
||||
|
||||
YTSettingsSectionItem *copySettings = [%c(YTSettingsSectionItem)
|
||||
|
|
@ -197,7 +194,28 @@ static const NSInteger YTLiteSection = 789;
|
|||
];
|
||||
[sectionItems addObject:pasteSettings];
|
||||
|
||||
BASIC_SWITCH(LOC(@"REPLACE_COPY_AND_PASTE_BUTTONS"), LOC(@"REPLACE_COPY_AND_PASTE_BUTTONS_DESC"), @"switchCopyandPasteFunctionality_enabled");
|
||||
YTSettingsSectionItem *videoPlayer = [%c(YTSettingsSectionItem)
|
||||
itemWithTitle:LOC(@"VIDEO_PLAYER")
|
||||
titleDescription:LOC(@"VIDEO_PLAYER_DESC")
|
||||
accessibilityIdentifier:nil
|
||||
detailTextBlock:nil
|
||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
// Access the current view controller
|
||||
UIViewController *settingsViewController = [self valueForKey:@"_settingsViewControllerDelegate"];
|
||||
if (settingsViewController) {
|
||||
// Present the video picker
|
||||
UIDocumentPickerViewController *documentPicker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[(NSString *)kUTTypeMovie, (NSString *)kUTTypeVideo] inMode:UIDocumentPickerModeImport];
|
||||
documentPicker.delegate = (id<UIDocumentPickerDelegate>)self;
|
||||
documentPicker.allowsMultipleSelection = NO;
|
||||
[settingsViewController presentViewController:documentPicker animated:YES completion:nil];
|
||||
} else {
|
||||
NSLog(@"settingsViewController is nil");
|
||||
}
|
||||
|
||||
return YES; // Return YES to indicate that the action was handled
|
||||
}
|
||||
];
|
||||
[sectionItems addObject:videoPlayer];
|
||||
|
||||
/*
|
||||
YTSettingsSectionItem *appIcon = [%c(YTSettingsSectionItem)
|
||||
|
|
@ -214,6 +232,179 @@ static const NSInteger YTLiteSection = 789;
|
|||
[sectionItems addObject:appIcon];
|
||||
*/
|
||||
|
||||
# pragma mark - Player Gestures - @bhackel
|
||||
// Helper to get the selected gesture mode
|
||||
static NSString* (^sectionGestureSelectedModeToString)(GestureMode) = ^(GestureMode sectionIndex) {
|
||||
switch (sectionIndex) {
|
||||
case GestureModeVolume:
|
||||
return LOC(@"VOLUME");
|
||||
case GestureModeBrightness:
|
||||
return LOC(@"BRIGHTNESS");
|
||||
case GestureModeSeek:
|
||||
return LOC(@"SEEK");
|
||||
case GestureModeDisabled:
|
||||
return LOC(@"DISABLED");
|
||||
default:
|
||||
return @"Invalid index - Report bug";
|
||||
}
|
||||
};
|
||||
|
||||
// Helper to generate checkmark setting items for selecting gesture modes
|
||||
static YTSettingsSectionItem* (^gestureCheckmarkSettingItem)(NSInteger, NSString *) = ^(NSInteger idx, NSString *key) {
|
||||
return [YTSettingsSectionItemClass
|
||||
checkmarkItemWithTitle:sectionGestureSelectedModeToString(idx)
|
||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:idx forKey:key];
|
||||
[settingsViewController reloadData];
|
||||
return YES;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
// Helper to generate a section item for selecting a gesture mode
|
||||
YTSettingsSectionItem *(^createSectionGestureSelector)(NSString *, NSString *) = ^YTSettingsSectionItem *(NSString *sectionLabel, NSString *sectionKey) {
|
||||
return [YTSettingsSectionItemClass itemWithTitle:LOC(sectionLabel)
|
||||
accessibilityIdentifier:nil
|
||||
detailTextBlock:^NSString *() {
|
||||
return sectionGestureSelectedModeToString(GetSelection(sectionKey));
|
||||
}
|
||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||
gestureCheckmarkSettingItem(0, sectionKey), // Volume
|
||||
gestureCheckmarkSettingItem(1, sectionKey), // Brightness
|
||||
gestureCheckmarkSettingItem(2, sectionKey), // Seek
|
||||
gestureCheckmarkSettingItem(3, sectionKey) // Disabled
|
||||
];
|
||||
// Present picker when selecting this settings item
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc]
|
||||
initWithNavTitle:LOC(sectionLabel)
|
||||
pickerSectionTitle:nil
|
||||
rows:rows
|
||||
selectedItemIndex:GetSelection(sectionKey)
|
||||
parentResponder:[self parentResponder]
|
||||
];
|
||||
[settingsViewController pushViewController:picker];
|
||||
return YES;
|
||||
}
|
||||
];
|
||||
};
|
||||
// Configuration picker for deadzone to pick from 0 to 100 pixels with interval of 10
|
||||
NSMutableArray<NSNumber *> *deadzoneValues = [NSMutableArray array];
|
||||
for (CGFloat value = 0; value <= 100; value += 10) {
|
||||
[deadzoneValues addObject:@(value)];
|
||||
}
|
||||
YTSettingsSectionItem *deadzonePicker = [YTSettingsSectionItemClass
|
||||
itemWithTitle:LOC(@"DEADZONE")
|
||||
titleDescription:LOC(@"DEADZONE_DESC")
|
||||
accessibilityIdentifier:nil
|
||||
detailTextBlock:^NSString *() {
|
||||
return [NSString stringWithFormat:@"%ld px", (long)GetFloat(@"playerGesturesDeadzone")];
|
||||
}
|
||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
// Generate rows for deadzone picker using the predefined array
|
||||
NSMutableArray <YTSettingsSectionItem *> *deadzoneRows = [NSMutableArray array];
|
||||
for (NSNumber *deadzoneValue in deadzoneValues) {
|
||||
CGFloat deadzone = [deadzoneValue floatValue];
|
||||
[deadzoneRows addObject:[YTSettingsSectionItemClass
|
||||
checkmarkItemWithTitle:[NSString stringWithFormat:@"%ld px", (long)deadzone]
|
||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
[[NSUserDefaults standardUserDefaults] setFloat:deadzone forKey:@"playerGesturesDeadzone"];
|
||||
[settingsViewController reloadData];
|
||||
return YES;
|
||||
}
|
||||
]];
|
||||
}
|
||||
// Determine the index of the currently selected deadzone
|
||||
CGFloat currentDeadzone = GetFloat(@"playerGesturesDeadzone");
|
||||
NSUInteger selectedIndex = [deadzoneValues indexOfObject:@(currentDeadzone)];
|
||||
if (selectedIndex == NSNotFound) {
|
||||
selectedIndex = 0; // Default to the first item if the current deadzone is not found
|
||||
}
|
||||
// Present deadzone picker when selecting this settings item
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc]
|
||||
initWithNavTitle:LOC(@"DEADZONE")
|
||||
pickerSectionTitle:nil
|
||||
rows:deadzoneRows
|
||||
selectedItemIndex:selectedIndex
|
||||
parentResponder:[self parentResponder]
|
||||
];
|
||||
[settingsViewController pushViewController:picker];
|
||||
return YES;
|
||||
}
|
||||
];
|
||||
|
||||
// Configuration picker for sensitivity to pick from 0.5 to 2.0 with interval of 0.1
|
||||
NSMutableArray<NSNumber *> *sensitivityValues = [NSMutableArray array];
|
||||
for (CGFloat value = 0.5; value <= 2.0; value += 0.1) {
|
||||
[sensitivityValues addObject:@(value)];
|
||||
}
|
||||
YTSettingsSectionItem *sensitivityPicker = [YTSettingsSectionItemClass
|
||||
itemWithTitle:LOC(@"SENSITIVITY")
|
||||
titleDescription:LOC(@"SENSITIVITY_DESC")
|
||||
accessibilityIdentifier:nil
|
||||
detailTextBlock:^NSString *() {
|
||||
return [NSString stringWithFormat:@"%.1f", GetFloat(@"playerGesturesSensitivity")];
|
||||
}
|
||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
// Generate rows for sensitivity picker using the predefined array
|
||||
NSMutableArray <YTSettingsSectionItem *> *sensitivityRows = [NSMutableArray array];
|
||||
for (NSNumber *sensitivityValue in sensitivityValues) {
|
||||
CGFloat sensitivity = [sensitivityValue floatValue];
|
||||
[sensitivityRows addObject:[YTSettingsSectionItemClass
|
||||
checkmarkItemWithTitle:[NSString stringWithFormat:@"%.1f", sensitivity]
|
||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
[[NSUserDefaults standardUserDefaults] setFloat:sensitivity forKey:@"playerGesturesSensitivity"];
|
||||
[settingsViewController reloadData];
|
||||
return YES;
|
||||
}
|
||||
]];
|
||||
}
|
||||
// Determine the index of the currently selected sensitivity
|
||||
CGFloat currentSensitivity = GetFloat(@"playerGesturesSensitivity");
|
||||
NSUInteger selectedIndex = [sensitivityValues indexOfObject:@(currentSensitivity)];
|
||||
if (selectedIndex == NSNotFound) {
|
||||
selectedIndex = 0; // Default to the first item if the current sensitivity is not found
|
||||
}
|
||||
// Present sensitivity picker
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc]
|
||||
initWithNavTitle:LOC(@"SENSITIVITY")
|
||||
pickerSectionTitle:nil
|
||||
rows:sensitivityRows
|
||||
selectedItemIndex:selectedIndex
|
||||
parentResponder:[self parentResponder]
|
||||
];
|
||||
[settingsViewController pushViewController:picker];
|
||||
return YES;
|
||||
}
|
||||
];
|
||||
|
||||
// Create and add items to the high level gestures menu
|
||||
YTSettingsSectionItem *playerGesturesGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"PLAYER_GESTURES_TITLE") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||
// Description header item
|
||||
[YTSettingsSectionItemClass
|
||||
itemWithTitle:nil
|
||||
titleDescription:LOC(@"PLAYER_GESTURES_DESC")
|
||||
accessibilityIdentifier:nil
|
||||
detailTextBlock:nil
|
||||
selectBlock:nil
|
||||
],
|
||||
// Toggle for enabling gestures
|
||||
BASIC_SWITCH(LOC(@"PLAYER_GESTURES_TOGGLE"), nil, @"playerGestures_enabled"),
|
||||
// Pickers for each gesture section
|
||||
createSectionGestureSelector(@"TOP_SECTION", @"playerGestureTopSelection"),
|
||||
createSectionGestureSelector(@"MIDDLE_SECTION", @"playerGestureMiddleSelection"),
|
||||
createSectionGestureSelector(@"BOTTOM_SECTION", @"playerGestureBottomSelection"),
|
||||
// Pickers for configuration settings
|
||||
deadzonePicker,
|
||||
sensitivityPicker
|
||||
];
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Player Gestures (Beta)") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||
[settingsViewController pushViewController:picker];
|
||||
return YES;
|
||||
}];
|
||||
[sectionItems addObject:playerGesturesGroup];
|
||||
|
||||
# pragma mark - Video Controls Overlay Options
|
||||
YTSettingsSectionItem *videoControlOverlayGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||
|
|
@ -231,6 +422,11 @@ static const NSInteger YTLiteSection = 789;
|
|||
BASIC_SWITCH(LOC(@"ALWAYS_USE_REMAINING_TIME"), LOC(@"ALWAYS_USE_REMAINING_TIME_DESC"), @"alwaysShowRemainingTime_enabled"),
|
||||
BASIC_SWITCH(LOC(@"DISABLE_TOGGLE_TIME_REMAINING"), LOC(@"DISABLE_TOGGLE_TIME_REMAINING_DESC"), @"disableRemainingTime_enabled"),
|
||||
BASIC_SWITCH(LOC(@"DISABLE_ENGAGEMENT_OVERLAY"), LOC(@"DISABLE_ENGAGEMENT_OVERLAY_DESC"), @"disableEngagementOverlay_enabled"),
|
||||
BASIC_SWITCH(LOC(@"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER"), LOC(@"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC"), @"hidePreviewCommentSection_enabled"),
|
||||
BASIC_SWITCH(LOC(@"HIDE_AUTOPLAY_MINI_PREVIEW"), LOC(@"HIDE_AUTOPLAY_MINI_PREVIEW_DESC"), @"hideAutoplayMiniPreview_enabled"),
|
||||
BASIC_SWITCH(LOC(@"HIDE_HUD_MESSAGES"), LOC(@"HIDE_HUD_MESSAGES_DESC"), @"hideHUD_enabled"),
|
||||
BASIC_SWITCH(LOC(@"HIDE_COLLAPSE_BUTTON"), LOC(@"HIDE_COLLAPSE_BUTTON_DESC"), @"disableCollapseButton_enabled"),
|
||||
BASIC_SWITCH(LOC(@"HIDE_SPEED_TOAST"), LOC(@"HIDE_SPEED_TOAST_DESC"), @"hideSpeedToast_enabled"),
|
||||
];
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||
[settingsViewController pushViewController:picker];
|
||||
|
|
@ -251,14 +447,14 @@ static const NSInteger YTLiteSection = 789;
|
|||
BASIC_SWITCH(LOC(@"HIDE_PRIVACY_SECTION"), LOC(@"APP_RESTART_DESC"), @"disablePrivacySection_enabled"),
|
||||
BASIC_SWITCH(LOC(@"HIDE_LIVECHAT_SECTION"), LOC(@"APP_RESTART_DESC"), @"disableLiveChatSection_enabled")
|
||||
];
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"App Settings Overlay Options") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"APP_SETTINGS_OVERLAY_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||
[settingsViewController pushViewController:picker];
|
||||
return YES;
|
||||
}];
|
||||
[sectionItems addObject:appSettingsOverlayGroup];
|
||||
|
||||
# pragma mark - LowContrastMode
|
||||
YTSettingsSectionItem *lowContrastModeSection = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Low Contrast Mode")
|
||||
YTSettingsSectionItem *lowContrastModeSection = [YTSettingsSectionItemClass itemWithTitle:LOC(@"LOW_CONTRAST_MODE")
|
||||
accessibilityIdentifier:nil
|
||||
detailTextBlock:^NSString *() {
|
||||
switch (contrastMode()) {
|
||||
|
|
@ -282,7 +478,7 @@ static const NSInteger YTLiteSection = 789;
|
|||
return YES;
|
||||
}]
|
||||
];
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Low Contrast Mode") pickerSectionTitle:nil rows:rows selectedItemIndex:contrastMode() parentResponder:[self parentResponder]];
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"LOW_CONTRAST_MODE") pickerSectionTitle:nil rows:rows selectedItemIndex:contrastMode() parentResponder:[self parentResponder]];
|
||||
[settingsViewController pushViewController:picker];
|
||||
return YES;
|
||||
}];
|
||||
|
|
@ -354,7 +550,7 @@ static const NSInteger YTLiteSection = 789;
|
|||
return YES;
|
||||
}]
|
||||
];
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:@"Version Spoofer Picker" pickerSectionTitle:nil rows:rows selectedItemIndex:appVersionSpoofer() parentResponder:[self parentResponder]];
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:@"VERSION_SPOOFER_TITLE" pickerSectionTitle:nil rows:rows selectedItemIndex:appVersionSpoofer() parentResponder:[self parentResponder]];
|
||||
[settingsViewController pushViewController:picker];
|
||||
return YES;
|
||||
}];
|
||||
|
|
@ -365,8 +561,6 @@ static const NSInteger YTLiteSection = 789;
|
|||
detailTextBlock:^NSString *() {
|
||||
switch (GetSelection(@"appTheme")) {
|
||||
case 1:
|
||||
return LOC(@"OLED_DARK_THEME_2");
|
||||
case 2:
|
||||
return LOC(@"OLD_DARK_THEME");
|
||||
case 0:
|
||||
default:
|
||||
|
|
@ -380,13 +574,8 @@ static const NSInteger YTLiteSection = 789;
|
|||
[settingsViewController reloadData];
|
||||
return YES;
|
||||
}],
|
||||
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"OLED_DARK_THEME") titleDescription:LOC(@"OLED_DARK_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"appTheme"];
|
||||
[settingsViewController reloadData];
|
||||
return YES;
|
||||
}],
|
||||
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"OLD_DARK_THEME") titleDescription:LOC(@"OLD_DARK_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"appTheme"];
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"appTheme"];
|
||||
[settingsViewController reloadData];
|
||||
return YES;
|
||||
}],
|
||||
|
|
@ -460,6 +649,7 @@ static const NSInteger YTLiteSection = 789;
|
|||
BASIC_SWITCH(LOC(@"HIDE_SPONSORBLOCK_BUTTON"), LOC(@"HIDE_SPONSORBLOCK_BUTTON_DESC"), @"hideSponsorBlockButton_enabled"),
|
||||
BASIC_SWITCH(LOC(@"HIDE_HOME_TAB"), LOC(@"HIDE_HOME_TAB_DESC"), @"hideHomeTab_enabled"),
|
||||
BASIC_SWITCH(LOC(@"FIX_CASTING"), LOC(@"FIX_CASTING_DESC"), @"fixCasting_enabled"),
|
||||
BASIC_SWITCH(LOC(@"REPLACE_COPY_AND_PASTE_BUTTONS"), LOC(@"REPLACE_COPY_AND_PASTE_BUTTONS_DESC"), @"switchCopyandPasteFunctionality_enabled"),
|
||||
BASIC_SWITCH(LOC(@"ENABLE_FLEX"), LOC(@"ENABLE_FLEX_DESC"), @"flex_enabled"),
|
||||
BASIC_SWITCH(LOC(@"APP_VERSION_SPOOFER_LITE"), LOC(@"APP_VERSION_SPOOFER_LITE_DESC"), @"enableVersionSpoofer_enabled"),
|
||||
versionSpooferSection
|
||||
|
|
@ -482,4 +672,31 @@ static const NSInteger YTLiteSection = 789;
|
|||
}
|
||||
%orig;
|
||||
}
|
||||
|
||||
// Implement the delegate method for document picker
|
||||
%new
|
||||
- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray<NSURL *> *)urls {
|
||||
NSURL *pickedURL = [urls firstObject];
|
||||
|
||||
if (pickedURL) {
|
||||
// Use AVPlayerViewController to play the video
|
||||
AVPlayer *player = [AVPlayer playerWithURL:pickedURL];
|
||||
AVPlayerViewController *playerViewController = [[AVPlayerViewController alloc] init];
|
||||
playerViewController.player = player;
|
||||
|
||||
UIViewController *settingsViewController = [self valueForKey:@"_settingsViewControllerDelegate"];
|
||||
if (settingsViewController) {
|
||||
[settingsViewController presentViewController:playerViewController animated:YES completion:^{
|
||||
[player play];
|
||||
}];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
%new
|
||||
- (void)documentPickerWasCancelled:(UIDocumentPickerViewController *)controller {
|
||||
// Handle cancellation if needed
|
||||
NSLog(@"Document picker was cancelled");
|
||||
}
|
||||
|
||||
%end
|
||||
|
|
|
|||
|
|
@ -1,16 +1,10 @@
|
|||
#import "../YTLitePlus.h"
|
||||
|
||||
static BOOL IsEnabled(NSString *key) {
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:key];
|
||||
}
|
||||
static BOOL isDarkMode() {
|
||||
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 1);
|
||||
}
|
||||
static BOOL oledDarkTheme() {
|
||||
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 1);
|
||||
}
|
||||
static BOOL oldDarkTheme() {
|
||||
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 2);
|
||||
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 1);
|
||||
}
|
||||
|
||||
// Themes.xm - Theme Options
|
||||
|
|
@ -402,7 +396,7 @@ UIColor *customColor = [UIColor colorWithRed:0.129 green:0.129 blue:0.129 alpha:
|
|||
%end
|
||||
|
||||
// OLED dark mode by @BandarHL and modified by @arichorn
|
||||
UIColor* raisedColor = [UIColor blackColor];
|
||||
/*
|
||||
%group gOLED
|
||||
%hook YTCommonColorPalette
|
||||
- (UIColor *)background1 {
|
||||
|
|
@ -788,6 +782,7 @@ UIColor* raisedColor = [UIColor blackColor];
|
|||
}
|
||||
%end
|
||||
%end
|
||||
*/
|
||||
|
||||
// OLED keyboard by @ichitaso <3 - http://gist.github.com/ichitaso/935100fd53a26f18a9060f7195a1be0e
|
||||
%group gOLEDKB
|
||||
|
|
@ -837,9 +832,6 @@ UIColor* raisedColor = [UIColor blackColor];
|
|||
if (IsEnabled(@"oledKeyBoard_enabled")) {
|
||||
%init(gOLEDKB);
|
||||
}
|
||||
if (oledDarkTheme()) {
|
||||
%init(gOLED);
|
||||
}
|
||||
if (oldDarkTheme()) {
|
||||
%init(gOldDarkTheme);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,6 @@
|
|||
#import "../YTLitePlus.h"
|
||||
|
||||
//
|
||||
static BOOL IsEnabled(NSString *key) {
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:key];
|
||||
}
|
||||
|
||||
static int appVersionSpoofer() {
|
||||
return [[NSUserDefaults standardUserDefaults] integerForKey:@"versionSpoofer"];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 12c4c05aec6e10c618b7fb175bd903c6c4227e7f
|
||||
Subproject commit 8578263c9f7caf7a22bd9364648e218974ee543c
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 17c2035ea9c8334f2d9154f114b6590928e93521
|
||||
Subproject commit 02a5c915a7f4183307812a94759d73f25e7fdba6
|
||||
1
Tweaks/YouLoop
Submodule
1
Tweaks/YouLoop
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 5a424d7531c0d2f82d258b8e8c580e153a93fcdd
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 171f681e235a1f7176cde31a95e6454fc00418c3
|
||||
Subproject commit 850e939ce7053f593ed477e83ec914c98669be46
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit cb7111914918b2c0783f2d44a18a08b6c4b51c4e
|
||||
Subproject commit 57ba42815efe292b3c9c99e8afadf13bbb13fff1
|
||||
54
YTLitePlus.h
54
YTLitePlus.h
|
|
@ -6,6 +6,10 @@
|
|||
#import <sys/utsname.h>
|
||||
#import <substrate.h>
|
||||
#import <rootless.h>
|
||||
#import <MediaPlayer/MediaPlayer.h>
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
#import <AVKit/AVKit.h> // For AVPlayer and AVPlayerViewController
|
||||
#import <MobileCoreServices/MobileCoreServices.h> // For kUTTypeMovie and kUTTypeVideo
|
||||
|
||||
#import "Tweaks/FLEX/FLEX.h"
|
||||
#import "Tweaks/YouTubeHeader/YTAppDelegate.h"
|
||||
|
|
@ -39,6 +43,9 @@
|
|||
#import "Tweaks/YouTubeHeader/YTWatchPullToFullController.h"
|
||||
#import "Tweaks/YouTubeHeader/YTPlayerBarController.h"
|
||||
#import "Tweaks/YouTubeHeader/YTResponder.h"
|
||||
#import "Tweaks/YouTubeHeader/YTMainAppControlsOverlayView.h"
|
||||
#import "Tweaks/YouTubeHeader/YTMultiSizeViewController.h"
|
||||
#import "Tweaks/YouTubeHeader/YTWatchLayerViewController.h"
|
||||
|
||||
#define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil]
|
||||
#define YT_BUNDLE_ID @"com.google.ios.youtube"
|
||||
|
|
@ -47,6 +54,30 @@
|
|||
#define IS_ENABLED(k) [[NSUserDefaults standardUserDefaults] boolForKey:k]
|
||||
#define APP_THEME_IDX [[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"]
|
||||
|
||||
// Avoid issues with multiple includes of this file
|
||||
#pragma once
|
||||
|
||||
// Helper methods for key retrieval
|
||||
#define IsEnabled(key) [[NSUserDefaults standardUserDefaults] boolForKey:key]
|
||||
#define GetSelection(key) [[NSUserDefaults standardUserDefaults] integerForKey:key]
|
||||
#define GetFloat(key) [[NSUserDefaults standardUserDefaults] floatForKey:key]
|
||||
|
||||
|
||||
// Player Gesture selected mode enum
|
||||
typedef NS_ENUM(NSUInteger, GestureMode) {
|
||||
GestureModeVolume,
|
||||
GestureModeBrightness,
|
||||
GestureModeSeek,
|
||||
GestureModeDisabled
|
||||
};
|
||||
// Gesture Section Enum
|
||||
typedef NS_ENUM(NSUInteger, GestureSection) {
|
||||
GestureSectionTop,
|
||||
GestureSectionMiddle,
|
||||
GestureSectionBottom,
|
||||
GestureSectionInvalid
|
||||
};
|
||||
|
||||
// YTSpeed
|
||||
@interface YTVarispeedSwitchControllerOption : NSObject
|
||||
- (id)initWithTitle:(id)title rate:(float)rate;
|
||||
|
|
@ -96,6 +127,14 @@
|
|||
@property (nonatomic, assign, readwrite) BOOL enableSnapToChapter;
|
||||
@end
|
||||
|
||||
// Hide Autoplay Mini Preview - @bhackel
|
||||
@interface YTAutonavPreviewView : UIView
|
||||
@end
|
||||
|
||||
// OLED Live Chat - @bhackel
|
||||
@interface YTLUserDefaults : NSUserDefaults
|
||||
@end
|
||||
|
||||
// Hide Home Tab - @bhackel
|
||||
@interface YTPivotBarViewController : UIViewController
|
||||
@property NSString *selectedPivotIdentifier;
|
||||
|
|
@ -113,6 +152,21 @@
|
|||
@property id <YTResponder> parentResponder;
|
||||
@end
|
||||
|
||||
// Player Gestures - @bhackel
|
||||
@interface YTPlayerViewController (YTLitePlus) <UIGestureRecognizerDelegate>
|
||||
@property (nonatomic, retain) UIPanGestureRecognizer *YTLitePlusPanGesture;
|
||||
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
|
||||
@end
|
||||
@interface YTWatchFullscreenViewController : YTMultiSizeViewController
|
||||
@end
|
||||
@interface MPVolumeController : NSObject
|
||||
@property (nonatomic, assign, readwrite) float volumeValue;
|
||||
@end
|
||||
|
||||
// Hide Collapse Button - @arichornlover
|
||||
@interface YTMainAppControlsOverlayView (YTLitePlus)
|
||||
@property (nonatomic, assign, readwrite) YTQTMButton *watchCollapseButton;
|
||||
@end
|
||||
|
||||
// SponsorBlock button in Nav bar
|
||||
@interface MDCButton : UIButton
|
||||
|
|
|
|||
355
YTLitePlus.xm
355
YTLitePlus.xm
|
|
@ -33,11 +33,6 @@ static NSString *accessGroupID() {
|
|||
return accessGroup;
|
||||
}
|
||||
|
||||
//
|
||||
static BOOL IsEnabled(NSString *key) {
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:key];
|
||||
}
|
||||
|
||||
# pragma mark - Tweaks
|
||||
|
||||
// Activate FLEX
|
||||
|
|
@ -179,6 +174,7 @@ BOOL isSelf() {
|
|||
%end
|
||||
%end
|
||||
|
||||
|
||||
// A/B flags
|
||||
%hook YTColdConfig
|
||||
- (BOOL)respectDeviceCaptionSetting { return NO; } // YouRememberCaption: https://poomsmart.github.io/repo/depictions/youremembercaption.html
|
||||
|
|
@ -194,6 +190,30 @@ BOOL isSelf() {
|
|||
- (BOOL)shouldShowUpgradeDialog { return NO;}
|
||||
%end
|
||||
|
||||
// Hide Speed Toast - @bhackel
|
||||
// YTLite Speed Toast
|
||||
%hook PlayerToast
|
||||
- (void)showPlayerToastWithText:(id)text
|
||||
value:(CGFloat)value
|
||||
style:(NSInteger)style
|
||||
onView:(id)view
|
||||
{
|
||||
if (IsEnabled(@"hideSpeedToast_enabled")) {
|
||||
return;
|
||||
}
|
||||
%orig;
|
||||
}
|
||||
%end
|
||||
// Default YouTube Speed Toast
|
||||
%hook YTInlinePlayerScrubUserEducationView
|
||||
- (void)setVisible:(BOOL)visible {
|
||||
if (IsEnabled(@"hideSpeedToast_enabled")) {
|
||||
return;
|
||||
}
|
||||
%orig;
|
||||
}
|
||||
%end
|
||||
|
||||
// Hide Home Tab - @bhackel
|
||||
%group gHideHomeTab
|
||||
%hook YTPivotBarView
|
||||
|
|
@ -542,6 +562,291 @@ BOOL isTabSelected = NO;
|
|||
}
|
||||
%end
|
||||
|
||||
%hook _ASDisplayView
|
||||
- (void)didMoveToWindow {
|
||||
%orig;
|
||||
// Hide the Comment Section Previews under the Video Player - @arichornlover
|
||||
if ((IsEnabled(@"hidePreviewCommentSection_enabled")) && ([self.accessibilityIdentifier isEqualToString:@"id.ui.comments_entry_point_teaser"])) {
|
||||
self.hidden = YES;
|
||||
self.opaque = YES;
|
||||
self.userInteractionEnabled = NO;
|
||||
CGRect bounds = self.frame;
|
||||
bounds.size.height = 0;
|
||||
self.frame = bounds;
|
||||
[self.superview layoutIfNeeded];
|
||||
[self setNeedsLayout];
|
||||
[self removeFromSuperview];
|
||||
}
|
||||
|
||||
// Live chat OLED dark mode - @bhackel
|
||||
CGFloat alpha;
|
||||
if ([[%c(YTLUserDefaults) standardUserDefaults] boolForKey:@"oledTheme"] // YTLite OLED Theme
|
||||
&& [self.accessibilityIdentifier isEqualToString:@"eml.live_chat_text_message"] // Live chat text message
|
||||
&& [self.backgroundColor getWhite:nil alpha:&alpha] // Check if color is grayscale and get alpha
|
||||
&& alpha != 0.0) // Ignore shorts live chat
|
||||
{
|
||||
self.backgroundColor = [UIColor blackColor];
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
// Hide Autoplay Mini Preview - @bhackel
|
||||
%hook YTAutonavPreviewView
|
||||
- (void)layoutSubviews {
|
||||
%orig;
|
||||
if (IsEnabled(@"hideAutoplayMiniPreview_enabled")) {
|
||||
self.hidden = YES;
|
||||
}
|
||||
}
|
||||
- (void)setHidden:(BOOL)arg1 {
|
||||
if (IsEnabled(@"hideAutoplayMiniPreview_enabled")) {
|
||||
%orig(YES);
|
||||
} else {
|
||||
%orig(arg1);
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
// Hide HUD Messages - @qnblackcat
|
||||
%hook YTHUDMessageView
|
||||
- (id)initWithMessage:(id)arg1 dismissHandler:(id)arg2 {
|
||||
return IsEnabled(@"hideHUD_enabled") ? nil : %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
// Hide Video Player Collapse Button - @arichornlover
|
||||
%hook YTMainAppControlsOverlayView
|
||||
- (void)layoutSubviews {
|
||||
%orig;
|
||||
if (IsEnabled(@"disableCollapseButton_enabled")) {
|
||||
if (self.watchCollapseButton) {
|
||||
[self.watchCollapseButton removeFromSuperview];
|
||||
}
|
||||
}
|
||||
}
|
||||
- (BOOL)watchCollapseButtonHidden {
|
||||
if (IsEnabled(@"disableCollapseButton_enabled")) {
|
||||
return YES;
|
||||
} else {
|
||||
return %orig;
|
||||
}
|
||||
}
|
||||
- (void)setWatchCollapseButtonAvailable:(BOOL)available {
|
||||
if (IsEnabled(@"disableCollapseButton_enabled")) {
|
||||
} else {
|
||||
%orig(available);
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
// Gestures - @bhackel
|
||||
%group playerGestures
|
||||
%hook YTWatchLayerViewController
|
||||
// invoked when the player view controller is either created or destroyed
|
||||
- (void)watchController:(YTWatchController *)watchController didSetPlayerViewController:(YTPlayerViewController *)playerViewController {
|
||||
if (playerViewController) {
|
||||
// check to see if the pan gesture is already created
|
||||
if (!playerViewController.YTLitePlusPanGesture) {
|
||||
playerViewController.YTLitePlusPanGesture = [[UIPanGestureRecognizer alloc] initWithTarget:playerViewController
|
||||
action:@selector(YTLitePlusHandlePanGesture:)];
|
||||
playerViewController.YTLitePlusPanGesture.delegate = playerViewController;
|
||||
[playerViewController.playerView addGestureRecognizer:playerViewController.YTLitePlusPanGesture];
|
||||
}
|
||||
}
|
||||
%orig;
|
||||
}
|
||||
%end
|
||||
|
||||
|
||||
%hook YTPlayerViewController
|
||||
// the pan gesture that will be created and added to the player view
|
||||
%property (nonatomic, retain) UIPanGestureRecognizer *YTLitePlusPanGesture;
|
||||
%new
|
||||
- (void)YTLitePlusHandlePanGesture:(UIPanGestureRecognizer *)panGestureRecognizer {
|
||||
// Haptic feedback generator
|
||||
static UIImpactFeedbackGenerator *feedbackGenerator = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleMedium];
|
||||
// Variables for storing initial values to be adjusted
|
||||
static float initialVolume;
|
||||
static float initialBrightness;
|
||||
static CGFloat currentTime;
|
||||
// Flag to determine if the pan gesture is valid
|
||||
static BOOL isValidHorizontalPan = NO;
|
||||
// Variable to store the section of the screen the gesture is in
|
||||
static GestureSection gestureSection = GestureSectionInvalid;
|
||||
// Variable to track the start location of the whole pan gesture
|
||||
static CGPoint startLocation;
|
||||
// Variable to track the X translation when exiting the deadzone
|
||||
static CGFloat deadzoneStartingXTranslation;
|
||||
// Constant for the deadzone radius that can be changed in the settings
|
||||
static CGFloat deadzoneRadius = (CGFloat)GetFloat(@"playerGesturesDeadzone");
|
||||
// Constant for the sensitivity factor that can be changed in the settings
|
||||
static CGFloat sensitivityFactor = (CGFloat)GetFloat(@"playerGesturesSensitivity");
|
||||
|
||||
/***** Helper functions *****/
|
||||
// Helper function to adjust brightness
|
||||
void (^adjustBrightness)(CGFloat, CGFloat) = ^(CGFloat translationX, CGFloat initialBrightness) {
|
||||
float newBrightness = initialBrightness + ((translationX / 1000.0) * sensitivityFactor);
|
||||
newBrightness = fmaxf(fminf(newBrightness, 1.0), 0.0);
|
||||
[[UIScreen mainScreen] setBrightness:newBrightness];
|
||||
};
|
||||
// Helper function to adjust volume
|
||||
void (^adjustVolume)(CGFloat, CGFloat) = ^(CGFloat translationX, CGFloat initialVolume) {
|
||||
float newVolume = initialVolume + ((translationX / 1000.0) * sensitivityFactor);
|
||||
newVolume = fmaxf(fminf(newVolume, 1.0), 0.0);
|
||||
// https://stackoverflow.com/questions/50737943/how-to-change-volume-programmatically-on-ios-11-4
|
||||
MPVolumeView *volumeView = [[MPVolumeView alloc] init];
|
||||
UISlider *volumeViewSlider = nil;
|
||||
for (UIView *view in volumeView.subviews) {
|
||||
if ([view isKindOfClass:[UISlider class]]) {
|
||||
volumeViewSlider = (UISlider *)view;
|
||||
break;
|
||||
}
|
||||
}
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
volumeViewSlider.value = newVolume;
|
||||
});
|
||||
};
|
||||
// Helper function to adjust seek time
|
||||
void (^adjustSeek)(CGFloat, CGFloat) = ^(CGFloat translationX, CGFloat currentTime) {
|
||||
// Calculate a seek fraction based on the horizontal translation
|
||||
CGFloat totalDuration = self.currentVideoTotalMediaTime;
|
||||
CGFloat viewWidth = self.view.bounds.size.width;
|
||||
CGFloat seekFraction = (translationX / viewWidth);
|
||||
// Seek to the new time based on the calculated offset
|
||||
CGFloat sensitivityFactor = 1; // Adjust this value to make seeking less sensitive
|
||||
seekFraction = sensitivityFactor * seekFraction;
|
||||
CGFloat seekTime = currentTime + totalDuration * seekFraction;
|
||||
[self seekToTime:seekTime];
|
||||
};
|
||||
// Helper function to run the selected gesture action
|
||||
void (^runSelectedGesture)(NSString*, CGFloat, CGFloat, CGFloat, CGFloat)
|
||||
= ^(NSString *sectionKey, CGFloat translationX, CGFloat initialBrightness, CGFloat initialVolume, CGFloat currentTime) {
|
||||
// Determine the selected gesture mode using the section key
|
||||
GestureMode selectedGestureMode = (GestureMode)GetSelection(sectionKey);
|
||||
// Handle the gesture action based on the selected mode
|
||||
switch (selectedGestureMode) {
|
||||
case GestureModeVolume:
|
||||
adjustVolume(translationX, initialVolume);
|
||||
break;
|
||||
case GestureModeBrightness:
|
||||
adjustBrightness(translationX, initialBrightness);
|
||||
break;
|
||||
case GestureModeSeek:
|
||||
adjustSeek(translationX, currentTime);
|
||||
break;
|
||||
case GestureModeDisabled:
|
||||
// Do nothing if the gesture is disabled
|
||||
break;
|
||||
default:
|
||||
// Show an alert if the gesture mode is invalid
|
||||
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Invalid Gesture Mode" message:@"Please report this bug." preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
|
||||
[alertController addAction:okAction];
|
||||
[self presentViewController:alertController animated:YES completion:nil];
|
||||
break;
|
||||
}
|
||||
};
|
||||
/***** End of Helper functions *****/
|
||||
|
||||
// Handle gesture based on current gesture state
|
||||
if (panGestureRecognizer.state == UIGestureRecognizerStateBegan) {
|
||||
// Get the gesture's start position
|
||||
startLocation = [panGestureRecognizer locationInView:self.view];
|
||||
CGFloat viewHeight = self.view.bounds.size.height;
|
||||
|
||||
// Determine the section based on the start position
|
||||
// by dividing the view into thirds
|
||||
if (startLocation.y <= viewHeight / 3.0) {
|
||||
gestureSection = GestureSectionTop;
|
||||
// Cancel the gesture if the mode is disabled
|
||||
if (GetSelection(@"playerGestureTopSelection") == GestureModeDisabled) {
|
||||
panGestureRecognizer.state = UIGestureRecognizerStateCancelled;
|
||||
return;
|
||||
}
|
||||
} else if (startLocation.y <= 2 * viewHeight / 3.0) {
|
||||
gestureSection = GestureSectionMiddle;
|
||||
// Cancel the gesture if the mode is disabled
|
||||
if (GetSelection(@"playerGestureMiddleSelection") == GestureModeDisabled) {
|
||||
panGestureRecognizer.state = UIGestureRecognizerStateCancelled;
|
||||
return;
|
||||
}
|
||||
} else if (startLocation.y <= viewHeight) {
|
||||
gestureSection = GestureSectionBottom;
|
||||
// Cancel the gesture if the mode is disabled
|
||||
if (GetSelection(@"playerGestureBottomSelection") == GestureModeDisabled) {
|
||||
panGestureRecognizer.state = UIGestureRecognizerStateCancelled;
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
gestureSection = GestureSectionInvalid;
|
||||
}
|
||||
// Deactive the activity flag
|
||||
isValidHorizontalPan = NO;
|
||||
}
|
||||
|
||||
if (panGestureRecognizer.state == UIGestureRecognizerStateChanged) {
|
||||
// Determine if the gesture is predominantly horizontal
|
||||
CGPoint translation = [panGestureRecognizer translationInView:self.view];
|
||||
if (!isValidHorizontalPan) {
|
||||
if (fabs(translation.x) > fabs(translation.y)) {
|
||||
// Check if the touch has moved outside the deadzone
|
||||
CGFloat distanceFromStart = hypot(translation.x, translation.y);
|
||||
if (distanceFromStart < deadzoneRadius) {
|
||||
// If within the deadzone, don't activate the pan gesture
|
||||
return;
|
||||
}
|
||||
// If outside the deadzone, activate the pan gesture and store the initial values
|
||||
isValidHorizontalPan = YES;
|
||||
deadzoneStartingXTranslation = translation.x;
|
||||
initialBrightness = [UIScreen mainScreen].brightness;
|
||||
initialVolume = [[AVAudioSession sharedInstance] outputVolume];
|
||||
currentTime = self.currentVideoMediaTime;
|
||||
// Provide haptic feedback to indicate a gesture start
|
||||
[feedbackGenerator prepare];
|
||||
[feedbackGenerator impactOccurred];
|
||||
} else {
|
||||
// Cancel the gesture if the translation is not horizontal
|
||||
panGestureRecognizer.state = UIGestureRecognizerStateCancelled;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Handle the gesture based on the identified section
|
||||
if (isValidHorizontalPan) {
|
||||
// Adjust the X translation based on the value hit after
|
||||
// exiting the deadzone
|
||||
CGFloat adjustedTranslationX = translation.x - deadzoneStartingXTranslation;
|
||||
// Pass the adjusted translation to the selected gesture
|
||||
if (gestureSection == GestureSectionTop) {
|
||||
runSelectedGesture(@"playerGestureTopSelection", adjustedTranslationX, initialBrightness, initialVolume, currentTime);
|
||||
} else if (gestureSection == GestureSectionMiddle) {
|
||||
runSelectedGesture(@"playerGestureMiddleSelection", adjustedTranslationX, initialBrightness, initialVolume, currentTime);
|
||||
} else if (gestureSection == GestureSectionBottom) {
|
||||
runSelectedGesture(@"playerGestureBottomSelection", adjustedTranslationX, initialBrightness, initialVolume, currentTime);
|
||||
} else {
|
||||
// If the section is invalid, cancel the gesture
|
||||
panGestureRecognizer.state = UIGestureRecognizerStateCancelled;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (panGestureRecognizer.state == UIGestureRecognizerStateEnded) {
|
||||
if (isValidHorizontalPan) {
|
||||
// Provide haptic feedback upon successful gesture recognition
|
||||
[feedbackGenerator prepare];
|
||||
[feedbackGenerator impactOccurred];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// allow the pan gesture to be recognized simultaneously with other gestures
|
||||
%new
|
||||
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
|
||||
return YES;
|
||||
}
|
||||
%end
|
||||
%end
|
||||
|
||||
/*
|
||||
// BigYTMiniPlayer: https://github.com/Galactic-Dev/BigYTMiniPlayer
|
||||
%group Main
|
||||
%hook YTWatchMiniBarView
|
||||
|
|
@ -566,6 +871,20 @@ BOOL isTabSelected = NO;
|
|||
}
|
||||
%end
|
||||
%end
|
||||
*/
|
||||
// New Big YT Mini Player - @bhackel
|
||||
%hook YTColdConfig
|
||||
- (BOOL)enableIosFloatingMiniplayer {
|
||||
// Modify if not on iPad
|
||||
return (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad) ? IsEnabled(@"bigYTMiniPlayer_enabled") : %orig;
|
||||
}
|
||||
- (BOOL)enableIosFloatingMiniplayerRepositioning {
|
||||
return (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad) ? IsEnabled(@"bigYTMiniPlayer_enabled") : %orig;
|
||||
}
|
||||
- (BOOL)enableIosFloatingMiniplayerResizing {
|
||||
return (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad) ? IsEnabled(@"bigYTMiniPlayer_enabled") : %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
// App Settings Overlay Options
|
||||
%group gDisableAccountSection
|
||||
|
|
@ -699,9 +1018,9 @@ BOOL isTabSelected = NO;
|
|||
if (IsEnabled(@"iPhoneLayout_enabled")) {
|
||||
%init(giPhoneLayout);
|
||||
}
|
||||
if (IsEnabled(@"bigYTMiniPlayer_enabled") && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) {
|
||||
%init(Main);
|
||||
}
|
||||
// if (IsEnabled(@"bigYTMiniPlayer_enabled") && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) {
|
||||
// %init(Main);
|
||||
// }
|
||||
if (IsEnabled(@"hideVideoPlayerShadowOverlayButtons_enabled")) {
|
||||
%init(gHideVideoPlayerShadowOverlayButtons);
|
||||
}
|
||||
|
|
@ -756,6 +1075,9 @@ BOOL isTabSelected = NO;
|
|||
if (IsEnabled(@"disableEngagementOverlay_enabled")) {
|
||||
%init(gDisableEngagementOverlay);
|
||||
}
|
||||
if (IsEnabled(@"playerGestures_enabled")) {
|
||||
%init(playerGestures);
|
||||
}
|
||||
|
||||
// Change the default value of some options
|
||||
NSArray *allKeys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys];
|
||||
|
|
@ -771,4 +1093,21 @@ BOOL isTabSelected = NO;
|
|||
if (![allKeys containsObject:@"fixCasting_enabled"]) {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"fixCasting_enabled"];
|
||||
}
|
||||
// Default gestures as volume, brightness, seek
|
||||
if (![allKeys containsObject:@"playerGestureTopSelection"]) {
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:GestureModeVolume forKey:@"playerGestureTopSelection"];
|
||||
}
|
||||
if (![allKeys containsObject:@"playerGestureMiddleSelection"]) {
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:GestureModeBrightness forKey:@"playerGestureMiddleSelection"];
|
||||
}
|
||||
if (![allKeys containsObject:@"playerGestureBottomSelection"]) {
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:GestureModeSeek forKey:@"playerGestureBottomSelection"];
|
||||
}
|
||||
// Default configuration options for gestures
|
||||
if (![allKeys containsObject:@"playerGesturesDeadzone"]) {
|
||||
[[NSUserDefaults standardUserDefaults] setFloat:20.0 forKey:@"playerGesturesDeadzone"];
|
||||
}
|
||||
if (![allKeys containsObject:@"playerGesturesSensitivity"]) {
|
||||
[[NSUserDefaults standardUserDefaults] setFloat:1.0 forKey:@"playerGesturesSensitivity"];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,36 @@
|
|||
"VERSION" = "نسخة YTLitePlus: %@";
|
||||
"VERSION_CHECK" = "انقر للتحقق من وجود تحديث";
|
||||
|
||||
"COPY_SETTINGS" = "Copy Settings";
|
||||
"COPY_SETTINGS_DESC" = "Copy all current settings to the clipboard";
|
||||
"PASTE_SETTINGS" = "Paste Settings";
|
||||
"PASTE_SETTINGS_DESC" = "Paste settings from clipboard and apply";
|
||||
"EXPORT_SETTINGS" = "Export Settings";
|
||||
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
|
||||
"IMPORT_SETTINGS" = "Import Settings";
|
||||
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
// Video controls overlay options
|
||||
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "خيارات تراكب ضوابط الفيديو";
|
||||
|
||||
|
|
@ -47,6 +77,21 @@
|
|||
"DISABLE_ENGAGEMENT_OVERLAY" = "Disable fullscreen engagement overlay";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Disable the swipe-up gesture and suggested videos list in fullscreen";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Hide Comment previews under player";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Hide comment spoiler in comments button";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Hide autoplay mini preview";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Hide the small suggested video box near the title in fullscreen";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "إخفاء رسائل المعلومات";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "مثلاً: تم إيقاف الترجمة...";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player.";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Hide Speed Toast";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player";
|
||||
|
||||
// App settings overlay options
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options";
|
||||
|
||||
|
|
|
|||
185
lang/YTLitePlus.bundle/bg.lproj/Localizable.strings
Normal file
185
lang/YTLitePlus.bundle/bg.lproj/Localizable.strings
Normal file
|
|
@ -0,0 +1,185 @@
|
|||
// Settings
|
||||
"VERSION" = "Версия на YTLitePlus: %@";
|
||||
"VERSION_CHECK" = "Докоснете, за да проверите за актуализация!";
|
||||
|
||||
"COPY_SETTINGS" = "Копиране на настройки";
|
||||
"COPY_SETTINGS_DESC" = "Копиране на всички текущи настройки в клипборда";
|
||||
"PASTE_SETTINGS" = "Поставяне на настройки";
|
||||
"PASTE_SETTINGS_DESC" = "Поставяне на настройки от клипборда и прилагане";
|
||||
"EXPORT_SETTINGS" = "Експортиране на настройки";
|
||||
"EXPORT_SETTINGS_DESC" = "Експортиране на всички текущи настройки в .txt файл";
|
||||
"IMPORT_SETTINGS" = "Импортиране на настройки";
|
||||
"IMPORT_SETTINGS_DESC" = "Натиснете, за да импортирате настройки (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Заменете бутоните 'Копиране на настройки' и 'Поставяне на настройки'";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Заменете бутоните с 'Експортиране на настройки' и 'Импортиране на настройки'";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
// Video controls overlay options
|
||||
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Опции за контрол на видеото";
|
||||
|
||||
"ENABLE_SHARE_BUTTON" = "Активирайте бутона за споделяне";
|
||||
"ENABLE_SHARE_BUTTON_DESC" = "Активирайте бутона за споделяне в контролите на видеото.";
|
||||
|
||||
"ENABLE_SAVE_TO_PLAYLIST_BUTTON" = "Активирайте бутона 'Запази в плейлист'";
|
||||
"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC" = "Активирайте бутона 'Запази в плейлист' в контролите на видеото.";
|
||||
|
||||
"HIDE_SHADOW_OVERLAY_BUTTONS" = "Скрийте бутоните с сенчест слой";
|
||||
"HIDE_SHADOW_OVERLAY_BUTTONS_DESC" = "Скрийте сенчестия слой на бутоните за възпроизвеждане/пауза, предишен, следващ, напред и въртене назад.";
|
||||
|
||||
"HIDE_RIGHT_PANEL" = "Скрийте дясната панел в режим на цял екран";
|
||||
"HIDE_RIGHT_PANEL_DESC" = "Необходим е рестарт на приложението.";
|
||||
|
||||
"HIDE_HEATWAVES" = "Скрийте топлинните вълни";
|
||||
"HIDE_HEATWAVES_DESC" = "Скрийте топлинните вълни в видеоплеъра. Необходим е рестарт на приложението.";
|
||||
|
||||
"DISABLE_AMBIENT_PORTRAIT" = "Деактивирайте Ambient Mode (Портрет)";
|
||||
"DISABLE_AMBIENT_PORTRAIT_DESC" = "Деактивирайте осветлението около заглавието на видеото";
|
||||
|
||||
"DISABLE_AMBIENT_FULLSCREEN" = "Деактивирайте Ambient Mode (Цял екран)";
|
||||
"DISABLE_AMBIENT_FULLSCREEN_DESC" = "Деактивирайте осветлението около видеоплеъра";
|
||||
|
||||
"FULLSCREEN_TO_THE_RIGHT" = "Цял екран вдясно";
|
||||
"FULLSCREEN_TO_THE_RIGHT_DESC" = "Винаги влизайте в режим на цял екран с бутона за начало от дясната страна.";
|
||||
|
||||
"SEEK_ANYWHERE" = "Търсене навсякъде жест";
|
||||
"SEEK_ANYWHERE_DESC" = "Задръжте и плъзнете върху видеоплеъра, за да търсите. Трябва да деактивирате YTLite - Задръжте, за да увеличите скоростта";
|
||||
|
||||
"ENABLE_TAP_TO_SEEK" = "Активирайте докосване за търсене";
|
||||
"ENABLE_TAP_TO_SEEK_DESC" = "Скочете навсякъде в видео, като докоснете един път лентата за търсене";
|
||||
|
||||
"DISABLE_PULL_TO_FULLSCREEN_GESTURE" = "Деактивирайте жеста за плъзгане до цял екран";
|
||||
"DISABLE_PULL_TO_FULLSCREEN_GESTURE_DESC" = "Деактивирайте жеста за плъзгане, за да влезете в вертикален режим на цял екран. Приложимо само за видеа в ландшафтен режим.";
|
||||
|
||||
"ALWAYS_USE_REMAINING_TIME" = "Винаги използвайте оставащото време";
|
||||
"ALWAYS_USE_REMAINING_TIME_DESC" = "Променете настройката по подразбиране да показва оставащото време в лентата на плейъра.";
|
||||
|
||||
"DISABLE_TOGGLE_TIME_REMAINING" = "Деактивирайте превключването на оставащото време";
|
||||
"DISABLE_TOGGLE_TIME_REMAINING_DESC" = "Деактивирайте променянето на изминалото време на оставащото време. Използвайте с друга настройка, за да показвате винаги оставащото време.";
|
||||
|
||||
"DISABLE_ENGAGEMENT_OVERLAY" = "Деактивирайте ангажиращия слой в режим на цял екран";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Деактивирайте жеста за плъзгане нагоре и списъка с предложени видеа в режим на цял екран";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Скрийте прегледите на коментари под плейъра";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Скрийте спойлера на коментарите в бутона за коментари";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Скрийте мини прегледа за автоматично възпроизвеждане";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Скрийте малкия прозорец с предложени видеа близо до заглавието в режим на цял екран";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Скрийте съобщенията на HUD";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Скрийте съобщенията, които се показват за определени действия (напр. CC включен/изключен)";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "Скрийте бутона за свиване";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "Скрийте бутона за свиване на стрелка, който беше показан в горния ляв ъгъл на видеоплеъра.";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Скрийте съобщението за скорост";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Скрийте изскачащото съобщение за 2X скорост при задържане на плейъра";
|
||||
|
||||
// App settings overlay options
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "Опции за настройки на приложението";
|
||||
|
||||
"HIDE_ACCOUNT_SECTION" = "Скрийте секцията \"Акаунт\"";
|
||||
"HIDE_AUTOPLAY_SECTION" = "Скрийте секцията \"Автоматично възпроизвеждане\"";
|
||||
"HIDE_TRYNEWFEATURES_SECTION" = "Скрийте секцията \"Опитайте нови функции\"";
|
||||
"HIDE_VIDEOQUALITYPREFERENCES_SECTION" = "Скрийте секцията \"Предпочитания за качество на видеото\"";
|
||||
"HIDE_NOTIFICATIONS_SECTION" = "Скрийте секцията \"Уведомления\"";
|
||||
"HIDE_MANAGEALLHISTORY_SECTION" = "Скрийте секцията \"Управление на цялата история\"";
|
||||
"HIDE_YOURDATAINYOUTUBE_SECTION" = "Скрийте секцията \"Вашите данни в YouTube\"";
|
||||
"HIDE_PRIVACY_SECTION" = "Скрийте секцията \"Поверителност\"";
|
||||
"HIDE_LIVECHAT_SECTION" = "Скрийте секцията \"Жив чат\"";
|
||||
|
||||
// Theme
|
||||
"THEME_OPTIONS" = "Опции за тема";
|
||||
|
||||
"OLED_DARK_THEME" = "OLED тъмен режим";
|
||||
"OLED_DARK_THEME_2" = "OLED тъмен режим";
|
||||
"OLED_DARK_THEME_DESC" = "Истински тъмен режим. Може да не работи правилно в някои случаи. Необходим е рестарт на приложението след включване/изключване на тази опция.";
|
||||
|
||||
"OLD_DARK_THEME" = "Стар тъмен режим";
|
||||
"OLD_DARK_THEME_DESC" = "Старият тъмен режим на YouTube (сив режим). Необходим е рестарт на приложението.";
|
||||
|
||||
"DEFAULT_THEME" = "По подразбиране";
|
||||
"DEFAULT_THEME_DESC" = "Тъмен(и) режим(и) по подразбиране на YouTube. Необходим е рестарт на приложението.";
|
||||
|
||||
"OLED_KEYBOARD" = "OLED клавиатура";
|
||||
"OLED_KEYBOARD_DESC" = "Може да не работи правилно в някои случаи. Необходим е рестарт на приложението.";
|
||||
|
||||
"LOW_CONTRAST_MODE" = "Режим с нисък контраст";
|
||||
"LOW_CONTRAST_MODE_DESC" = "Тази опция ще намали контраста на текстовете и бутоните, както беше в стария интерфейс на YouTube. Необходим е рестарт на приложението.";
|
||||
"LCM_SELECTOR" = "Избор на режим с нисък контраст";
|
||||
"DEFAULT_LOWCONTRASTMODE" = "(По подразбиране) Режим с нисък контраст";
|
||||
"CUSTOM_LOWCONTRASTMODE" = "(Персонализиран цвят) Режим с нисък контраст";
|
||||
|
||||
// Miscellaneous
|
||||
"MISCELLANEOUS" = "Разни";
|
||||
|
||||
"PLAYBACK_IN_FEEDS" = "Възпроизвеждане в новините";
|
||||
"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Винаги включено";
|
||||
"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Само Wi-Fi";
|
||||
"PLAYBACK_IN_FEEDS_OFF" = "Изключено";
|
||||
|
||||
"NEW_SETTINGS_UI" = "Нов потребителски интерфейс на настройките";
|
||||
"NEW_SETTINGS_UI_DESC" = "Използвайте новия групиран потребителски интерфейс за настройки. Може да скрие някои настройки";
|
||||
|
||||
"ENABLE_YT_STARTUP_ANIMATION" = "Активирайте анимацията при стартиране на YouTube";
|
||||
"ENABLE_YT_STARTUP_ANIMATION_DESC" = "";
|
||||
|
||||
"HIDE_MODERN_INTERFACE" = "Скрийте съвременния интерфейс (YTNoModernUI)";
|
||||
"HIDE_MODERN_INTERFACE_DESC" = "Включете това, за да скриете съвременните елементи, добавени от YouTube. Премахва Ambient Mode, закръглен дизайн и други. Необходим е рестарт на приложението.";
|
||||
|
||||
"IPAD_LAYOUT" = "Оформление за iPad";
|
||||
"IPAD_LAYOUT_DESC" = "Използвайте това, само ако искате да имате оформлението за iPad на текущия си iPhone/iPod. Необходим е рестарт на приложението.";
|
||||
|
||||
"IPHONE_LAYOUT" = "Оформление за iPhone";
|
||||
"IPHONE_LAYOUT_DESC" = "Използвайте това, само ако искате да имате оформлението за iPhone на текущия си iPad. Необходим е рестарт на приложението.";
|
||||
|
||||
"CAST_CONFIRM" = "Потвърдете предупреждението преди стрийминг (YTCastConfirm)";
|
||||
"CAST_CONFIRM_DESC" = "Показвайте потвърдително предупреждение преди стрийминг, за да предотвратите случайно преекспониране на TV.";
|
||||
"CASTING" = "Стрийминг";
|
||||
"MSG_ARE_YOU_SURE" = "Сигурни ли сте, че искате да започнете стрийминг?";
|
||||
"MSG_YES" = "Да";
|
||||
"MSG_CANCEL" = "Отказ";
|
||||
|
||||
"NEW_MINIPLAYER_STYLE" = "Нов стил на мини плейъра (BigYTMiniPlayer)";
|
||||
"NEW_MINIPLAYER_STYLE_DESC" = "Необходим е рестарт на приложението.";
|
||||
|
||||
"HIDE_CAST_BUTTON" = "Скрийте бутона за стрийминг";
|
||||
"HIDE_CAST_BUTTON_DESC" = "Необходим е рестарт на приложението.";
|
||||
|
||||
"HIDE_SPONSORBLOCK_BUTTON" = "Скрийте бутона за iSponsorBlock в навигационната лента";
|
||||
"HIDE_SPONSORBLOCK_BUTTON_DESC" = "";
|
||||
|
||||
"HIDE_HOME_TAB" = "Скрийте таба \"Начало\"";
|
||||
"HIDE_HOME_TAB_DESC" = "Бъдете внимателни при скриване на всички табове";
|
||||
|
||||
"FIX_CASTING" = "Поправете стрийминг";
|
||||
"FIX_CASTING_DESC" = "Променя някои AB флагове, за да поправи стрийминг";
|
||||
|
||||
"ENABLE_FLEX" = "Активирайте FLEX";
|
||||
"ENABLE_FLEX_DESC" = "Активирайте FLEX за отстраняване на проблеми (не се препоръчва). Оставете това изключено, освен ако не знаете какво правите.";
|
||||
|
||||
// Version Spoofer
|
||||
"APP_VERSION_SPOOFER_LITE" = "Активирайте Промяна на версията на приложението (Lite)";
|
||||
"APP_VERSION_SPOOFER_LITE_DESC" = "Активирайте това, за да използвате Промяната на версията (Lite) и изберете предпочитаната версия по-долу. Необходим е рестарт на приложението.";
|
||||
"VERSION_SPOOFER_TITLE" = "Избор на Промяна на версията";
|
||||
|
||||
// Other Localization
|
||||
"APP_RESTART_DESC" = "Необходим е рестарт на приложението.";
|
||||
"CHANGE_APP_ICON" = "Промяна на иконата на приложението";
|
||||
|
|
@ -2,6 +2,36 @@
|
|||
"VERSION" = "YTLitePlus's version: %@";
|
||||
"VERSION_CHECK" = "Tippe hier, um nach Updates zu suchen!";
|
||||
|
||||
"COPY_SETTINGS" = "Copy Settings";
|
||||
"COPY_SETTINGS_DESC" = "Copy all current settings to the clipboard";
|
||||
"PASTE_SETTINGS" = "Paste Settings";
|
||||
"PASTE_SETTINGS_DESC" = "Paste settings from clipboard and apply";
|
||||
"EXPORT_SETTINGS" = "Export Settings";
|
||||
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
|
||||
"IMPORT_SETTINGS" = "Import Settings";
|
||||
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
// Video controls overlay options
|
||||
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Overlay-Optionen für Videosteuerungen";
|
||||
|
||||
|
|
@ -47,6 +77,21 @@
|
|||
"DISABLE_ENGAGEMENT_OVERLAY" = "Disable fullscreen engagement overlay";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Disable the swipe-up gesture and suggested videos list in fullscreen";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Hide Comment previews under player";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Hide comment spoiler in comments button";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Hide autoplay mini preview";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Hide the small suggested video box near the title in fullscreen";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "HUD-Nachrichten ausblenden";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "z.B.: Untertitel sind aktiviert/deaktiviert, Videoschleife ist an, ...";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player.";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Hide Speed Toast";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player";
|
||||
|
||||
// App settings overlay options
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "Overlay-Optionen für App-Einstellungen";
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,36 @@
|
|||
"VERSION" = "YTLitePlus's version: %@";
|
||||
"VERSION_CHECK" = "Tap to check for update!";
|
||||
|
||||
"COPY_SETTINGS" = "Copy Settings";
|
||||
"COPY_SETTINGS_DESC" = "Copy all current settings to the clipboard";
|
||||
"PASTE_SETTINGS" = "Paste Settings";
|
||||
"PASTE_SETTINGS_DESC" = "Paste settings from clipboard and apply";
|
||||
"EXPORT_SETTINGS" = "Export Settings";
|
||||
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
|
||||
"IMPORT_SETTINGS" = "Import Settings";
|
||||
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
// Video controls overlay options
|
||||
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
|
||||
|
||||
|
|
@ -47,6 +77,21 @@
|
|||
"DISABLE_ENGAGEMENT_OVERLAY" = "Disable fullscreen engagement overlay";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Disable the swipe-up gesture and suggested videos list in fullscreen";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Hide Comment previews under player";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Hide comment spoiler in comments button";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Hide autoplay mini preview";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Hide the small suggested video box near the title in fullscreen";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Hide HUD messages";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Hides snackbars that display for certain actions (e.g., CC turned on/off)";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player.";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Hide Speed Toast";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player";
|
||||
|
||||
// App settings overlay options
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options";
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,36 @@
|
|||
"VERSION" = "Versión de YTLitePlus: %@";
|
||||
"VERSION_CHECK" = "Pulse para comprobar si hay actualizaciones.";
|
||||
|
||||
"COPY_SETTINGS" = "Copy Settings";
|
||||
"COPY_SETTINGS_DESC" = "Copy all current settings to the clipboard";
|
||||
"PASTE_SETTINGS" = "Paste Settings";
|
||||
"PASTE_SETTINGS_DESC" = "Paste settings from clipboard and apply";
|
||||
"EXPORT_SETTINGS" = "Export Settings";
|
||||
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
|
||||
"IMPORT_SETTINGS" = "Import Settings";
|
||||
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
// Video controls overlay options
|
||||
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Opciones de superposición de controles de vídeo";
|
||||
|
||||
|
|
@ -47,6 +77,21 @@
|
|||
"DISABLE_ENGAGEMENT_OVERLAY" = "Desactivar la superposición de compromiso a pantalla completa";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Desactivar el gesto de deslizar hacia arriba y la lista de vídeos sugeridos en pantalla completa";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Hide Comment previews under player";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Hide comment spoiler in comments button";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Hide autoplay mini preview";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Hide the small suggested video box near the title in fullscreen";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Ocultar mensajes HUD";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Ejemplo: CC está activado/desactivado, Vídeo en bucle está activado,...";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player.";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Hide Speed Toast";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player";
|
||||
|
||||
// App settings overlay options
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "Opciones de superposición de los ajustes de la aplicación";
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,36 @@
|
|||
"VERSION" = "YTLitePlus version : %@";
|
||||
"VERSION_CHECK" = "Appuyez pour vérifier les mises à jour !";
|
||||
|
||||
"COPY_SETTINGS" = "Copy Settings";
|
||||
"COPY_SETTINGS_DESC" = "Copy all current settings to the clipboard";
|
||||
"PASTE_SETTINGS" = "Paste Settings";
|
||||
"PASTE_SETTINGS_DESC" = "Paste settings from clipboard and apply";
|
||||
"EXPORT_SETTINGS" = "Export Settings";
|
||||
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
|
||||
"IMPORT_SETTINGS" = "Import Settings";
|
||||
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
// Video controls overlay options
|
||||
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Options de l'overlay des contrôles vidéo";
|
||||
|
||||
|
|
@ -47,6 +77,21 @@
|
|||
"DISABLE_ENGAGEMENT_OVERLAY" = "Disable fullscreen engagement overlay";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Disable the swipe-up gesture and suggested videos list in fullscreen";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Hide Comment previews under player";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Hide comment spoiler in comments button";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Hide autoplay mini preview";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Hide the small suggested video box near the title in fullscreen";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Masquer les messages de l'ATH";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Exemple : Les sous-titres sont activés/désactivés, la boucle vidéo est activée,...";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player.";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Hide Speed Toast";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player";
|
||||
|
||||
// App settings overlay options
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "Paramètres des options d'overlay de l'application";
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,36 @@
|
|||
"VERSION" = "YTLitePlusのバージョン: %@";
|
||||
"VERSION_CHECK" = "タップして更新をチェック!";
|
||||
|
||||
"COPY_SETTINGS" = "設定をコピー";
|
||||
"COPY_SETTINGS_DESC" = "現在のすべての設定をクリップボードにコピーします";
|
||||
"PASTE_SETTINGS" = "設定を貼り付け";
|
||||
"PASTE_SETTINGS_DESC" = "クリップボードから設定を貼り付けて適用します";
|
||||
"EXPORT_SETTINGS" = "Export Settings";
|
||||
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
|
||||
"IMPORT_SETTINGS" = "Import Settings";
|
||||
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
// Video controls overlay options
|
||||
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "動画コントロールオーバーレイの設定";
|
||||
|
||||
|
|
@ -47,6 +77,21 @@
|
|||
"DISABLE_ENGAGEMENT_OVERLAY" = "Disable fullscreen engagement overlay";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Disable the swipe-up gesture and suggested videos list in fullscreen";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "プレーヤー下のコメントプレビューを隠す";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "プレーヤーの下にあるコメントのプレビューを非表示にします。";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Hide autoplay mini preview";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Hide the small suggested video box near the title in fullscreen";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "HUDメッセージを非表示";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "特定のアクション後に表示されるスナックバーを非表示にします。(例: 字幕がオン/オフになりました など)";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "折りたたみボタンを隠す";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "プレーヤー左上の折りたたみボタンを非表示にします。";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Hide Speed Toast";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player";
|
||||
|
||||
// App settings overlay options
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "アプリの設定オーバーレイの設定";
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,36 @@
|
|||
"VERSION" = "Versão do YTLitePlus: %@";
|
||||
"VERSION_CHECK" = "Toque para verificar se há atualização!";
|
||||
|
||||
"COPY_SETTINGS" = "Copiar Configurações";
|
||||
"COPY_SETTINGS_DESC" = "Copia todas as configurações atuais para a área de transferência";
|
||||
"PASTE_SETTINGS" = "Colar Configurações";
|
||||
"PASTE_SETTINGS_DESC" = "Cola as configurações da área de transferência e aplica";
|
||||
"EXPORT_SETTINGS" = "Exportar Configurações";
|
||||
"EXPORT_SETTINGS_DESC" = "Exporta todas as configurações atuais para um arquivo .txt";
|
||||
"IMPORT_SETTINGS" = "Importar Configurações";
|
||||
"IMPORT_SETTINGS_DESC" = "Pressione para importar as configurações (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Substituir os Botões 'Copiar Configurações' e 'Colar Configurações'";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Substitui os Botões 'Exportar Configurações' e 'Importar Configurações'";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
// Video controls overlay options
|
||||
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Opções de Sobreposição de Controles de Vídeo";
|
||||
|
||||
|
|
@ -26,8 +56,8 @@
|
|||
"DISABLE_AMBIENT_FULLSCREEN" = "Desativar Iluminação cinematográfica (Tela cheia)";
|
||||
"DISABLE_AMBIENT_FULLSCREEN_DESC" = "Desativa a iluminação ao redor do player de vídeo";
|
||||
|
||||
"FULLSCREEN_TO_THE_RIGHT" = "Fullscreen to the Right";
|
||||
"FULLSCREEN_TO_THE_RIGHT_DESC" = "Always enter fullscreen with home button on the right side.";
|
||||
"FULLSCREEN_TO_THE_RIGHT" = "Tela cheia para a direita";
|
||||
"FULLSCREEN_TO_THE_RIGHT_DESC" = "Sempre entre em tela cheia com o botão home no lado direito.";
|
||||
|
||||
"SEEK_ANYWHERE" = "Gesto de Busca em qualquer lugar";
|
||||
"SEEK_ANYWHERE_DESC" = "Segure e arraste o player de vídeo para buscar. Você deve desativar o YTLite - Segurar para velocidade (Hold for speed)";
|
||||
|
|
@ -47,6 +77,22 @@
|
|||
"DISABLE_ENGAGEMENT_OVERLAY" = "Desativar sobreposição de engajamento em tela cheia";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Desativa o gesto de deslizar para cima e a lista de vídeos sugeridos em tela cheia";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Ocultar Visualizações de comentários sob o player";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Oculta a Prévia de comentário no botão de comentários";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Ocultar mini visualização de reprodução automática";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Oculta a pequena caixa de vídeo sugerida perto do título em tela cheia";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Ocultar Mensagens do HUD";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Exemplo: Legendas/CC ativadas/desativadas, A repetição do vídeo está ativada,...";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "Ocultar Botão de Recolhimento";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "Oculta o botão de seta para recolher que era exibido no canto superior esquerdo do player de vídeo.";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Ocultar Toast de Velocidade";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Ocultar o popup de Velocidade 2X ao segurar o player";
|
||||
|
||||
|
||||
// App settings overlay options
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "Configurações do Aplicativo";
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,36 @@
|
|||
"VERSION" = "Versiune YTLitePlus: %@";
|
||||
"VERSION_CHECK" = "Căutați actualizări";
|
||||
|
||||
"COPY_SETTINGS" = "Copy Settings";
|
||||
"COPY_SETTINGS_DESC" = "Copy all current settings to the clipboard";
|
||||
"PASTE_SETTINGS" = "Paste Settings";
|
||||
"PASTE_SETTINGS_DESC" = "Paste settings from clipboard and apply";
|
||||
"EXPORT_SETTINGS" = "Export Settings";
|
||||
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
|
||||
"IMPORT_SETTINGS" = "Import Settings";
|
||||
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
// Video controls overlay options
|
||||
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Opțiuni Overlay Controale Video";
|
||||
|
||||
|
|
@ -47,6 +77,21 @@
|
|||
"DISABLE_ENGAGEMENT_OVERLAY" = "Disable fullscreen engagement overlay";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Disable the swipe-up gesture and suggested videos list in fullscreen";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Hide Comment previews under player";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Hide comment spoiler in comments button";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Hide autoplay mini preview";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Hide the small suggested video box near the title in fullscreen";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Ascundere Mesaje HUD";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Exemplu: Subtitrările sunt activate/dezactivate, Redarea în buclă este activată,...";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player.";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Hide Speed Toast";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player";
|
||||
|
||||
// App settings overlay options
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "Opțiuni Overlay Setări Aplicație";
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,36 @@
|
|||
"VERSION" = "YTLitePlus's version: %@";
|
||||
"VERSION_CHECK" = "Tap to check for update!";
|
||||
|
||||
"COPY_SETTINGS" = "Copy Settings";
|
||||
"COPY_SETTINGS_DESC" = "Copy all current settings to the clipboard";
|
||||
"PASTE_SETTINGS" = "Paste Settings";
|
||||
"PASTE_SETTINGS_DESC" = "Paste settings from clipboard and apply";
|
||||
"EXPORT_SETTINGS" = "Export Settings";
|
||||
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
|
||||
"IMPORT_SETTINGS" = "Import Settings";
|
||||
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
// Video controls overlay options
|
||||
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
|
||||
|
||||
|
|
@ -47,6 +77,21 @@
|
|||
"DISABLE_ENGAGEMENT_OVERLAY" = "Disable fullscreen engagement overlay";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Disable the swipe-up gesture and suggested videos list in fullscreen";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Hide Comment previews under player";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Hide comment spoiler in comments button";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Hide autoplay mini preview";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Hide the small suggested video box near the title in fullscreen";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Скрыть сообщения плеера";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Скрывает надписи YouTube, появляющиеся поверх видео.";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player.";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Hide Speed Toast";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player";
|
||||
|
||||
// App settings overlay options
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options";
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,36 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
|
|||
"VERSION" = "YTLitePlus's version: %@";
|
||||
"VERSION_CHECK" = "Tap to check for update!";
|
||||
|
||||
"COPY_SETTINGS" = "Copy Settings";
|
||||
"COPY_SETTINGS_DESC" = "Copy all current settings to the clipboard";
|
||||
"PASTE_SETTINGS" = "Paste Settings";
|
||||
"PASTE_SETTINGS_DESC" = "Paste settings from clipboard and apply";
|
||||
"EXPORT_SETTINGS" = "Export Settings";
|
||||
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
|
||||
"IMPORT_SETTINGS" = "Import Settings";
|
||||
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
// Video controls overlay options
|
||||
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
|
||||
|
||||
|
|
@ -62,6 +92,21 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
|
|||
"DISABLE_ENGAGEMENT_OVERLAY" = "Disable fullscreen engagement overlay";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Disable the swipe-up gesture and suggested videos list in fullscreen";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Hide Comment previews under player";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Hide comment spoiler in comments button";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Hide autoplay mini preview";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Hide the small suggested video box near the title in fullscreen";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Hide HUD messages";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Hides snackbars that display for certain actions (e.g., CC turned on/off)";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player.";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Hide Speed Toast";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player";
|
||||
|
||||
// App settings overlay options
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,47 @@
|
|||
// Settings
|
||||
"VERSION" = "YTLitePlus'ın sürümü: %@";
|
||||
"VERSION_CHECK" = "Güncelleme için dokunun!";
|
||||
"VERSION_CHECK" = "Güncelleme kontrolü için dokun!";
|
||||
|
||||
"COPY_SETTINGS" = "Ayarları Kopyala";
|
||||
"COPY_SETTINGS_DESC" = "Tüm mevcut ayarları panoya kopyala";
|
||||
"PASTE_SETTINGS" = "Ayarları Yapıştır";
|
||||
"PASTE_SETTINGS_DESC" = "Panodaki ayarları yapıştır ve uygula";
|
||||
"EXPORT_SETTINGS" = "Ayarları Dışa Aktar";
|
||||
"EXPORT_SETTINGS_DESC" = "Tüm mevcut ayarları bir .txt dosyasına dışa aktarır";
|
||||
"IMPORT_SETTINGS" = "Ayarları İçe Aktar";
|
||||
"IMPORT_SETTINGS_DESC" = "Ayarları içe aktarmak için basın (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "'Ayarları Kopyala' ve 'Ayarları Yapıştır' Düğmelerini Değiştir";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Düğmeleri 'Ayarları Dışa Aktar' ve 'Ayarları İçe Aktar' ile değiştirir";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
"COPY_SETTINGS" = "Ayarları Kopyala";
|
||||
"COPY_SETTINGS_DESC" = "Tüm mevcut ayarları panoya kopyala";
|
||||
"PASTE_SETTINGS" = "Ayarları Yapıştır";
|
||||
"PASTE_SETTINGS_DESC" = "Panodaki ayarları yapıştır ve uygula";
|
||||
"EXPORT_SETTINGS" = "Ayarları Dışa Aktar";
|
||||
"EXPORT_SETTINGS_DESC" = "Tüm mevcut ayarları bir .txt dosyasına dışa aktarır";
|
||||
"IMPORT_SETTINGS" = "Ayarları İçe Aktar";
|
||||
"IMPORT_SETTINGS_DESC" = "Ayarları içe aktarmak için basın (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "'Ayarları Kopyala' ve 'Ayarları Yapıştır' Düğmelerini Değiştir";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Düğmeleri 'Ayarları Dışa Aktar' ve 'Ayarları İçe Aktar' ile değiştirir";
|
||||
|
||||
// Video controls overlay options
|
||||
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Kontrol Seç.";
|
||||
|
|
@ -47,6 +88,21 @@
|
|||
"DISABLE_ENGAGEMENT_OVERLAY" = "Tam ekranda kaplamayı kapat";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Tam ekranda yukarı kaydırma hareketini ve önerilen videoları kapat";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Oynatıcının Altındaki Yorum Önizlemelerini Gizle";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Video oynatıcının altındaki yorum önizlemelerini gizler.";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Otomatik Oynatma Mini Önizlemesini Gizle";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Tam ekranda başlık yakınındaki küçük önerilen video kutusunu gizle";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "HUD mesajlarını gizle";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Belirli işlemler için görüntülenen bildirim çubuklarını gizler (ör. CC açıldı/kapandı)";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "Daraltma Düğmesini Gizle";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "Video oynatıcıda sol üstte görünen ok ile daraltma düğmesini gizler.";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Hız Bildirimini Gizle";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Oynatıcıya basılı tutarken 2X Hız bildirimini gizle";
|
||||
|
||||
// App settings overlay options
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "Uyg. Ayarları Kaplama Seç.";
|
||||
|
||||
|
|
@ -61,7 +117,7 @@
|
|||
"HIDE_LIVECHAT_SECTION" = "\"Canlı Sohbet\" Bölümünü Gizle";
|
||||
|
||||
// Theme
|
||||
"THEME_OPTIONS" = "Tema Seç.";
|
||||
"THEME_OPTIONS" = "Tema Seç";
|
||||
|
||||
"OLED_DARK_THEME" = "OLED koyu tema";
|
||||
"OLED_DARK_THEME_2" = "OLED koyu tema";
|
||||
|
|
@ -83,9 +139,9 @@
|
|||
"CUSTOM_LOWCONTRASTMODE" = "(Özel Renk) DüşükKontrastModu";
|
||||
|
||||
// Miscellaneous
|
||||
"MISCELLANEOUS" = "Çeşitli";
|
||||
"MISCELLANEOUS" = "Diğer";
|
||||
|
||||
"PLAYBACK_IN_FEEDS" = "Akışlarda Oynatma";
|
||||
"PLAYBACK_IN_FEEDS" = "Akışlarda Oto Oynatma";
|
||||
"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Her zaman açık";
|
||||
"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Yalnızca Wi-Fi";
|
||||
"PLAYBACK_IN_FEEDS_OFF" = "Kapalı";
|
||||
|
|
|
|||
|
|
@ -2,6 +2,36 @@
|
|||
"VERSION" = "Phiên bản của CercubePlus: %@";
|
||||
"VERSION_CHECK" = "Nhấn để kiểm tra cập nhật!";
|
||||
|
||||
"COPY_SETTINGS" = "Copy Settings";
|
||||
"COPY_SETTINGS_DESC" = "Copy all current settings to the clipboard";
|
||||
"PASTE_SETTINGS" = "Paste Settings";
|
||||
"PASTE_SETTINGS_DESC" = "Paste settings from clipboard and apply";
|
||||
"EXPORT_SETTINGS" = "Export Settings";
|
||||
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
|
||||
"IMPORT_SETTINGS" = "Import Settings";
|
||||
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
// Video player options
|
||||
"VIDEO_PLAYER_OPTIONS" = "Tùy chọn trình phát video";
|
||||
|
||||
|
|
@ -56,6 +86,21 @@
|
|||
"DISABLE_ENGAGEMENT_OVERLAY" = "Disable fullscreen engagement overlay";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Disable the swipe-up gesture and suggested videos list in fullscreen";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Hide Comment previews under player";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Hide comment spoiler in comments button";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Hide autoplay mini preview";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Hide the small suggested video box near the title in fullscreen";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Ẩn thông báo HUD";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Ví dụ: Đã bật/tắt phụ đề, Tính năng phát video lặp lại đang bật,...";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player.";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Hide Speed Toast";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player";
|
||||
|
||||
// Shorts controls overlay options
|
||||
"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Tùy chọn lớp phủ điều khiển quần short";
|
||||
|
||||
|
|
@ -220,30 +265,30 @@
|
|||
"CHANGE_APP_ICON" = "Change App Icon";
|
||||
|
||||
// Newly added strings
|
||||
"APP_RESTART_DESC" = "APP_RESTART_DESC";
|
||||
"CUSTOM_LOWCONTRASTMODE" = "CUSTOM_LOWCONTRASTMODE";
|
||||
"APP_VERSION_SPOOFER_LITE" = "APP_VERSION_SPOOFER_LITE";
|
||||
"PLAYBACK_IN_FEEDS_OFF" = "PLAYBACK_IN_FEEDS_OFF";
|
||||
"PLAYBACK_IN_FEEDS" = "PLAYBACK_IN_FEEDS";
|
||||
"ENABLE_SHARE_BUTTON_DESC" = "ENABLE_SHARE_BUTTON_DESC";
|
||||
"ENABLE_SAVE_TO_PLAYLIST_BUTTON" = "ENABLE_SAVE_TO_PLAYLIST_BUTTON";
|
||||
"LCM_SELECTOR" = "LCM_SELECTOR";
|
||||
"NEW_SETTINGS_UI_DESC" = "NEW_SETTINGS_UI_DESC";
|
||||
"VERSION_SPOOFER_TITLE" = "VERSION_SPOOFER_TITLE";
|
||||
"HIDE_SPONSORBLOCK_BUTTON" = "HIDE_SPONSORBLOCK_BUTTON";
|
||||
"ENABLE_SHARE_BUTTON" = "ENABLE_SHARE_BUTTON";
|
||||
"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC" = "ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC";
|
||||
"HIDE_SHADOW_OVERLAY_BUTTONS" = "HIDE_SHADOW_OVERLAY_BUTTONS";
|
||||
"APP_VERSION_SPOOFER_LITE_DESC" = "APP_VERSION_SPOOFER_LITE_DESC";
|
||||
"DEFAULT_LOWCONTRASTMODE" = "DEFAULT_LOWCONTRASTMODE";
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "APP_SETTINGS_OVERLAY_OPTIONS";
|
||||
"HIDE_HOME_TAB_DESC" = "HIDE_HOME_TAB_DESC";
|
||||
"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "PLAYBACK_IN_FEEDS_ALWAYS_ON";
|
||||
"FIX_CASTING" = "FIX_CASTING";
|
||||
"FIX_CASTING_DESC" = "FIX_CASTING_DESC";
|
||||
"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "PLAYBACK_IN_FEEDS_WIFI_ONLY";
|
||||
"NEW_MINIPLAYER_STYLE_DESC" = "NEW_MINIPLAYER_STYLE_DESC";
|
||||
"NEW_SETTINGS_UI" = "NEW_SETTINGS_UI";
|
||||
"HIDE_HOME_TAB" = "HIDE_HOME_TAB";
|
||||
"HIDE_SHADOW_OVERLAY_BUTTONS_DESC" = "HIDE_SHADOW_OVERLAY_BUTTONS_DESC";
|
||||
"ENABLE_YT_STARTUP_ANIMATION" = "ENABLE_YT_STARTUP_ANIMATION";
|
||||
"APP_RESTART_DESC": "Mô tả khi khởi động lại ứng dụng",
|
||||
"CUSTOM_LOWCONTRASTMODE": "Chế độ độ tương phản thấp tùy chỉnh",
|
||||
"APP_VERSION_SPOOFER_LITE": "Phiên bản giả lập ứng dụng nhẹ",
|
||||
"PLAYBACK_IN_FEEDS_OFF": "Tắt phát trong các trang danh sách video",
|
||||
"PLAYBACK_IN_FEEDS": "Phát trong các trang danh sách video",
|
||||
"ENABLE_SHARE_BUTTON_DESC": "Mô tả nút chia sẻ",
|
||||
"ENABLE_SAVE_TO_PLAYLIST_BUTTON": "Bật nút lưu vào danh sách phát",
|
||||
"LCM_SELECTOR": "Trình chọn chế độ độ tương phản thấp",
|
||||
"NEW_SETTINGS_UI_DESC": "Mô tả giao diện cài đặt mới",
|
||||
"VERSION_SPOOFER_TITLE": "Tiêu đề giả lập phiên bản",
|
||||
"HIDE_SPONSORBLOCK_BUTTON": "Ẩn nút SponsorBlock",
|
||||
"ENABLE_SHARE_BUTTON": "Bật nút chia sẻ",
|
||||
"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC": "Mô tả nút lưu vào danh sách phát",
|
||||
"HIDE_SHADOW_OVERLAY_BUTTONS": "Ẩn các nút lớp phủ bóng",
|
||||
"APP_VERSION_SPOOFER_LITE_DESC": "Mô tả phiên bản giả lập ứng dụng nhẹ",
|
||||
"DEFAULT_LOWCONTRASTMODE": "Chế độ độ tương phản thấp mặc định",
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS": "Tùy chọn lớp phủ cài đặt ứng dụng",
|
||||
"HIDE_HOME_TAB_DESC": "Mô tả ẩn tab Trang chủ",
|
||||
"PLAYBACK_IN_FEEDS_ALWAYS_ON": "Luôn bật phát trong các trang danh sách video",
|
||||
"FIX_CASTING": "Sửa lỗi truyền phát",
|
||||
"FIX_CASTING_DESC": "Mô tả sửa lỗi truyền phát",
|
||||
"PLAYBACK_IN_FEEDS_WIFI_ONLY": "Phát trong các trang danh sách video chỉ qua WiFi",
|
||||
"NEW_MINIPLAYER_STYLE_DESC": "Mô tả kiểu trình phát nhỏ mới",
|
||||
"NEW_SETTINGS_UI": "Giao diện cài đặt mới",
|
||||
"HIDE_HOME_TAB": "Ẩn tab Trang chủ",
|
||||
"HIDE_SHADOW_OVERLAY_BUTTONS_DESC": "Mô tả ẩn các nút lớp phủ bóng",
|
||||
"ENABLE_YT_STARTUP_ANIMATION": "Bật hoạt ảnh khởi động YouTube"
|
||||
|
|
|
|||
|
|
@ -3,6 +3,36 @@
|
|||
"VERSION" = "YTLitePlus 版本:%@";
|
||||
"VERSION_CHECK" = "檢查更新";
|
||||
|
||||
"COPY_SETTINGS" = "Copy Settings";
|
||||
"COPY_SETTINGS_DESC" = "Copy all current settings to the clipboard";
|
||||
"PASTE_SETTINGS" = "Paste Settings";
|
||||
"PASTE_SETTINGS_DESC" = "Paste settings from clipboard and apply";
|
||||
"EXPORT_SETTINGS" = "Export Settings";
|
||||
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
|
||||
"IMPORT_SETTINGS" = "Import Settings";
|
||||
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
|
||||
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
|
||||
|
||||
"VIDEO_PLAYER" = "Video Player (Beta)";
|
||||
"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player";
|
||||
|
||||
// Player Gestures
|
||||
"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures";
|
||||
"VOLUME" = "Volume";
|
||||
"BRIGHTNESS" = "Brightness";
|
||||
"SEEK" = "Seek";
|
||||
"DISABLED" = "Disabled";
|
||||
"DEADZONE" = "Deadzone";
|
||||
"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized";
|
||||
"SENSITIVITY" = "Sensitivity";
|
||||
"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures";
|
||||
"PLAYER_GESTURES_TITLE" = "Player Gestures";
|
||||
"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player";
|
||||
"TOP_SECTION" = "Top Section";
|
||||
"MIDDLE_SECTION" = "Middle Section";
|
||||
"BOTTOM_SECTION" = "Bottom Section";
|
||||
|
||||
// Video controls overlay options
|
||||
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "影片區覆蓋按鈕設定";
|
||||
|
||||
|
|
@ -33,6 +63,36 @@
|
|||
"SEEK_ANYWHERE" = "Seek Anywhere Gesture";
|
||||
"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed";
|
||||
|
||||
"ENABLE_TAP_TO_SEEK" = "Enable Tap To Seek";
|
||||
"ENABLE_TAP_TO_SEEK_DESC" = "Jump to anywhere in a video by single-tapping the seek bar";
|
||||
|
||||
"DISABLE_PULL_TO_FULLSCREEN_GESTURE" = "Disable pull-to-fullscreen gesture";
|
||||
"DISABLE_PULL_TO_FULLSCREEN_GESTURE_DESC" = "Disable the drag gesture to enter vertical fullscreen. Only applies to landscape videos.";
|
||||
|
||||
"ALWAYS_USE_REMAINING_TIME" = "Always use remaining time";
|
||||
"ALWAYS_USE_REMAINING_TIME_DESC" = "Change the default to show time remaining in the player bar.";
|
||||
|
||||
"DISABLE_TOGGLE_TIME_REMAINING" = "Disable toggle time remaining";
|
||||
"DISABLE_TOGGLE_TIME_REMAINING_DESC" = "Disables changing time elapsed to time remaining. Use with other setting to always show remaining time.";
|
||||
|
||||
"DISABLE_ENGAGEMENT_OVERLAY" = "Disable fullscreen engagement overlay";
|
||||
"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Disable the swipe-up gesture and suggested videos list in fullscreen";
|
||||
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Hide Comment previews under player";
|
||||
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Hide comment spoiler in comments button";
|
||||
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW" = "Hide autoplay mini preview";
|
||||
"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Hide the small suggested video box near the title in fullscreen";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "隱藏 HUD 訊息";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "例如:CC字幕、開啟/關閉、影片循環開啟等...";
|
||||
|
||||
"HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button";
|
||||
"HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player.";
|
||||
|
||||
"HIDE_SPEED_TOAST" = "Hide Speed Toast";
|
||||
"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player";
|
||||
|
||||
// App settings overlay options
|
||||
"APP_SETTINGS_OVERLAY_OPTIONS" = "應用程式設定隱藏項目";
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue