mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-13 13:50:30 +05:30
Merge branch 'libre-tube:master' into master
This commit is contained in:
commit
401a32c141
13
.github/checkrun.py
vendored
Normal file
13
.github/checkrun.py
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
from json import load
|
||||
from os import system
|
||||
|
||||
f = open('commit.json')
|
||||
data = load(f)
|
||||
f.close()
|
||||
|
||||
message = data['commit']['message']
|
||||
|
||||
if "\n\n" in message:
|
||||
if message.split("\n\n",1)[-1].split()[0] == "[SILENT]":
|
||||
system('killall -9 python')
|
||||
|
12
.github/compiler.sh
vendored
Normal file
12
.github/compiler.sh
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd ~
|
||||
sudo apt-get update -y
|
||||
sudo apt-get upgrade -y
|
||||
sudo apt-get install -y make git zlib1g-dev libssl-dev gperf cmake clang-10 libc++-dev libc++abi-dev
|
||||
git clone --recursive https://github.com/tdlib/telegram-bot-api.git
|
||||
rm -rf telegram-bot-api/build
|
||||
mkdir -p telegram-bot-api/build
|
||||
cd telegram-bot-api/build
|
||||
CXXFLAGS="-stdlib=libc++" CC=/usr/bin/clang-10 CXX=/usr/bin/clang++-10 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=.. ..
|
||||
cmake --build . --target install
|
36
.github/tg.py
vendored
36
.github/tg.py
vendored
@ -1,21 +1,33 @@
|
||||
import telegram
|
||||
from tgconfig import TG_TOKEN
|
||||
from tgconfig import *
|
||||
from json import load
|
||||
import multiprocessing
|
||||
from os import system
|
||||
from time import sleep as wait
|
||||
|
||||
f = open('commit.json')
|
||||
data = load(f)
|
||||
f.close()
|
||||
def deploy():
|
||||
system(f'~/bot-api --local --api-id={TG_API_ID} --api-hash={TG_API_HASH}')
|
||||
|
||||
TG_CHAT_ID = "-1001537505605"
|
||||
bot = telegram.Bot(TG_TOKEN)
|
||||
def bot():
|
||||
wait(10)
|
||||
f = open('commit.json')
|
||||
data = load(f)
|
||||
f.close()
|
||||
|
||||
bot.send_photo(TG_CHAT_ID, open('alpha.png', 'rb'), f'''*Libretube {data['sha'][0:7]} // Alpha*
|
||||
bot = telegram.Bot(TG_TOKEN, base_url="http://0.0.0.0:8081/bot")
|
||||
bot.send_photo(TG_POST_ID, open('alpha.png', 'rb'), f'''*Libretube {data['sha'][0:7]} // Alpha*
|
||||
|
||||
{data['commit']['message']}
|
||||
[{data['commit']['message']}]({data['html_url']})
|
||||
|
||||
Signed-off-by: {data['commit']['author']['name']}
|
||||
''', parse_mode=telegram.ParseMode.MARKDOWN)
|
||||
bot.send_document(TG_CHAT_ID, open('app-arm64-v8a-debug.apk', 'rb'))
|
||||
bot.send_document(TG_CHAT_ID, open('app-armeabi-v7a-debug.apk', 'rb'))
|
||||
bot.send_document(TG_CHAT_ID, open('app-x86_64-debug.apk', 'rb'))
|
||||
bot.send_document(TG_CHAT_ID, open('app-x86-debug.apk', 'rb'))
|
||||
bot.send_media_group(TG_POST_ID, [telegram.InputMediaDocument(open('app-x86-debug.apk', 'rb')), telegram.InputMediaDocument(open('app-x86_64-debug.apk', 'rb')), telegram.InputMediaDocument(open('app-armeabi-v7a-debug.apk', 'rb')), telegram.InputMediaDocument(open('app-arm64-v8a-debug.apk', 'rb'))])
|
||||
system('killall -9 python')
|
||||
|
||||
if __name__ == '__main__':
|
||||
multideploy = multiprocessing.Process(target=deploy)
|
||||
multibot = multiprocessing.Process(target=bot)
|
||||
multideploy.start()
|
||||
multibot.start()
|
||||
multideploy.join()
|
||||
multibot.join()
|
||||
|
32
.github/workflows/api-compiler.yml
vendored
Normal file
32
.github/workflows/api-compiler.yml
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
name: Bot API Compiler
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
debug-builds:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare for Compilation
|
||||
run: |
|
||||
git config --global user.name "XelXen"
|
||||
git config --global user.email "78258352+XelXen@users.noreply.github.com"
|
||||
git config --global credential.helper store
|
||||
echo "https://XelXen:${{ secrets.GH_TOKEN }}@github.com" > ~/.git-credentials
|
||||
|
||||
- name: Run Script
|
||||
run: |
|
||||
chmod 755 .github/compiler.sh
|
||||
.github/compiler.sh
|
||||
|
||||
- name: Binary Archive
|
||||
run: |
|
||||
git clone https://github.com/LibreTubeAlpha/Telegram-BotAPI bot-api
|
||||
rm -rf bot-api/*
|
||||
mv ~/telegram-bot-api/bin/telegram-bot-api bot-api/exec
|
||||
cd bot-api
|
||||
git add -f *
|
||||
git commit -m "WORKFLOW: BUILD BINARIES"
|
||||
git push -u
|
16
.github/workflows/tg-bot.yml
vendored
16
.github/workflows/tg-bot.yml
vendored
@ -1,4 +1,4 @@
|
||||
name: Telegram Builder
|
||||
name: Telegram Bot
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
@ -20,6 +20,13 @@ jobs:
|
||||
python-version: '3.x' # Version range or exact version of a Python version to use, using SemVer's version range syntax
|
||||
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
|
||||
|
||||
- name: Check for Execution Orders
|
||||
run: |
|
||||
cd .github
|
||||
curl https://api.github.com/repos/${{ github.repository }}/commits/${{ github.sha }} > commit.json
|
||||
python checkrun.py
|
||||
cd ..
|
||||
|
||||
- name: set up JDK 11
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
@ -35,12 +42,17 @@ jobs:
|
||||
./gradlew assembleDebug
|
||||
|
||||
- name: Telegram Bot
|
||||
continue-on-error: true
|
||||
run: |
|
||||
mv ./app/build/outputs/apk/debug/*.apk .github/
|
||||
cd .github
|
||||
curl https://libre-tube.github.io/assets/LibreAlpha.png --output alpha.png
|
||||
curl https://raw.githubusercontent.com/LibreTubeAlpha/Telegram-BotAPI/main/exec --output ~/bot-api
|
||||
chmod 755 ~/bot-api
|
||||
echo "TG_TOKEN = '${{ secrets.TG_TOKEN }}'" > tgconfig.py
|
||||
curl https://api.github.com/repos/${{ github.repository }}/commits/${{ github.sha }} > commit.json
|
||||
echo "TG_API_ID = '${{ secrets.TG_API_ID }}'" >> tgconfig.py
|
||||
echo "TG_POST_ID = '${{ secrets.TG_POST_ID }}'" >> tgconfig.py
|
||||
echo "TG_API_HASH = '${{ secrets.TG_API_HASH }}'" >> tgconfig.py
|
||||
python -m pip install --upgrade pip
|
||||
pip install python-telegram-bot
|
||||
python tg.py
|
||||
|
@ -40,7 +40,11 @@
|
||||
|
||||
|
||||
## Contributing
|
||||
Whether you have ideas, translations, design changes, code cleaning, or real heavy code changes, help is always welcome. The more is done the better it gets! If creating a pr, please make sure to format the code with ktlint before.
|
||||
Whether you have ideas, translations, design changes, code cleaning, or real heavy code changes, help is always welcome.The more is done the better it gets!
|
||||
|
||||
If creating a pull request, please make sure to format your code (preferred ktlint) before.
|
||||
|
||||
If opening an issue without following the issue template, we will ignore the issue and force close it.
|
||||
|
||||
WARNING: THIS IS A BETA VERSION, THEREFORE YOU MAY ENCOUNTER BUGS. IF YOU DO, OPEN AN ISSUE VIA OUR GITHUB REPOSITORY.
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:installLocation="auto">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
@ -15,7 +16,7 @@
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.MY"
|
||||
android:theme="@style/Theme.Purple"
|
||||
android:name=".MyApp"
|
||||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
android:largeHeap="true"
|
||||
@ -34,7 +35,8 @@
|
||||
android:supportsPictureInPicture="true"
|
||||
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
|
||||
android:hardwareAccelerated="true"
|
||||
android:screenOrientation="userPortrait">
|
||||
android:screenOrientation="userPortrait"
|
||||
android:launchMode="singleTop">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
|
@ -77,7 +77,8 @@ class BackgroundMode {
|
||||
DescriptionAdapter(
|
||||
response?.title!!,
|
||||
response?.uploader!!,
|
||||
response?.thumbnailUrl!!
|
||||
response?.thumbnailUrl!!,
|
||||
c
|
||||
)
|
||||
)
|
||||
.build()
|
||||
|
@ -5,3 +5,4 @@ const val WEBSITE_URL = "https://libre-tube.github.io/"
|
||||
const val AUTHORS_URL = "https://github.com/libre-tube/LibreTube/graphs/contributors"
|
||||
const val DONATE_URL = "https://libre-tube.github.io/#donate"
|
||||
const val CONTRIBUTING_URL = "https://github.com/libre-tube/LibreTube#donate"
|
||||
const val PIPED_GITHUB_URL = "https://github.com/TeamPiped/Piped"
|
||||
|
@ -113,15 +113,30 @@ class DownloadService : Service() {
|
||||
"mux" -> {
|
||||
audioDir = File(tempDir, "$videoId-audio")
|
||||
videoDir = File(tempDir, "$videoId-video")
|
||||
downloadId = downloadManagerRequest("Video", "Downloading", videoUrl, videoDir)
|
||||
downloadId = downloadManagerRequest(
|
||||
getString(R.string.video),
|
||||
getString(R.string.downloading),
|
||||
videoUrl,
|
||||
videoDir
|
||||
)
|
||||
}
|
||||
"video" -> {
|
||||
videoDir = File(libretubeDir, "$videoId-video")
|
||||
downloadId = downloadManagerRequest("Video", "Downloading", videoUrl, videoDir)
|
||||
downloadId = downloadManagerRequest(
|
||||
getString(R.string.video),
|
||||
getString(R.string.downloading),
|
||||
videoUrl,
|
||||
videoDir
|
||||
)
|
||||
}
|
||||
"audio" -> {
|
||||
audioDir = File(libretubeDir, "$videoId-audio")
|
||||
downloadId = downloadManagerRequest("Audio", "Downloading", audioUrl, audioDir)
|
||||
downloadId = downloadManagerRequest(
|
||||
getString(R.string.audio),
|
||||
getString(R.string.downloading),
|
||||
audioUrl,
|
||||
audioDir
|
||||
)
|
||||
}
|
||||
}
|
||||
} catch (e: IllegalArgumentException) {
|
||||
@ -136,7 +151,12 @@ class DownloadService : Service() {
|
||||
// Checking if the received broadcast is for our enqueued download by matching download id
|
||||
if (downloadId == id) {
|
||||
if (downloadType == "mux") {
|
||||
downloadManagerRequest("Audio", "Downloading", audioUrl, audioDir)
|
||||
downloadManagerRequest(
|
||||
getString(R.string.audio),
|
||||
getString(R.string.downloading),
|
||||
audioUrl,
|
||||
audioDir
|
||||
)
|
||||
} else {
|
||||
downloadSucceededNotification()
|
||||
onDestroy()
|
||||
@ -178,7 +198,7 @@ class DownloadService : Service() {
|
||||
NotificationCompat.Builder(this@DownloadService, "download_service")
|
||||
.setSmallIcon(R.drawable.ic_download)
|
||||
.setContentTitle("LibreTube")
|
||||
.setContentText("Downloading")
|
||||
.setContentText(getString(R.string.downloading))
|
||||
.setPriority(NotificationCompat.PRIORITY_LOW)
|
||||
.setOngoing(true)
|
||||
.setOnlyAlertOnce(true)
|
||||
@ -192,7 +212,7 @@ class DownloadService : Service() {
|
||||
val builder = NotificationCompat.Builder(this@DownloadService, "download_service")
|
||||
.setSmallIcon(R.drawable.ic_download)
|
||||
.setContentTitle(resources.getString(R.string.downloadfailed))
|
||||
.setContentText("failure")
|
||||
.setContentText(getString(R.string.fail))
|
||||
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
||||
with(NotificationManagerCompat.from(this@DownloadService)) {
|
||||
// notificationId is a unique int for each notification that you must define
|
||||
@ -205,7 +225,7 @@ class DownloadService : Service() {
|
||||
val builder = NotificationCompat.Builder(this@DownloadService, "download_service")
|
||||
.setSmallIcon(R.drawable.ic_download)
|
||||
.setContentTitle(resources.getString(R.string.success))
|
||||
.setContentText("success")
|
||||
.setContentText(getString(R.string.fail))
|
||||
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
||||
with(NotificationManagerCompat.from(this@DownloadService)) {
|
||||
// notificationId is a unique int for each notification that you must define
|
||||
|
@ -6,6 +6,7 @@ import android.content.Intent
|
||||
import android.content.pm.ActivityInfo
|
||||
import android.content.res.Configuration
|
||||
import android.net.ConnectivityManager
|
||||
import android.net.NetworkCapabilities
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
@ -44,8 +45,9 @@ import com.google.android.material.color.DynamicColors
|
||||
|
||||
class MainActivity : AppCompatActivity() {
|
||||
val TAG = "MainActivity"
|
||||
|
||||
lateinit var bottomNavigationView: BottomNavigationView
|
||||
lateinit var toolbar: Toolbar
|
||||
private lateinit var toolbar: Toolbar
|
||||
lateinit var navController: NavController
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
@ -56,9 +58,9 @@ class MainActivity : AppCompatActivity() {
|
||||
RetrofitInstance.url =
|
||||
sharedPreferences.getString("selectInstance", "https://pipedapi.kavin.rocks/")!!
|
||||
SponsorBlockSettings.sponsorBlockEnabled =
|
||||
sharedPreferences.getBoolean("sb_enabled_key", false)
|
||||
sharedPreferences.getBoolean("sb_enabled_key", true)
|
||||
SponsorBlockSettings.sponsorNotificationsEnabled =
|
||||
sharedPreferences.getBoolean("sb_notifications_key", false)
|
||||
sharedPreferences.getBoolean("sb_notifications_key", true)
|
||||
SponsorBlockSettings.introEnabled =
|
||||
sharedPreferences.getBoolean("intro_category_key", false)
|
||||
SponsorBlockSettings.selfPromoEnabled =
|
||||
@ -66,7 +68,7 @@ class MainActivity : AppCompatActivity() {
|
||||
SponsorBlockSettings.interactionEnabled =
|
||||
sharedPreferences.getBoolean("interaction_category_key", false)
|
||||
SponsorBlockSettings.sponsorsEnabled =
|
||||
sharedPreferences.getBoolean("sponsors_category_key", false)
|
||||
sharedPreferences.getBoolean("sponsors_category_key", true)
|
||||
SponsorBlockSettings.outroEnabled =
|
||||
sharedPreferences.getBoolean("outro_category_key", false)
|
||||
SponsorBlockSettings.fillerEnabled =
|
||||
@ -79,12 +81,8 @@ class MainActivity : AppCompatActivity() {
|
||||
ThemeHelper().updateTheme(this)
|
||||
LocaleHelper().updateLanguage(this)
|
||||
|
||||
val connectivityManager =
|
||||
this.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||
val networkInfo = connectivityManager.activeNetworkInfo
|
||||
val isConnected = networkInfo != null && networkInfo.isConnected
|
||||
|
||||
if (!isConnected) {
|
||||
// show noInternet Activity if no internet available on app startup
|
||||
if (!isNetworkAvailable(this)) {
|
||||
setContentView(R.layout.activity_nointernet)
|
||||
findViewById<Button>(R.id.retry_button).setOnClickListener {
|
||||
recreate()
|
||||
@ -101,7 +99,13 @@ class MainActivity : AppCompatActivity() {
|
||||
navController = findNavController(R.id.fragment)
|
||||
bottomNavigationView.setupWithNavController(navController)
|
||||
|
||||
when (sharedPreferences.getString("default_tab", "home")!!) {
|
||||
// hide the trending page if enabled
|
||||
val hideTrendingPage = sharedPreferences.getBoolean("hide_trending_page", false)
|
||||
if (hideTrendingPage) bottomNavigationView.menu.findItem(R.id.home2).isVisible = false
|
||||
|
||||
// navigate to the default start tab
|
||||
val defaultTab = sharedPreferences.getString("default_tab", "home")
|
||||
when (defaultTab) {
|
||||
"home" -> navController.navigate(R.id.home2)
|
||||
"subscriptions" -> navController.navigate(R.id.subscriptions)
|
||||
"library" -> navController.navigate(R.id.library)
|
||||
@ -112,17 +116,14 @@ class MainActivity : AppCompatActivity() {
|
||||
R.id.home2 -> {
|
||||
navController.backQueue.clear()
|
||||
navController.navigate(R.id.home2)
|
||||
true
|
||||
}
|
||||
R.id.subscriptions -> {
|
||||
// navController.backQueue.clear()
|
||||
navController.navigate(R.id.subscriptions)
|
||||
true
|
||||
}
|
||||
R.id.library -> {
|
||||
// navController.backQueue.clear()
|
||||
navController.navigate(R.id.library)
|
||||
true
|
||||
}
|
||||
}
|
||||
false
|
||||
@ -142,14 +143,12 @@ class MainActivity : AppCompatActivity() {
|
||||
// settings activity stuff
|
||||
val intent = Intent(this, SettingsActivity::class.java)
|
||||
startActivity(intent)
|
||||
true
|
||||
}
|
||||
|
||||
toolbar.setOnMenuItemClickListener {
|
||||
when (it.itemId) {
|
||||
R.id.action_search -> {
|
||||
navController.navigate(R.id.searchFragment)
|
||||
true
|
||||
}
|
||||
}
|
||||
false
|
||||
@ -157,6 +156,28 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun isNetworkAvailable(context: Context): Boolean {
|
||||
val connectivityManager =
|
||||
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
val nw = connectivityManager.activeNetwork ?: return false
|
||||
val actNw = connectivityManager.getNetworkCapabilities(nw) ?: return false
|
||||
return when {
|
||||
// WiFi
|
||||
actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
|
||||
// Mobile
|
||||
actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
|
||||
// Ethernet
|
||||
actNw.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
|
||||
// Bluetooth
|
||||
actNw.hasTransport(NetworkCapabilities.TRANSPORT_BLUETOOTH) -> true
|
||||
else -> false
|
||||
}
|
||||
} else {
|
||||
return connectivityManager.activeNetworkInfo?.isConnected ?: false
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
val intentData: Uri? = intent?.data
|
||||
@ -184,7 +205,7 @@ class MainActivity : AppCompatActivity() {
|
||||
Log.i(TAG, "URI Type: Playlist")
|
||||
var playlist = data.query!!
|
||||
if (playlist.contains("&")) {
|
||||
var playlists = playlist.split("&")
|
||||
val playlists = playlist.split("&")
|
||||
for (v in playlists) {
|
||||
if (v.contains("list=")) {
|
||||
playlist = v
|
||||
@ -216,7 +237,7 @@ class MainActivity : AppCompatActivity() {
|
||||
Log.d("dafaq", data.query!!)
|
||||
var watch = data.query!!
|
||||
if (watch.contains("&")) {
|
||||
var watches = watch.split("&")
|
||||
val watches = watch.split("&")
|
||||
for (v in watches) {
|
||||
if (v.contains("v=")) {
|
||||
watch = v
|
||||
@ -224,7 +245,7 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
}
|
||||
var bundle = Bundle()
|
||||
val bundle = Bundle()
|
||||
bundle.putString("videoId", watch.replace("v=", ""))
|
||||
// for time stamped links
|
||||
if (data.query != null && data.query?.contains("t=")!!) {
|
||||
@ -233,8 +254,8 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
loadWatch(bundle)
|
||||
} else {
|
||||
var watch = data.path!!.replace("/", "")
|
||||
var bundle = Bundle()
|
||||
val watch = data.path!!.replace("/", "")
|
||||
val bundle = Bundle()
|
||||
bundle.putString("videoId", watch)
|
||||
// for time stamped links
|
||||
if (data.query != null && data.query?.contains("t=")!!) {
|
||||
@ -246,7 +267,7 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
|
||||
private fun loadWatch(bundle: Bundle) {
|
||||
var frag = PlayerFragment()
|
||||
val frag = PlayerFragment()
|
||||
frag.arguments = bundle
|
||||
supportFragmentManager.beginTransaction()
|
||||
.remove(PlayerFragment())
|
||||
@ -278,11 +299,6 @@ class MainActivity : AppCompatActivity() {
|
||||
isFullScreen = false
|
||||
} else {
|
||||
navController.popBackStack()
|
||||
if (navController.currentBackStackEntry == null &&
|
||||
(parent as View).id != R.id.settings
|
||||
) {
|
||||
super.onBackPressed()
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
// try catch to prevent nointernet activity to crash
|
||||
|
@ -21,7 +21,8 @@ import com.github.libretube.obj.StreamItem
|
||||
import com.github.libretube.util.RetrofitInstance
|
||||
import com.squareup.picasso.Picasso
|
||||
import java.io.IOException
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import retrofit2.HttpException
|
||||
|
||||
@ -92,7 +93,7 @@ class PlaylistAdapter(
|
||||
|
||||
private fun removeFromPlaylist(token: String, position: Int) {
|
||||
fun run() {
|
||||
GlobalScope.launch {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
val response = try {
|
||||
RetrofitInstance.api.removeFromPlaylist(
|
||||
token,
|
||||
|
@ -13,6 +13,7 @@ import androidx.fragment.app.FragmentManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.github.libretube.MainActivity
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.dialogs.PlaylistOptionsDialog
|
||||
import com.github.libretube.dialogs.VideoOptionsDialog
|
||||
import com.github.libretube.fragments.PlayerFragment
|
||||
import com.github.libretube.obj.SearchItem
|
||||
@ -153,6 +154,12 @@ class SearchViewHolder(
|
||||
val bundle = bundleOf("playlist_id" to item.url)
|
||||
activity.navController.navigate(R.id.playlistFragment, bundle)
|
||||
}
|
||||
v.setOnLongClickListener {
|
||||
val playlistId = item.url!!.replace("/playlist?list=", "")
|
||||
PlaylistOptionsDialog(playlistId, v.context)
|
||||
.show(childFragmentManager, "PlaylistOptionsDialog")
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
fun bind(searchItem: SearchItem) {
|
||||
|
@ -2,7 +2,6 @@ package com.github.libretube.dialogs
|
||||
|
||||
import android.app.Dialog
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.util.TypedValue
|
||||
import android.view.View
|
||||
import android.widget.Button
|
||||
@ -27,6 +26,9 @@ class CustomInstanceDialog : DialogFragment() {
|
||||
|
||||
val instanceNameEditText = view.findViewById<TextInputEditText>(R.id.instanceName)
|
||||
val instanceApiUrlEditText = view.findViewById<TextInputEditText>(R.id.instanceApiUrl)
|
||||
val instanceFrontendUrlEditText = view
|
||||
.findViewById<TextInputEditText>(R.id.instanceFrontendUrl)
|
||||
|
||||
val addInstanceButton = view.findViewById<Button>(R.id.addInstance)
|
||||
val cancelButton = view.findViewById<Button>(R.id.cancel)
|
||||
cancelButton.setOnClickListener {
|
||||
@ -36,12 +38,15 @@ class CustomInstanceDialog : DialogFragment() {
|
||||
addInstanceButton.setOnClickListener {
|
||||
val instanceName = instanceNameEditText.text.toString()
|
||||
val instanceApiUrl = instanceApiUrlEditText.text.toString()
|
||||
val instanceFrontendUrl = instanceFrontendUrlEditText.text.toString()
|
||||
|
||||
if (instanceName != "" && instanceApiUrl != "") {
|
||||
if (instanceName != "" && instanceApiUrl != "" && instanceFrontendUrl != "") {
|
||||
try {
|
||||
// check whether the URL is valid, otherwise catch
|
||||
val u = URL(instanceApiUrl).toURI()
|
||||
saveCustomInstance(instanceName, instanceApiUrl)
|
||||
URL(instanceApiUrl).toURI()
|
||||
URL(instanceFrontendUrl).toURI()
|
||||
|
||||
saveCustomInstance(instanceName, instanceApiUrl, instanceFrontendUrl)
|
||||
activity?.recreate()
|
||||
dismiss()
|
||||
} catch (e: Exception) {
|
||||
@ -72,7 +77,11 @@ class CustomInstanceDialog : DialogFragment() {
|
||||
} ?: throw IllegalStateException("Activity cannot be null")
|
||||
}
|
||||
|
||||
private fun saveCustomInstance(instanceName: String, instanceApiUrl: String) {
|
||||
private fun saveCustomInstance(
|
||||
instanceName: String,
|
||||
instanceApiUrl: String,
|
||||
instanceFrontendApiUrl: String
|
||||
) {
|
||||
val sharedPreferences = PreferenceManager
|
||||
.getDefaultSharedPreferences(requireContext())
|
||||
|
||||
@ -84,7 +93,7 @@ class CustomInstanceDialog : DialogFragment() {
|
||||
emptyList()
|
||||
}
|
||||
|
||||
// get the urls of the other custom instances
|
||||
// get the api urls of the other custom instances
|
||||
var customInstancesUrls = try {
|
||||
sharedPreferences
|
||||
.getStringSet("custom_instances_url", HashSet())!!.toList()
|
||||
@ -92,15 +101,24 @@ class CustomInstanceDialog : DialogFragment() {
|
||||
emptyList()
|
||||
}
|
||||
|
||||
// get the frontend urls of the other custom instances
|
||||
var customInstancesFrontendUrls = try {
|
||||
sharedPreferences
|
||||
.getStringSet("custom_instances_url", HashSet())!!.toList()
|
||||
} catch (e: Exception) {
|
||||
emptyList()
|
||||
}
|
||||
|
||||
// append new instance to the list
|
||||
customInstancesNames += instanceName
|
||||
customInstancesUrls += instanceApiUrl
|
||||
Log.e(TAG, customInstancesNames.toString())
|
||||
customInstancesFrontendUrls += instanceFrontendApiUrl
|
||||
|
||||
// save them to the shared preferences
|
||||
sharedPreferences.edit()
|
||||
.putStringSet("custom_instances_name", HashSet(customInstancesNames))
|
||||
.putStringSet("custom_instances_url", HashSet(customInstancesUrls))
|
||||
.putStringSet("custom_instances_frontend_url", HashSet(customInstancesFrontendUrls))
|
||||
.apply()
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,6 @@ import android.os.Environment
|
||||
import android.util.Log
|
||||
import android.util.TypedValue
|
||||
import android.view.View
|
||||
import android.widget.AdapterView
|
||||
import android.widget.ArrayAdapter
|
||||
import android.widget.Button
|
||||
import android.widget.Spinner
|
||||
@ -26,18 +25,23 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
||||
class DownloadDialog : DialogFragment() {
|
||||
private val TAG = "DownloadDialog"
|
||||
var streams: Streams = Streams()
|
||||
var selectedVideo = 0
|
||||
var selectedAudio = 0
|
||||
var duration = 0
|
||||
|
||||
private lateinit var streams: Streams
|
||||
private lateinit var videoId: String
|
||||
private var duration = 0
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
return activity?.let {
|
||||
streams = arguments?.getParcelable("streams")!!
|
||||
videoId = arguments?.getString("video_id")!!
|
||||
|
||||
val mainActivity = activity as MainActivity
|
||||
Log.e(TAG, "download button clicked!")
|
||||
val builder = MaterialAlertDialogBuilder(it)
|
||||
// Get the layout inflater
|
||||
val inflater = requireActivity().layoutInflater
|
||||
var view: View = inflater.inflate(R.layout.dialog_download, null)
|
||||
|
||||
// request storage permissions if not granted yet
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
Log.d("myz", "" + Build.VERSION.SDK_INT)
|
||||
if (!Environment.isExternalStorageManager()) {
|
||||
@ -70,50 +74,45 @@ class DownloadDialog : DialogFragment() {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
var vidName = arrayListOf<String>()
|
||||
vidName.add("No video")
|
||||
var vidUrl = arrayListOf<String>()
|
||||
|
||||
// add empty selection
|
||||
vidName.add(getString(R.string.no_video))
|
||||
vidUrl.add("")
|
||||
|
||||
// add all available video streams
|
||||
for (vid in streams.videoStreams!!) {
|
||||
val name = vid.quality + " " + vid.format
|
||||
vidName.add(name)
|
||||
vidUrl.add(vid.url!!)
|
||||
}
|
||||
|
||||
var audioName = arrayListOf<String>()
|
||||
audioName.add("No audio")
|
||||
var audioUrl = arrayListOf<String>()
|
||||
|
||||
// add empty selection
|
||||
audioName.add(getString(R.string.no_audio))
|
||||
audioUrl.add("")
|
||||
|
||||
// add all available audio streams
|
||||
for (audio in streams.audioStreams!!) {
|
||||
val name = audio.quality + " " + audio.format
|
||||
audioName.add(name)
|
||||
audioUrl.add(audio.url!!)
|
||||
}
|
||||
|
||||
val builder = MaterialAlertDialogBuilder(it)
|
||||
// Get the layout inflater
|
||||
val inflater = requireActivity().layoutInflater
|
||||
var view: View = inflater.inflate(R.layout.dialog_download, null)
|
||||
val videoSpinner = view.findViewById<Spinner>(R.id.video_spinner)
|
||||
val videoArrayAdapter = ArrayAdapter<String>(
|
||||
val videoArrayAdapter = ArrayAdapter(
|
||||
requireContext(),
|
||||
android.R.layout.simple_spinner_item,
|
||||
vidName
|
||||
)
|
||||
videoArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||
videoSpinner.adapter = videoArrayAdapter
|
||||
videoSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
||||
override fun onItemSelected(
|
||||
parent: AdapterView<*>,
|
||||
view: View,
|
||||
position: Int,
|
||||
id: Long
|
||||
) {
|
||||
selectedVideo = position
|
||||
Log.d(TAG, selectedVideo.toString())
|
||||
}
|
||||
videoSpinner.setSelection(1)
|
||||
|
||||
override fun onNothingSelected(parent: AdapterView<*>?) {}
|
||||
}
|
||||
val audioSpinner = view.findViewById<Spinner>(R.id.audio_spinner)
|
||||
val audioArrayAdapter = ArrayAdapter(
|
||||
requireContext(),
|
||||
@ -122,27 +121,17 @@ class DownloadDialog : DialogFragment() {
|
||||
)
|
||||
audioArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||
audioSpinner.adapter = audioArrayAdapter
|
||||
audioSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
||||
override fun onItemSelected(
|
||||
parent: AdapterView<*>,
|
||||
view: View,
|
||||
position: Int,
|
||||
id: Long
|
||||
) {
|
||||
selectedAudio = position
|
||||
Log.d(TAG, selectedAudio.toString())
|
||||
}
|
||||
|
||||
override fun onNothingSelected(parent: AdapterView<*>?) {}
|
||||
}
|
||||
audioSpinner.setSelection(1)
|
||||
|
||||
view.findViewById<Button>(R.id.download).setOnClickListener {
|
||||
val selectedAudioUrl = audioUrl[audioSpinner.selectedItemPosition]
|
||||
val selectedVideoUrl = vidUrl[videoSpinner.selectedItemPosition]
|
||||
|
||||
val intent = Intent(context, DownloadService::class.java)
|
||||
intent.putExtra("videoId", videoId)
|
||||
intent.putExtra("videoUrl", vidUrl[selectedVideo])
|
||||
intent.putExtra("audioUrl", audioUrl[selectedAudio])
|
||||
intent.putExtra("videoUrl", selectedVideoUrl)
|
||||
intent.putExtra("audioUrl", selectedAudioUrl)
|
||||
intent.putExtra("duration", duration)
|
||||
// intent.putExtra("command","-y -i ${response.videoStreams[which].url} -i ${response.audioStreams!![0].url} -c copy ${Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)}/${videoId}.mkv")
|
||||
context?.startService(intent)
|
||||
dismiss()
|
||||
}
|
||||
|
@ -0,0 +1,77 @@
|
||||
package com.github.libretube.dialogs
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.widget.ArrayAdapter
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.obj.PlaylistId
|
||||
import com.github.libretube.util.RetrofitInstance
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import java.io.IOException
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import retrofit2.HttpException
|
||||
|
||||
class PlaylistOptionsDialog(
|
||||
private val playlistId: String,
|
||||
context: Context
|
||||
) : DialogFragment() {
|
||||
val TAG = "PlaylistOptionsDialog"
|
||||
|
||||
private val optionsList = listOf(
|
||||
context.getString(R.string.clonePlaylist),
|
||||
context.getString(R.string.share)
|
||||
)
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
val dialog = MaterialAlertDialogBuilder(requireContext())
|
||||
.setNegativeButton(R.string.cancel) { dialog, _ ->
|
||||
dialog.dismiss()
|
||||
}
|
||||
.setAdapter(
|
||||
ArrayAdapter(
|
||||
requireContext(),
|
||||
R.layout.video_options_dialog_item,
|
||||
optionsList
|
||||
)
|
||||
) { _, which ->
|
||||
when (which) {
|
||||
// Clone the playlist to the users Piped account
|
||||
0 -> {
|
||||
val sharedPref =
|
||||
context?.getSharedPreferences("token", Context.MODE_PRIVATE)
|
||||
val token = sharedPref?.getString("token", "")!!
|
||||
importPlaylist(token, playlistId)
|
||||
}
|
||||
// share the playlist
|
||||
1 -> {
|
||||
val shareDialog = ShareDialog(playlistId, true)
|
||||
// using parentFragmentManager is important here
|
||||
shareDialog.show(parentFragmentManager, "ShareDialog")
|
||||
}
|
||||
}
|
||||
}
|
||||
return dialog.show()
|
||||
}
|
||||
|
||||
private fun importPlaylist(token: String, playlistId: String) {
|
||||
fun run() {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
val response = try {
|
||||
RetrofitInstance.api.importPlaylist(token, PlaylistId(playlistId))
|
||||
} catch (e: IOException) {
|
||||
println(e)
|
||||
return@launch
|
||||
} catch (e: HttpException) {
|
||||
return@launch
|
||||
}
|
||||
Log.e(TAG, response.toString())
|
||||
}
|
||||
}
|
||||
run()
|
||||
}
|
||||
}
|
@ -7,39 +7,43 @@ import androidx.fragment.app.DialogFragment
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.github.libretube.R
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import java.net.URLEncoder
|
||||
|
||||
class ShareDialog(private val videoId: String) : DialogFragment() {
|
||||
class ShareDialog(
|
||||
private val id: String,
|
||||
private val isPlaylist: Boolean
|
||||
) : DialogFragment() {
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
return activity?.let {
|
||||
val sharedPreferences =
|
||||
PreferenceManager.getDefaultSharedPreferences(requireContext())
|
||||
val instancePref = sharedPreferences.getString(
|
||||
"selectInstance",
|
||||
"https://pipedapi.kavin.rocks"
|
||||
)!!
|
||||
val instance = "&instance=${URLEncoder.encode(instancePref, "UTF-8")}"
|
||||
val shareOptions = arrayOf(
|
||||
context?.getString(R.string.piped),
|
||||
context?.getString(R.string.instance),
|
||||
context?.getString(R.string.youtube)
|
||||
var shareOptions = arrayOf(
|
||||
getString(R.string.piped),
|
||||
getString(R.string.youtube)
|
||||
)
|
||||
val instanceUrl = getCustomInstanceFrontendUrl()
|
||||
|
||||
// add instanceUrl option if custom instance frontend url available
|
||||
if (instanceUrl != "") shareOptions += getString(R.string.instance)
|
||||
|
||||
MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(context?.getString(R.string.share))
|
||||
.setItems(
|
||||
shareOptions
|
||||
) { _, id ->
|
||||
val url = when (id) {
|
||||
0 -> "https://piped.kavin.rocks/watch?v=$videoId"
|
||||
1 -> "https://piped.kavin.rocks/watch?v=$videoId$instance"
|
||||
2 -> "https://youtu.be/$videoId"
|
||||
else -> "https://piped.kavin.rocks/watch?v=$videoId"
|
||||
) { _, which ->
|
||||
val host = when (which) {
|
||||
0 -> "https://piped.kavin.rocks"
|
||||
1 -> "https://youtube.com"
|
||||
// only available for custom instances
|
||||
else -> instanceUrl
|
||||
}
|
||||
val path = if (!isPlaylist) "/watch?v=$id" else "/playlist?list=$id"
|
||||
val url = "$host$path"
|
||||
|
||||
val intent = Intent()
|
||||
intent.action = Intent.ACTION_SEND
|
||||
intent.putExtra(Intent.EXTRA_TEXT, url)
|
||||
intent.type = "text/plain"
|
||||
intent.apply {
|
||||
action = Intent.ACTION_SEND
|
||||
putExtra(Intent.EXTRA_TEXT, url)
|
||||
type = "text/plain"
|
||||
}
|
||||
context?.startActivity(
|
||||
Intent.createChooser(intent, context?.getString(R.string.shareTo))
|
||||
)
|
||||
@ -47,4 +51,38 @@ class ShareDialog(private val videoId: String) : DialogFragment() {
|
||||
.show()
|
||||
} ?: throw IllegalStateException("Activity cannot be null")
|
||||
}
|
||||
|
||||
// get the frontend url if it's a custom instance
|
||||
private fun getCustomInstanceFrontendUrl(): String {
|
||||
val sharedPreferences =
|
||||
PreferenceManager.getDefaultSharedPreferences(requireContext())
|
||||
val instancePref = sharedPreferences.getString(
|
||||
"selectInstance",
|
||||
"https://pipedapi.kavin.rocks"
|
||||
)
|
||||
|
||||
// get the api urls of the other custom instances
|
||||
var customInstancesUrls = try {
|
||||
sharedPreferences
|
||||
.getStringSet("custom_instances_url", HashSet())!!.toList()
|
||||
} catch (e: Exception) {
|
||||
emptyList()
|
||||
}
|
||||
|
||||
// get the frontend urls of the other custom instances
|
||||
var customInstancesFrontendUrls = try {
|
||||
sharedPreferences
|
||||
.getStringSet("custom_instances_url", HashSet())!!.toList()
|
||||
} catch (e: Exception) {
|
||||
emptyList()
|
||||
}
|
||||
|
||||
// return the custom instance frontend url if available
|
||||
return if (customInstancesUrls.contains(instancePref)) {
|
||||
val index = customInstancesUrls.indexOf(instancePref)
|
||||
return customInstancesFrontendUrls[index]
|
||||
} else {
|
||||
""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ class VideoOptionsDialog(private val videoId: String, context: Context) : Dialog
|
||||
/**
|
||||
* List that stores the different menu options. In the future could be add more options here.
|
||||
*/
|
||||
private val list = listOf(
|
||||
private val optionsList = listOf(
|
||||
context.getString(R.string.playOnBackground),
|
||||
context.getString(R.string.addToPlaylist),
|
||||
context.getString(R.string.share)
|
||||
@ -37,9 +37,9 @@ class VideoOptionsDialog(private val videoId: String, context: Context) : Dialog
|
||||
ArrayAdapter(
|
||||
requireContext(),
|
||||
R.layout.video_options_dialog_item,
|
||||
list
|
||||
optionsList
|
||||
)
|
||||
) { dialog, which ->
|
||||
) { _, which ->
|
||||
// For now, this checks the position of the option with the position that is in the
|
||||
// list. I don't like it, but we will do like this for now.
|
||||
when (which) {
|
||||
@ -66,13 +66,10 @@ class VideoOptionsDialog(private val videoId: String, context: Context) : Dialog
|
||||
}
|
||||
}
|
||||
2 -> {
|
||||
val shareDialog = ShareDialog(videoId)
|
||||
val shareDialog = ShareDialog(videoId, false)
|
||||
// using parentFragmentManager is important here
|
||||
shareDialog.show(parentFragmentManager, "ShareDialog")
|
||||
}
|
||||
else -> {
|
||||
dialog.dismiss()
|
||||
}
|
||||
}
|
||||
}
|
||||
.show()
|
||||
|
@ -18,6 +18,7 @@ import com.github.libretube.R
|
||||
import com.github.libretube.adapters.PlaylistsAdapter
|
||||
import com.github.libretube.dialogs.CreatePlaylistDialog
|
||||
import com.github.libretube.util.RetrofitInstance
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
import java.io.IOException
|
||||
import retrofit2.HttpException
|
||||
|
||||
@ -68,16 +69,7 @@ class Library : Fragment() {
|
||||
}
|
||||
} else {
|
||||
refreshLayout.isEnabled = false
|
||||
view.findViewById<com.google.android.material.floatingactionbutton
|
||||
.FloatingActionButton>(R.id.create_playlist).visibility = View.GONE
|
||||
with(view.findViewById<ImageView>(R.id.boogh2)) {
|
||||
visibility = View.VISIBLE
|
||||
setImageResource(R.drawable.ic_login)
|
||||
}
|
||||
with(view.findViewById<TextView>(R.id.textLike2)) {
|
||||
visibility = View.VISIBLE
|
||||
text = getString(R.string.please_login)
|
||||
}
|
||||
view.findViewById<FloatingActionButton>(R.id.create_playlist).visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10,6 +10,7 @@ import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Build.VERSION.SDK_INT
|
||||
import android.os.Bundle
|
||||
import android.os.PowerManager
|
||||
import android.support.v4.media.session.MediaSessionCompat
|
||||
import android.text.Html
|
||||
import android.text.TextUtils
|
||||
@ -27,7 +28,6 @@ import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.constraintlayout.motion.widget.MotionLayout
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.ContentProviderCompat.requireContext
|
||||
import androidx.core.net.toUri
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.core.view.isVisible
|
||||
@ -51,9 +51,9 @@ import com.github.libretube.obj.ChapterSegment
|
||||
import com.github.libretube.obj.PipedStream
|
||||
import com.github.libretube.obj.Segment
|
||||
import com.github.libretube.obj.Segments
|
||||
import com.github.libretube.obj.StreamItem
|
||||
import com.github.libretube.obj.Streams
|
||||
import com.github.libretube.obj.Subscribe
|
||||
import com.github.libretube.obj.StreamItem
|
||||
import com.github.libretube.preferences.SponsorBlockSettings
|
||||
import com.github.libretube.util.CronetHelper
|
||||
import com.github.libretube.util.DescriptionAdapter
|
||||
@ -87,8 +87,6 @@ import com.squareup.picasso.Picasso
|
||||
import java.io.IOException
|
||||
import java.util.concurrent.Executors
|
||||
import kotlin.math.abs
|
||||
import kotlinx.coroutines.NonCancellable.isActive
|
||||
import org.chromium.base.ThreadUtils.runOnUiThread
|
||||
import org.chromium.net.CronetEngine
|
||||
import retrofit2.HttpException
|
||||
|
||||
@ -194,19 +192,12 @@ class PlayerFragment : Fragment() {
|
||||
val mainMotionLayout =
|
||||
mainActivity.findViewById<MotionLayout>(R.id.mainMotionLayout)
|
||||
if (currentId == eId) {
|
||||
view.findViewById<ImageButton>(R.id.exo_play_pause).visibility = View.GONE
|
||||
view.findViewById<ImageButton>(R.id.quality_select).visibility = View.GONE
|
||||
view.findViewById<ImageButton>(R.id.close_imageButton).visibility = View.GONE
|
||||
view.findViewById<TextView>(R.id.quality_text).visibility = View.GONE
|
||||
view.findViewById<ImageButton>(R.id.aspect_ratio_button).visibility = View.GONE
|
||||
exoPlayerView.hideController()
|
||||
exoPlayerView.useController = false
|
||||
mainMotionLayout.progress = 1.toFloat()
|
||||
} else if (currentId == sId) {
|
||||
view.findViewById<ImageButton>(R.id.exo_play_pause).visibility = View.VISIBLE
|
||||
view.findViewById<ImageButton>(R.id.quality_select).visibility = View.VISIBLE
|
||||
view.findViewById<ImageButton>(R.id.close_imageButton).visibility = View.VISIBLE
|
||||
view.findViewById<TextView>(R.id.quality_text).visibility = View.VISIBLE
|
||||
view.findViewById<ImageButton>(R.id.aspect_ratio_button)
|
||||
.visibility = View.VISIBLE
|
||||
exoPlayerView.showController()
|
||||
exoPlayerView.useController = true
|
||||
mainMotionLayout.progress = 0.toFloat()
|
||||
}
|
||||
}
|
||||
@ -253,8 +244,8 @@ class PlayerFragment : Fragment() {
|
||||
}
|
||||
|
||||
view.findViewById<RelativeLayout>(R.id.player_title_layout).setOnClickListener {
|
||||
val image = view.findViewById<ImageView>(R.id.player_description_arrow)
|
||||
image.animate().rotationBy(180F).setDuration(100).start()
|
||||
val arrowImageView = view.findViewById<ImageView>(R.id.player_description_arrow)
|
||||
arrowImageView.animate().rotationBy(180F).setDuration(100).start()
|
||||
if (playerDescription.isVisible) {
|
||||
playerDescription.visibility = View.GONE
|
||||
} else {
|
||||
@ -333,6 +324,23 @@ class PlayerFragment : Fragment() {
|
||||
if (!commentsLoaded!!) fetchComments()
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
// pause the player if the screen is turned off
|
||||
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())
|
||||
val pausePlayerOnScreenOffEnabled = sharedPreferences
|
||||
.getBoolean("pause_screen_off", false)
|
||||
|
||||
// check whether the screen is on
|
||||
val pm = context?.getSystemService(Context.POWER_SERVICE) as PowerManager
|
||||
val isScreenOn = pm.isInteractive
|
||||
|
||||
// pause player if screen off and setting enabled
|
||||
if (exoPlayer != null && !isScreenOn && pausePlayerOnScreenOffEnabled) {
|
||||
exoPlayer.pause()
|
||||
}
|
||||
super.onPause()
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
try {
|
||||
@ -556,7 +564,7 @@ class PlayerFragment : Fragment() {
|
||||
|
||||
// share button
|
||||
view.findViewById<LinearLayout>(R.id.relPlayer_share).setOnClickListener {
|
||||
val shareDialog = ShareDialog(videoId!!)
|
||||
val shareDialog = ShareDialog(videoId!!, false)
|
||||
shareDialog.show(childFragmentManager, "ShareDialog")
|
||||
}
|
||||
// check if livestream
|
||||
@ -721,11 +729,11 @@ class PlayerFragment : Fragment() {
|
||||
}
|
||||
// create a list of subtitles
|
||||
val subtitle = mutableListOf<SubtitleConfiguration>()
|
||||
if (response.subtitles!!.isNotEmpty()) {
|
||||
response.subtitles!!.forEach {
|
||||
subtitle.add(
|
||||
SubtitleConfiguration.Builder(response.subtitles[0].url!!.toUri())
|
||||
.setMimeType(response.subtitles[0].mimeType!!) // The correct MIME type (required).
|
||||
.setLanguage(response.subtitles[0].code) // The subtitle language (optional).
|
||||
SubtitleConfiguration.Builder(it.url!!.toUri())
|
||||
.setMimeType(it.mimeType!!) // The correct MIME type (required).
|
||||
.setLanguage(it.code) // The subtitle language (optional).
|
||||
.build()
|
||||
)
|
||||
}
|
||||
@ -811,7 +819,9 @@ class PlayerFragment : Fragment() {
|
||||
private fun createExoPlayer(view: View) {
|
||||
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())
|
||||
val playbackSpeed = sharedPreferences.getString("playback_speed", "1F")?.toFloat()
|
||||
val bufferingGoal = sharedPreferences.getString("buffering_goal", "50")?.toInt()!!
|
||||
// multiply by thousand: s -> ms
|
||||
val bufferingGoal = sharedPreferences.getString("buffering_goal", "50")?.toInt()!! * 1000
|
||||
val seekIncrement = sharedPreferences.getString("seek_increment", "5")?.toLong()!! * 1000
|
||||
|
||||
val cronetEngine: CronetEngine = CronetHelper.getCronetEngine()
|
||||
val cronetDataSourceFactory: CronetDataSource.Factory =
|
||||
@ -834,7 +844,7 @@ class PlayerFragment : Fragment() {
|
||||
.setBackBuffer(1000 * 60 * 3, true)
|
||||
.setBufferDurationsMs(
|
||||
DefaultLoadControl.DEFAULT_MIN_BUFFER_MS,
|
||||
bufferingGoal * 1000, // buffering goal, s -> ms
|
||||
bufferingGoal,
|
||||
DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_MS,
|
||||
DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS
|
||||
)
|
||||
@ -843,8 +853,8 @@ class PlayerFragment : Fragment() {
|
||||
exoPlayer = ExoPlayer.Builder(view.context)
|
||||
.setMediaSourceFactory(DefaultMediaSourceFactory(dataSourceFactory))
|
||||
.setLoadControl(loadControl)
|
||||
.setSeekBackIncrementMs(5000)
|
||||
.setSeekForwardIncrementMs(5000)
|
||||
.setSeekBackIncrementMs(seekIncrement)
|
||||
.setSeekForwardIncrementMs(seekIncrement)
|
||||
.build()
|
||||
|
||||
exoPlayer.setAudioAttributes(audioAttributes, true)
|
||||
@ -865,7 +875,7 @@ class PlayerFragment : Fragment() {
|
||||
playerNotification = PlayerNotificationManager
|
||||
.Builder(c, 1, "background_mode")
|
||||
.setMediaDescriptionAdapter(
|
||||
DescriptionAdapter(title, uploader, thumbnailUrl)
|
||||
DescriptionAdapter(title, uploader, thumbnailUrl, requireContext())
|
||||
)
|
||||
.build()
|
||||
|
||||
@ -1029,12 +1039,12 @@ class PlayerFragment : Fragment() {
|
||||
super.onPictureInPictureModeChanged(isInPictureInPictureMode)
|
||||
if (isInPictureInPictureMode) {
|
||||
exoPlayerView.hideController()
|
||||
exoPlayerView.useController = false
|
||||
with(motionLayout) {
|
||||
getConstraintSet(R.id.start).constrainHeight(R.id.player, -1)
|
||||
enableTransition(R.id.yt_transition, false)
|
||||
}
|
||||
view?.findViewById<ConstraintLayout>(R.id.main_container)?.isClickable = true
|
||||
view?.findViewById<LinearLayout>(R.id.linLayout)?.visibility = View.GONE
|
||||
view?.findViewById<FrameLayout>(R.id.top_bar)?.visibility = View.GONE
|
||||
val mainActivity = activity as MainActivity
|
||||
mainActivity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT
|
||||
@ -1044,8 +1054,9 @@ class PlayerFragment : Fragment() {
|
||||
getConstraintSet(R.id.start).constrainHeight(R.id.player, 0)
|
||||
enableTransition(R.id.yt_transition, true)
|
||||
}
|
||||
exoPlayerView.showController()
|
||||
exoPlayerView.useController = true
|
||||
view?.findViewById<ConstraintLayout>(R.id.main_container)?.isClickable = false
|
||||
view?.findViewById<LinearLayout>(R.id.linLayout)?.visibility = View.VISIBLE
|
||||
view?.findViewById<FrameLayout>(R.id.top_bar)?.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.ScrollView
|
||||
import android.widget.TextView
|
||||
import androidx.fragment.app.Fragment
|
||||
@ -19,15 +20,16 @@ import java.io.IOException
|
||||
import retrofit2.HttpException
|
||||
|
||||
class PlaylistFragment : Fragment() {
|
||||
private var playlist_id: String? = null
|
||||
private val TAG = "PlaylistFragment"
|
||||
|
||||
private var playlistId: String? = null
|
||||
var nextPage: String? = null
|
||||
var playlistAdapter: PlaylistAdapter? = null
|
||||
var isLoading = true
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
arguments?.let {
|
||||
playlist_id = it.getString("playlist_id")
|
||||
playlistId = it.getString("playlist_id")
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,11 +45,12 @@ class PlaylistFragment : Fragment() {
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
playlist_id = playlist_id!!.replace("/playlist?list=", "")
|
||||
view.findViewById<TextView>(R.id.playlist_name).text = playlist_id
|
||||
playlistId = playlistId!!.replace("/playlist?list=", "")
|
||||
val recyclerView = view.findViewById<RecyclerView>(R.id.playlist_recView)
|
||||
recyclerView.layoutManager = LinearLayoutManager(context)
|
||||
|
||||
val progressBar = view.findViewById<ProgressBar>(R.id.playlist_progress)
|
||||
progressBar.visibility = View.VISIBLE
|
||||
fetchPlaylist(view)
|
||||
}
|
||||
|
||||
@ -55,7 +58,7 @@ class PlaylistFragment : Fragment() {
|
||||
fun run() {
|
||||
lifecycleScope.launchWhenCreated {
|
||||
val response = try {
|
||||
RetrofitInstance.api.getPlaylist(playlist_id!!)
|
||||
RetrofitInstance.api.getPlaylist(playlistId!!)
|
||||
} catch (e: IOException) {
|
||||
println(e)
|
||||
Log.e(TAG, "IOException, you might not have internet connection")
|
||||
@ -67,10 +70,11 @@ class PlaylistFragment : Fragment() {
|
||||
nextPage = response.nextpage
|
||||
isLoading = false
|
||||
runOnUiThread {
|
||||
view.findViewById<ProgressBar>(R.id.playlist_progress).visibility = View.GONE
|
||||
view.findViewById<TextView>(R.id.playlist_name).text = response.name
|
||||
view.findViewById<TextView>(R.id.playlist_uploader).text = response.uploader
|
||||
view.findViewById<TextView>(R.id.playlist_totVideos).text =
|
||||
response.videos.toString() + " Videos"
|
||||
getString(R.string.videoCount, response.videos.toString())
|
||||
val sharedPref2 =
|
||||
context?.getSharedPreferences("username", Context.MODE_PRIVATE)
|
||||
val user = sharedPref2?.getString("username", "")
|
||||
@ -80,7 +84,7 @@ class PlaylistFragment : Fragment() {
|
||||
}
|
||||
playlistAdapter = PlaylistAdapter(
|
||||
response.relatedStreams!!.toMutableList(),
|
||||
playlist_id!!,
|
||||
playlistId!!,
|
||||
isOwner,
|
||||
requireActivity(),
|
||||
childFragmentManager
|
||||
@ -112,7 +116,7 @@ class PlaylistFragment : Fragment() {
|
||||
|
||||
lifecycleScope.launchWhenCreated {
|
||||
val response = try {
|
||||
RetrofitInstance.api.getPlaylistNextPage(playlist_id!!, nextPage!!)
|
||||
RetrofitInstance.api.getPlaylistNextPage(playlistId!!, nextPage!!)
|
||||
} catch (e: IOException) {
|
||||
println(e)
|
||||
Log.e(TAG, "IOException, you might not have internet connection")
|
||||
|
@ -6,9 +6,6 @@ import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.animation.Animation
|
||||
import android.view.animation.LinearInterpolator
|
||||
import android.view.animation.RotateAnimation
|
||||
import android.widget.ImageView
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.RelativeLayout
|
||||
@ -79,9 +76,13 @@ class Subscriptions : Fragment() {
|
||||
}
|
||||
|
||||
var toggleSubs = view.findViewById<RelativeLayout>(R.id.toggle_subs)
|
||||
val arrowImageView = view.findViewById<ImageView>(R.id.toggle)
|
||||
|
||||
toggleSubs.visibility = View.VISIBLE
|
||||
var loadedSubbedChannels = false
|
||||
|
||||
toggleSubs.setOnClickListener {
|
||||
arrowImageView.animate().rotationBy(180F).setDuration(100).start()
|
||||
if (!channelRecView.isVisible) {
|
||||
if (!loadedSubbedChannels) {
|
||||
channelRecView?.layoutManager = LinearLayoutManager(context)
|
||||
@ -90,21 +91,6 @@ class Subscriptions : Fragment() {
|
||||
}
|
||||
channelRecView.visibility = View.VISIBLE
|
||||
feedRecView.visibility = View.GONE
|
||||
|
||||
// toggle button
|
||||
val rotate = RotateAnimation(
|
||||
0F,
|
||||
180F,
|
||||
Animation.RELATIVE_TO_SELF,
|
||||
0.5f,
|
||||
Animation.RELATIVE_TO_SELF,
|
||||
0.5f
|
||||
)
|
||||
rotate.duration = 100
|
||||
rotate.interpolator = LinearInterpolator()
|
||||
rotate.fillAfter = true
|
||||
val image = view.findViewById<ImageView>(R.id.toggle)
|
||||
image.startAnimation(rotate)
|
||||
} else {
|
||||
channelRecView.visibility = View.GONE
|
||||
feedRecView.visibility = View.VISIBLE
|
||||
|
@ -12,9 +12,9 @@ import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.github.libretube.AUTHORS_URL
|
||||
import com.github.libretube.BuildConfig
|
||||
import com.github.libretube.CONTRIBUTING_URL
|
||||
import com.github.libretube.DONATE_URL
|
||||
import com.github.libretube.PIPED_GITHUB_URL
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.WEBSITE_URL
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
@ -33,9 +33,6 @@ class AboutFragment : Fragment() {
|
||||
val topBarText = activity?.findViewById<TextView>(R.id.topBar_textView)
|
||||
topBarText?.text = getString(R.string.about)
|
||||
|
||||
val appVersion = view.findViewById<TextView>(R.id.app_version)
|
||||
appVersion.text = BuildConfig.VERSION_NAME
|
||||
|
||||
val website = view.findViewById<LinearLayout>(R.id.website)
|
||||
website.setOnClickListener {
|
||||
openLinkFromHref(WEBSITE_URL)
|
||||
@ -44,6 +41,10 @@ class AboutFragment : Fragment() {
|
||||
authors.setOnClickListener {
|
||||
openLinkFromHref(AUTHORS_URL)
|
||||
}
|
||||
val piped = view.findViewById<LinearLayout>(R.id.piped)
|
||||
piped.setOnClickListener {
|
||||
openLinkFromHref(PIPED_GITHUB_URL)
|
||||
}
|
||||
val donate = view.findViewById<LinearLayout>(R.id.donate)
|
||||
donate.setOnClickListener {
|
||||
openLinkFromHref(DONATE_URL)
|
||||
|
@ -5,6 +5,7 @@ import android.widget.TextView
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.preference.SwitchPreference
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.requireMainActivityRestart
|
||||
import com.github.libretube.util.ThemeHelper
|
||||
@ -42,5 +43,11 @@ class AppearanceSettings : PreferenceFragmentCompat() {
|
||||
requireMainActivityRestart = true
|
||||
true
|
||||
}
|
||||
|
||||
val hideTrending = findPreference<SwitchPreference>("hide_trending_page")
|
||||
hideTrending?.setOnPreferenceChangeListener { _, _ ->
|
||||
requireMainActivityRestart = true
|
||||
true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -56,16 +56,16 @@ class MainSettings : PreferenceFragmentCompat() {
|
||||
true
|
||||
}
|
||||
|
||||
val advanced = findPreference<Preference>("advanced")
|
||||
advanced?.setOnPreferenceClickListener {
|
||||
val newFragment = AdvancedSettings()
|
||||
val player = findPreference<Preference>("player")
|
||||
player?.setOnPreferenceClickListener {
|
||||
val newFragment = PlayerSettings()
|
||||
navigateSettings(newFragment)
|
||||
true
|
||||
}
|
||||
|
||||
val about = findPreference<Preference>("about")
|
||||
about?.setOnPreferenceClickListener {
|
||||
val newFragment = AboutFragment()
|
||||
val advanced = findPreference<Preference>("advanced")
|
||||
advanced?.setOnPreferenceClickListener {
|
||||
val newFragment = AdvancedSettings()
|
||||
navigateSettings(newFragment)
|
||||
true
|
||||
}
|
||||
@ -76,6 +76,13 @@ class MainSettings : PreferenceFragmentCompat() {
|
||||
checkUpdate(childFragmentManager)
|
||||
true
|
||||
}
|
||||
|
||||
val about = findPreference<Preference>("about")
|
||||
about?.setOnPreferenceClickListener {
|
||||
val newFragment = AboutFragment()
|
||||
navigateSettings(newFragment)
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
private fun navigateSettings(newFragment: Fragment) {
|
||||
|
@ -0,0 +1,17 @@
|
||||
package com.github.libretube.preferences
|
||||
|
||||
import android.os.Bundle
|
||||
import android.widget.TextView
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import com.github.libretube.R
|
||||
|
||||
class PlayerSettings : PreferenceFragmentCompat() {
|
||||
val TAG = "PlayerSettings"
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.player_settings, rootKey)
|
||||
|
||||
val topBarTextView = activity?.findViewById<TextView>(R.id.topBar_textView)
|
||||
topBarTextView?.text = getString(R.string.player)
|
||||
}
|
||||
}
|
@ -1,8 +1,11 @@
|
||||
package com.github.libretube.util
|
||||
|
||||
import android.app.PendingIntent
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.BitmapFactory
|
||||
import com.github.libretube.MainActivity
|
||||
import com.google.android.exoplayer2.Player
|
||||
import com.google.android.exoplayer2.ui.PlayerNotificationManager
|
||||
import java.net.URL
|
||||
@ -14,32 +17,58 @@ import java.net.URL
|
||||
class DescriptionAdapter(
|
||||
private val title: String,
|
||||
private val channelName: String,
|
||||
private val thumbnailUrl: String
|
||||
private val thumbnailUrl: String,
|
||||
private val context: Context
|
||||
) :
|
||||
PlayerNotificationManager.MediaDescriptionAdapter {
|
||||
/**
|
||||
* sets the title of the notification
|
||||
*/
|
||||
override fun getCurrentContentTitle(player: Player): CharSequence {
|
||||
// return controller.metadata.description.title.toString()
|
||||
return title
|
||||
}
|
||||
|
||||
/**
|
||||
* overrides the action when clicking the notification
|
||||
*/
|
||||
override fun createCurrentContentIntent(player: Player): PendingIntent? {
|
||||
// return controller.sessionActivity
|
||||
return null
|
||||
/**
|
||||
* starts a new MainActivity Intent when the player notification is clicked
|
||||
* it doesn't start a completely new MainActivity because the MainActivity's launchMode
|
||||
* is set to "singleTop" in the AndroidManifest (important!!!)
|
||||
* that's the only way to launch back into the previous activity (e.g. the player view
|
||||
*/
|
||||
val intent = Intent(context, MainActivity::class.java)
|
||||
return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)
|
||||
}
|
||||
|
||||
/**
|
||||
* the description of the notification (below the title)
|
||||
*/
|
||||
override fun getCurrentContentText(player: Player): CharSequence? {
|
||||
// return controller.metadata.description.subtitle.toString()
|
||||
return channelName
|
||||
}
|
||||
|
||||
/**
|
||||
* return the icon/thumbnail of the video
|
||||
*/
|
||||
override fun getCurrentLargeIcon(
|
||||
player: Player,
|
||||
callback: PlayerNotificationManager.BitmapCallback
|
||||
): Bitmap? {
|
||||
lateinit var bitmap: Bitmap
|
||||
|
||||
/**
|
||||
* running on a new thread to prevent a NetworkMainThreadException
|
||||
*/
|
||||
val thread = Thread {
|
||||
try {
|
||||
// try to parse the thumbnailUrl to a Bitmap
|
||||
/**
|
||||
* try to GET the thumbnail from the URL
|
||||
*/
|
||||
val inputStream = URL(thumbnailUrl).openStream()
|
||||
bitmap = BitmapFactory.decodeStream(inputStream)
|
||||
} catch (ex: java.lang.Exception) {
|
||||
@ -48,9 +77,14 @@ class DescriptionAdapter(
|
||||
}
|
||||
thread.start()
|
||||
thread.join()
|
||||
// return bitmap if initialized
|
||||
/**
|
||||
* returns the scaled bitmap if it got fetched successfully
|
||||
*/
|
||||
return try {
|
||||
bitmap
|
||||
val resizedBitmap = Bitmap.createScaledBitmap(
|
||||
bitmap, 1080, 1080, false
|
||||
)
|
||||
resizedBitmap
|
||||
} catch (e: Exception) {
|
||||
null
|
||||
}
|
||||
|
@ -117,6 +117,12 @@ interface PipedApi {
|
||||
@Body channels: List<String>
|
||||
): Message
|
||||
|
||||
@POST("import/playlist")
|
||||
suspend fun importPlaylist(
|
||||
@Header("Authorization") token: String,
|
||||
@Body playlistId: PlaylistId
|
||||
): Message
|
||||
|
||||
@GET("user/playlists")
|
||||
suspend fun playlists(@Header("Authorization") token: String): List<Playlists>
|
||||
|
||||
|
10
app/src/main/res/drawable/ic_download_filled.xml
Normal file
10
app/src/main/res/drawable/ic_download_filled.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="300"
|
||||
android:viewportHeight="300"
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M149.99,0C67.16,0 0,67.16 0,150c0,82.84 67.16,150 149.99,150s150,-67.16 150,-150C300,67.16 232.83,0 149.99,0zM110.97,105.36c2.08,-2.08 4.79,-3.11 7.51,-3.11c2.72,0 5.43,1.04 7.51,3.11l13.3,13.3v-3.91V62.48c0,-5.87 4.75,-10.62 10.62,-10.62s10.62,4.75 10.62,10.62v52.26v4.63l4.63,-4.63l9.39,-9.38c2.08,-2.08 4.79,-3.11 7.51,-3.11s5.44,1.04 7.51,3.11c2.55,2.55 3.52,6.08 2.93,9.38c0,0 -0,0 -0,0.01c-0.04,0.24 -0.12,0.47 -0.18,0.7c-0.09,0.37 -0.19,0.73 -0.32,1.08c-0.09,0.24 -0.19,0.47 -0.3,0.7c-0.17,0.37 -0.36,0.73 -0.57,1.08c-0.11,0.19 -0.22,0.37 -0.34,0.55c-0.36,0.52 -0.76,1.03 -1.23,1.5l-15.11,15.11l-16.59,16.59c-2.08,2.08 -4.79,3.11 -7.51,3.11c-0.03,0 -0.05,0 -0.08,0s-0.05,0 -0.08,0c-2.71,0 -5.43,-1.03 -7.51,-3.11l-16.59,-16.59l-15.11,-15.11c-0.47,-0.47 -0.86,-0.97 -1.22,-1.5c-0.13,-0.18 -0.23,-0.37 -0.34,-0.56c-0.21,-0.35 -0.4,-0.7 -0.56,-1.07c-0.11,-0.24 -0.21,-0.47 -0.3,-0.72c-0.13,-0.35 -0.22,-0.7 -0.31,-1.06c-0.06,-0.25 -0.14,-0.49 -0.19,-0.73C107.44,111.44 108.41,107.91 110.97,105.36zM231.57,209.32h-0c0,14.34 -14.06,25.57 -32.01,25.57h-99.13c-17.94,0 -32.01,-11.23 -32.01,-25.57V140.31c0,-12.12 10.06,-21.99 24,-24.76c0.6,5.98 3.22,11.53 7.53,15.83l4.11,4.11h-3.64c-7.26,0 -11.26,3.62 -11.26,4.82v69c0,1.2 3.99,4.82 11.26,4.82h99.14c7.26,0 11.26,-3.62 11.26,-4.82V140.31c0,-1.2 -3.99,-4.82 -11.26,-4.82h-3.12l4.11,-4.11c4.28,-4.28 6.89,-9.79 7.52,-15.73c13.68,2.91 23.5,12.69 23.5,24.66V209.32z" />
|
||||
</vector>
|
10
app/src/main/res/drawable/ic_history_filled.xml
Normal file
10
app/src/main/res/drawable/ic_history_filled.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M12,2c5.523,0 10,4.477 10,10s-4.477,10 -10,10c-1.702,0 -3.305,-0.425 -4.708,-1.175L2,22l1.176,-5.29C2.426,15.306 2,13.703 2,12 2,6.477 6.477,2 12,2zM13,7h-2v7h6v-2h-4L13,7z" />
|
||||
</vector>
|
@ -3,9 +3,12 @@
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M9.325,16.275Q9.05,15.95 9.05,15.537Q9.05,15.125 9.325,14.85L11.175,13H4Q3.575,13 3.288,12.712Q3,12.425 3,12Q3,11.575 3.288,11.287Q3.575,11 4,11H11.175L9.325,9.15Q9.025,8.85 9.025,8.438Q9.025,8.025 9.325,7.725Q9.6,7.425 10.013,7.425Q10.425,7.425 10.7,7.7L14.3,11.3Q14.45,11.45 14.513,11.625Q14.575,11.8 14.575,12Q14.575,12.2 14.513,12.375Q14.45,12.55 14.3,12.7L10.7,16.3Q10.4,16.6 10,16.575Q9.6,16.55 9.325,16.275ZM13,21Q12.575,21 12.288,20.712Q12,20.425 12,20Q12,19.575 12.288,19.288Q12.575,19 13,19H19Q19,19 19,19Q19,19 19,19V5Q19,5 19,5Q19,5 19,5H13Q12.575,5 12.288,4.712Q12,4.425 12,4Q12,3.575 12.288,3.287Q12.575,3 13,3H19Q19.825,3 20.413,3.587Q21,4.175 21,5V19Q21,19.825 20.413,20.413Q19.825,21 19,21Z" />
|
||||
android:pathData="M9,3h8a2,2 0,0 1,2 2v14a2,2 0,0 1,-2 2H9m6,-9 l-4,-4m4,4 l-4,4m4,-4H5"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="@android:color/black"
|
||||
android:strokeLineCap="round" />
|
||||
</vector>
|
||||
|
10
app/src/main/res/drawable/ic_login_filled.xml
Normal file
10
app/src/main/res/drawable/ic_login_filled.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M10,11H4V3a1,1 0,0 1,1 -1h14a1,1 0,0 1,1 1v18a1,1 0,0 1,-1 1H5a1,1 0,0 1,-1 -1v-8h6v3l5,-4 -5,-4v3z" />
|
||||
</vector>
|
10
app/src/main/res/drawable/ic_pause_filled.xml
Normal file
10
app/src/main/res/drawable/ic_pause_filled.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="300"
|
||||
android:viewportHeight="300"
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M150,0c-82.84,0 -150,67.16 -150,150c0,82.84 67.16,150 150,150c82.84,0 150,-67.17 150,-150C300,67.16 232.85,0 150,0zM134.41,194.54c0,9.5 -7.7,17.2 -17.2,17.2s-17.2,-7.7 -17.2,-17.2V105.46c0,-9.5 7.7,-17.2 17.2,-17.2s17.2,7.7 17.2,17.2V194.54zM198.96,194.54c0,9.5 -7.7,17.2 -17.2,17.2c-9.5,0 -17.2,-7.7 -17.2,-17.2V105.46c0,-9.5 7.7,-17.2 17.2,-17.2s17.2,7.7 17.2,17.2V194.54z" />
|
||||
</vector>
|
@ -1,10 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?android:attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M8,5v14l11,-7z" />
|
||||
</vector>
|
||||
|
10
app/src/main/res/drawable/ic_play_filled.xml
Normal file
10
app/src/main/res/drawable/ic_play_filled.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="485.74"
|
||||
android:viewportHeight="485.74"
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M242.87,0C108.73,0 0,108.74 0,242.86c0,134.14 108.73,242.88 242.87,242.88c134.14,0 242.86,-108.74 242.86,-242.88C485.74,108.74 377.01,0 242.87,0zM338.41,263.94l-134.36,92.73c-16.78,11.59 -30.58,4.25 -30.58,-16.32V145.38c0,-20.56 13.81,-27.9 30.58,-16.31l134.32,92.73C355.14,233.38 355.18,252.35 338.41,263.94z" />
|
||||
</vector>
|
11
app/src/main/res/drawable/ic_skip.xml
Normal file
11
app/src/main/res/drawable/ic_skip.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="32"
|
||||
android:viewportHeight="32"
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#111918"
|
||||
android:pathData="M20.164,16 L5.098,28.555V3.445ZM12.631,3.445V8.088L22.125,16 12.631,23.912v4.643L27.697,16Z"
|
||||
android:strokeWidth="1" />
|
||||
</vector>
|
10
app/src/main/res/drawable/ic_speed.xml
Normal file
10
app/src/main/res/drawable/ic_speed.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="512"
|
||||
android:viewportHeight="512"
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M430.87,128.99l11.91,-11.91c6.38,-6.38 6.38,-16.73 0,-23.11c-6.38,-6.38 -16.73,-6.38 -23.11,0l-11.9,11.9c-36.81,-32.03 -83.82,-52.64 -135.43,-56.26V32.68h4.36c9.02,0 16.34,-7.32 16.34,-16.34c0,-9.02 -7.32,-16.34 -16.34,-16.34h-41.4c-9.02,0 -16.34,7.32 -16.34,16.34c0,9.02 7.32,16.34 16.34,16.34h4.36v16.92c-51.62,3.62 -98.62,24.22 -135.43,56.26L92.33,93.97c-6.38,-6.38 -16.73,-6.38 -23.11,0c-6.38,6.38 -6.38,16.73 0,23.11l11.91,11.91c-35.26,40.63 -56.62,93.63 -56.62,151.52C24.51,408.15 128.36,512 256,512s231.49,-103.85 231.49,-231.49C487.49,222.62 466.13,169.62 430.87,128.99zM256,323.54c-23.73,0 -43.03,-19.3 -43.03,-43.03c0,-17.94 11.04,-33.35 26.69,-39.8v-77.31c0,-9.02 7.32,-16.34 16.34,-16.34c9.02,0 16.34,7.32 16.34,16.34v77.31c15.65,6.45 26.69,21.85 26.69,39.8C299.03,304.24 279.73,323.54 256,323.54z" />
|
||||
</vector>
|
10
app/src/main/res/drawable/ic_time.xml
Normal file
10
app/src/main/res/drawable/ic_time.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="60"
|
||||
android:viewportHeight="60"
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M30,0.061c-16.542,0 -30,13.458 -30,30s13.458,29.879 30,29.879s30,-13.337 30,-29.879S46.542,0.061 30,0.061zM32,30.939c0,1.104 -0.896,2 -2,2H14c-1.104,0 -2,-0.896 -2,-2s0.896,-2 2,-2h14v-22c0,-1.104 0.896,-2 2,-2s2,0.896 2,2V30.939z" />
|
||||
</vector>
|
@ -1,10 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?android:attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M16.24,7.76C15.07,6.59 13.54,6 12,6v6l-4.24,4.24c2.34,2.34 6.14,2.34 8.49,0 2.34,-2.34 2.34,-6.14 -0.01,-8.48zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z" />
|
||||
</vector>
|
10
app/src/main/res/drawable/ic_trending.xml
Normal file
10
app/src/main/res/drawable/ic_trending.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="52"
|
||||
android:viewportHeight="52"
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M50.1,30.56a1.16,1.16 0,0 1,-2 0.82L42.73,26 30.32,36.65a3.39,3.39 0,0 1,-4.92 0l-7.49,-8.54L4.57,39.81a1.13,1.13 0,0 1,-1.64 0l-0.59,-0.59a1.13,1.13 0,0 1,0 -1.64L15.46,19.68a3.39,3.39 0,0 1,4.92 0l7.49,7.49 7.61,-8.78 -4.92,-4.45a1.26,1.26 0,0 1,0.82 -2.11H47.76A2.35,2.35 0,0 1,50 14.3Z" />
|
||||
</vector>
|
@ -1,11 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
|
||||
android:viewportWidth="300"
|
||||
android:viewportHeight="300"
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M12,16Q11.575,16 11.288,15.712Q11,15.425 11,15V7.85L9.125,9.725Q8.825,10.025 8.425,10.025Q8.025,10.025 7.7,9.7Q7.4,9.4 7.413,8.987Q7.425,8.575 7.7,8.3L11.3,4.7Q11.45,4.55 11.625,4.487Q11.8,4.425 12,4.425Q12.2,4.425 12.375,4.487Q12.55,4.55 12.7,4.7L16.3,8.3Q16.6,8.6 16.587,9.012Q16.575,9.425 16.3,9.7Q16,10 15.588,10.012Q15.175,10.025 14.875,9.725L13,7.85V15Q13,15.425 12.713,15.712Q12.425,16 12,16ZM6,20Q5.175,20 4.588,19.413Q4,18.825 4,18V16Q4,15.575 4.287,15.287Q4.575,15 5,15Q5.425,15 5.713,15.287Q6,15.575 6,16V18Q6,18 6,18Q6,18 6,18H18Q18,18 18,18Q18,18 18,18V16Q18,15.575 18.288,15.287Q18.575,15 19,15Q19.425,15 19.712,15.287Q20,15.575 20,16V18Q20,18.825 19.413,19.413Q18.825,20 18,20Z" />
|
||||
android:pathData="M150,0C67.16,0 0,67.16 0,150s67.16,150 150,150C232.83,300 300,232.84 300,150C300,67.16 232.83,0 150,0zM110.97,81.48l31.71,-31.71c2.08,-2.08 4.79,-3.11 7.51,-3.11c0.03,0 0.05,0 0.08,0c0.03,0 0.05,0 0.08,0c2.71,0 5.43,1.03 7.51,3.11l31.71,31.71c4.15,4.15 4.15,10.87 0,15.02c-2.07,2.08 -4.79,3.11 -7.51,3.11c-2.72,0 -5.44,-1.04 -7.51,-3.11l-14.02,-14.01v32.26v20.75v3.89c0,5.87 -4.76,10.62 -10.62,10.62c-5.87,0 -10.62,-4.75 -10.62,-10.62v-3.89v-20.75V83.21l-13.3,13.3c-2.08,2.08 -4.79,3.11 -7.51,3.11c-2.72,0 -5.44,-1.04 -7.51,-3.11C106.82,92.36 106.82,85.63 110.97,81.48zM231.58,209.32h-0c0,14.34 -14.06,25.57 -32.01,25.57h-99.13c-17.94,0 -32.01,-11.23 -32.01,-25.57V140.31c0,-14.34 14.06,-25.57 32.01,-25.57h13.39c1.52,0.27 3.08,0.43 4.66,0.43c1.57,0 3.12,-0.16 4.63,-0.43h0.61v20.75h-23.28c-7.26,0 -11.26,3.62 -11.26,4.82v69.01c0,1.2 3.99,4.82 11.26,4.82h99.14c7.26,0 11.26,-3.62 11.26,-4.82V140.31c0,-1.2 -3.99,-4.82 -11.26,-4.82h-23.49v-20.75h1.44c1.48,0.26 2.99,0.43 4.53,0.43c1.58,0 3.13,-0.16 4.66,-0.43h12.86c17.95,0 32.01,11.23 32.01,25.57V209.32z" />
|
||||
</vector>
|
||||
|
10
app/src/main/res/drawable/ic_video.xml
Normal file
10
app/src/main/res/drawable/ic_video.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="512"
|
||||
android:viewportHeight="512"
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M395.6,69.8L325.8,0h-58.2l69.8,69.8H395.6zM23.3,0H0v69.8h93.1L23.3,0zM244.4,69.8L174.5,0h-58.2l69.8,69.8H244.4zM418.9,162.9h-93.1l69.8,-69.8h-58.2l-69.8,69.8h-93.1l69.8,-69.8h-58.2l-69.8,69.8H23.3l69.8,-69.8H0v372.4C0,491.1 20.9,512 46.5,512h418.9c25.7,0 46.5,-20.9 46.5,-46.5V93.1h-23.3L418.9,162.9zM186.2,442.2V232.7l186.2,104.7L186.2,442.2zM418.9,0l69.8,69.8H512V0H418.9z" />
|
||||
</vector>
|
@ -1,10 +1,13 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?android:attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
android:viewportWidth="28"
|
||||
android:viewportHeight="28"
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M17,10.5V7c0,-0.55 -0.45,-1 -1,-1H4c-0.55,0 -1,0.45 -1,1v10c0,0.55 0.45,1 1,1h12c0.55,0 1,-0.45 1,-1v-3.5l4,4v-11l-4,4z" />
|
||||
android:fillColor="#212121"
|
||||
android:pathData="M5.25,5.5C3.455,5.5 2,6.955 2,8.75V19.25C2,21.045 3.455,22.5 5.25,22.5H14.75C16.545,22.5 18,21.045 18,19.25V8.75C18,6.955 16.545,5.5 14.75,5.5H5.25Z" />
|
||||
<path
|
||||
android:fillColor="#212121"
|
||||
android:pathData="M23.123,20.643L19.5,17.094V10.999L23.112,7.371C23.899,6.58 25.248,7.138 25.248,8.253V19.75C25.248,20.858 23.914,21.418 23.123,20.643Z" />
|
||||
</vector>
|
||||
|
@ -36,6 +36,6 @@
|
||||
android:backgroundTint="?attr/colorOnPrimary"
|
||||
android:text="@string/unsubscribe"
|
||||
android:textSize="11dp"
|
||||
android:textColor="@android:color/white"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
app:cornerRadius="20dp" />
|
||||
</RelativeLayout>
|
@ -23,15 +23,7 @@
|
||||
|
||||
<Button
|
||||
android:id="@+id/addToPlaylist"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="right"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:padding="8dp"
|
||||
android:text="@string/addToPlaylist"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
android:textSize="14sp" />
|
||||
style="@style/CustomDialogButton" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
@ -15,21 +14,7 @@
|
||||
android:layout_margin="10dp"
|
||||
android:textSize="20sp" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:hintEnabled="false"
|
||||
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
|
||||
app:boxCornerRadiusBottomStart="15dp"
|
||||
app:boxCornerRadiusBottomEnd="15dp"
|
||||
app:boxCornerRadiusTopEnd="15dp"
|
||||
app:boxCornerRadiusTopStart="15dp">
|
||||
<com.google.android.material.textfield.TextInputLayout style="@style/CustomDialogTextInputLayout">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/playlist_name"
|
||||
@ -49,28 +34,13 @@
|
||||
|
||||
<Button
|
||||
android:id="@+id/cancel_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/cancel"
|
||||
android:layout_gravity="right"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
android:textSize="14sp"
|
||||
android:padding="8dp"
|
||||
android:layout_marginBottom="8dp" />
|
||||
style="@style/CustomDialogButton" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/create_new_playlist"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/createPlaylist"
|
||||
android:layout_gravity="right"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
android:textSize="14sp"
|
||||
android:padding="8dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginBottom="8dp" />
|
||||
style="@style/CustomDialogButton" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
@ -15,20 +14,7 @@
|
||||
android:layout_margin="10dp"
|
||||
android:textSize="20sp" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:hintEnabled="false"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
|
||||
app:boxCornerRadiusBottomStart="15dp"
|
||||
app:boxCornerRadiusBottomEnd="15dp"
|
||||
app:boxCornerRadiusTopEnd="15dp"
|
||||
app:boxCornerRadiusTopStart="15dp">
|
||||
<com.google.android.material.textfield.TextInputLayout style="@style/CustomDialogTextInputLayout">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/instanceName"
|
||||
@ -39,22 +25,18 @@
|
||||
android:padding="12dp" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:hintEnabled="false"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
<com.google.android.material.textfield.TextInputLayout style="@style/CustomDialogTextInputLayout">
|
||||
|
||||
app:boxCornerRadiusBottomStart="15dp"
|
||||
app:boxCornerRadiusBottomEnd="15dp"
|
||||
app:boxCornerRadiusTopEnd="15dp"
|
||||
app:boxCornerRadiusTopStart="15dp"
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/instanceFrontendUrl"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/instance_frontend_url"
|
||||
android:inputType="text"
|
||||
android:padding="12dp" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
>
|
||||
<com.google.android.material.textfield.TextInputLayout style="@style/CustomDialogTextInputLayout">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/instanceApiUrl"
|
||||
@ -73,30 +55,13 @@
|
||||
|
||||
<Button
|
||||
android:id="@+id/cancel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/cancel"
|
||||
android:layout_gravity="end"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
android:textSize="14sp"
|
||||
android:padding="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
style="?android:attr/buttonBarButtonStyle" />
|
||||
style="@style/CustomDialogButton" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/addInstance"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/addInstance"
|
||||
android:layout_gravity="end"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
android:textSize="14sp"
|
||||
android:padding="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
style="?android:attr/buttonBarButtonStyle" />
|
||||
style="@style/CustomDialogButton" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -28,15 +28,7 @@
|
||||
|
||||
<Button
|
||||
android:id="@+id/download"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/download"
|
||||
android:layout_gravity="right"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
android:textSize="14sp"
|
||||
android:padding="8dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginBottom="8dp" />
|
||||
style="@style/CustomDialogButton" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
@ -15,20 +14,7 @@
|
||||
android:layout_margin="10dp"
|
||||
android:textSize="20sp" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:hintEnabled="false"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
|
||||
app:boxCornerRadiusBottomStart="15dp"
|
||||
app:boxCornerRadiusBottomEnd="15dp"
|
||||
app:boxCornerRadiusTopEnd="15dp"
|
||||
app:boxCornerRadiusTopStart="15dp">
|
||||
<com.google.android.material.textfield.TextInputLayout style="@style/CustomDialogTextInputLayout">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/username"
|
||||
@ -39,22 +25,7 @@
|
||||
android:padding="12dp" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:hintEnabled="false"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
|
||||
app:boxCornerRadiusBottomStart="15dp"
|
||||
app:boxCornerRadiusBottomEnd="15dp"
|
||||
app:boxCornerRadiusTopEnd="15dp"
|
||||
app:boxCornerRadiusTopStart="15dp"
|
||||
|
||||
>
|
||||
<com.google.android.material.textfield.TextInputLayout style="@style/CustomDialogTextInputLayout">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/password"
|
||||
@ -74,28 +45,13 @@
|
||||
|
||||
<Button
|
||||
android:id="@+id/register"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/register"
|
||||
android:layout_gravity="right"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
android:textSize="14sp"
|
||||
android:padding="8dp"
|
||||
android:layout_marginBottom="8dp" />
|
||||
style="@style/CustomDialogButton" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/login"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/login"
|
||||
android:layout_gravity="right"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
android:textSize="14sp"
|
||||
android:padding="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginBottom="8dp" />
|
||||
style="@style/CustomDialogButton" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -23,15 +23,7 @@
|
||||
|
||||
<Button
|
||||
android:id="@+id/logout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/logout"
|
||||
android:layout_gravity="right"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
android:textSize="14sp"
|
||||
android:padding="8dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginBottom="8dp" />
|
||||
style="@style/CustomDialogButton" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -113,6 +113,7 @@
|
||||
android:paddingLeft="@dimen/exo_styled_bottom_bar_time_padding"
|
||||
android:paddingRight="@dimen/exo_styled_bottom_bar_time_padding"
|
||||
android:layout_gravity="center_vertical|start"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layoutDirection="ltr">
|
||||
|
||||
<TextView
|
||||
@ -132,6 +133,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layoutDirection="ltr">
|
||||
|
||||
<ImageButton
|
||||
@ -191,13 +193,28 @@
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<View
|
||||
android:id="@id/exo_progress_placeholder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="15dp"
|
||||
<LinearLayout
|
||||
android:id="@+id/progress_bar"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginBottom="1dp"
|
||||
android:background="@color/exo_bottom_bar_background" />
|
||||
android:layout_above="@id/exo_basic_controls"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="15dp">
|
||||
|
||||
<com.google.android.exoplayer2.ui.DefaultTimeBar
|
||||
android:id="@id/exo_progress"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="15dp"
|
||||
app:bar_height="2dp"
|
||||
app:scrubber_color="?attr/colorOnPrimary"
|
||||
app:played_color="?attr/colorOnSecondary"
|
||||
app:scrubber_enabled_size="12dp"
|
||||
app:scrubber_dragged_size="15dp"
|
||||
android:background="@color/exo_bottom_bar_background" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@id/exo_minimal_controls"
|
||||
@ -225,21 +242,21 @@
|
||||
android:padding="@dimen/exo_styled_controls_padding"
|
||||
android:clipToPadding="false">
|
||||
|
||||
<ImageButton
|
||||
android:id="@id/exo_prev"
|
||||
style="@style/ExoStyledControls.Button.Center.Previous" />
|
||||
|
||||
<include layout="@layout/exo_styled_player_control_rewind_button" />
|
||||
<Button
|
||||
android:id="@id/exo_rew_with_amount"
|
||||
android:paddingLeft="4dp"
|
||||
android:paddingRight="4dp"
|
||||
style="@style/ExoStyledControls.Button.Center.RewWithAmount" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@id/exo_play_pause"
|
||||
style="@style/ExoStyledControls.Button.Center.PlayPause" />
|
||||
|
||||
<include layout="@layout/exo_styled_player_control_ffwd_button" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@id/exo_next"
|
||||
style="@style/ExoStyledControls.Button.Center.Next" />
|
||||
<Button
|
||||
android:id="@id/exo_ffwd_with_amount"
|
||||
android:paddingLeft="4dp"
|
||||
android:paddingRight="4dp"
|
||||
style="@style/ExoStyledControls.Button.Center.FfwdWithAmount" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -21,26 +21,16 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:text="LibreTube"
|
||||
android:textSize="27sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/app_version"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="30dp"
|
||||
android:textSize="18sp" />
|
||||
<View style="@style/HorizontalLine" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/website"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="20dp"
|
||||
android:paddingVertical="10dp">
|
||||
style="@style/AboutItem">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
@ -55,13 +45,11 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View style="@style/HorizontalLine" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/contributing"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="20dp"
|
||||
android:paddingVertical="10dp">
|
||||
style="@style/AboutItem">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
@ -76,13 +64,11 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View style="@style/HorizontalLine" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/authors"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="20dp"
|
||||
android:paddingVertical="10dp">
|
||||
style="@style/AboutItem">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
@ -97,13 +83,30 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View style="@style/HorizontalLine" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/piped"
|
||||
style="@style/AboutItem">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:text="@string/piped"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:text="@string/piped_summary" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View style="@style/HorizontalLine" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/donate"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="20dp"
|
||||
android:paddingVertical="10dp">
|
||||
style="@style/AboutItem">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
@ -118,13 +121,11 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View style="@style/HorizontalLine" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/license"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="20dp"
|
||||
android:paddingVertical="10dp">
|
||||
style="@style/AboutItem">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
|
@ -80,10 +80,10 @@
|
||||
android:layout_alignParentEnd="true"
|
||||
android:backgroundTint="?attr/colorOnPrimary"
|
||||
android:text="@string/subscribe"
|
||||
android:textColor="@android:color/white"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="11sp"
|
||||
android:drawableLeft="@drawable/ic_bell_small"
|
||||
android:drawableTint="@android:color/white" />
|
||||
android:drawableTint="?android:attr/textColorPrimary" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -1,51 +1,64 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".fragments.PlaylistFragment"
|
||||
android:id="@+id/playlist_scrollview">
|
||||
tools:context=".fragments.PlaylistFragment">
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
<ProgressBar
|
||||
android:id="@+id/playlist_progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:visibility="gone" />
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/playlist_scrollview">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/playlist_name"
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text=""
|
||||
android:textSize="24sp"
|
||||
android:textStyle="bold"
|
||||
android:padding="8dp" />
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/playlist_uploader"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/playlist_totVideos"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:descendantFocusability="blocksDescendants">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/playlist_recView"
|
||||
<TextView
|
||||
android:id="@+id/playlist_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:nestedScrollingEnabled="false" />
|
||||
</RelativeLayout>
|
||||
android:text=""
|
||||
android:textSize="24sp"
|
||||
android:textStyle="bold"
|
||||
android:padding="8dp" />
|
||||
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
android:id="@+id/playlist_uploader"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/playlist_totVideos"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp" />
|
||||
|
||||
</ScrollView>
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:descendantFocusability="blocksDescendants">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/playlist_recView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:nestedScrollingEnabled="false" />
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
</RelativeLayout>
|
@ -3,6 +3,6 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:minHeight="48dp"
|
||||
android:minHeight="42dp"
|
||||
android:textAlignment="center"
|
||||
android:textSize="16sp" />
|
||||
|
@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="instances">اختر نظير</string>
|
||||
<string name="customInstance">أضف نظير مخصص</string>
|
||||
<string name="choose_quality_dialog">اختر الجودة:</string>
|
||||
<string name="customInstance">نظير مخصص</string>
|
||||
<string name="choose_quality_dialog">الجودة</string>
|
||||
<string name="registered">تم إنشاء حساب بنجاح! تستطيع الآن أن تشترك بالقنوات التي تريدها.</string>
|
||||
<string name="search_hint">بحث</string>
|
||||
<string name="unsubscribe">إلغاء الاشتراك</string>
|
||||
@ -12,8 +12,8 @@
|
||||
<string name="password">كلمة المرور</string>
|
||||
<string name="cancel">إلغاء</string>
|
||||
<string name="loggedIn">تم تسجيل الدخول بنجاح.</string>
|
||||
<string name="login_first">سجل الدخول وحاول مرة أخرى!</string>
|
||||
<string name="login_register">تسجيل\\إنشاء حساب</string>
|
||||
<string name="login_first">سجل الدخول وحاول مرة أخرى.</string>
|
||||
<string name="login_register">تسجيل/إنشاء حساب</string>
|
||||
<string name="please_login">رجاءً سجل دخولك أو أنشئ حساب في الإعدادات أولا!</string>
|
||||
<string name="save">حفظ</string>
|
||||
<string name="loggedout">تم تسجيل الخروج بنجاح.</string>
|
||||
@ -25,7 +25,7 @@
|
||||
<string name="already_logged_in">لقد سجلت دخولك من قبل، تستطيع أن تسجل خروجك إذا أردت.</string>
|
||||
<string name="subscribeIsEmpty">اشترك ببعض القنوات أولا.</string>
|
||||
<string name="cannotDownload">لم يُقدر على تنزيل هذا البث.</string>
|
||||
<string name="region">اختر المنطقة</string>
|
||||
<string name="region">المنطقة</string>
|
||||
<string name="importsuccess">تم الاشتراك</string>
|
||||
<string name="dlcomplete">تم التنزيل.</string>
|
||||
<string name="downloadfailed">فشل التنزيل.</string>
|
||||
@ -33,45 +33,45 @@
|
||||
<string name="import_from_yt">استيراد الاشتراكات</string>
|
||||
<string name="app_theme">سمة التطبيق</string>
|
||||
<string name="empty">لا يمكن لاسم المستخدم وكلمة المرور أن يكونوا فارغين.</string>
|
||||
<string name="notgmail">هذا ليس حساب الجيميل Gmail الخاص بك.</string>
|
||||
<string name="notgmail">هذا من أجل حساب LibreTube الخاص بك.</string>
|
||||
<string name="defres">جودة الفيديو الافتراضية</string>
|
||||
<string name="grid">اختر أعمدة الشبكة</string>
|
||||
<string name="grid">أعمدة الشبكة</string>
|
||||
<string name="emptyList">لا شيء هنا.</string>
|
||||
<string name="deletePlaylist">حذف قائمة التشغيل</string>
|
||||
<string name="areYouSure">هل أنت متأكد من حذف قائمة التشغيل هذه؟</string>
|
||||
<string name="createPlaylist">إنشاء قائمة تشغيل</string>
|
||||
<string name="playlistCreated">تم إنشاء قائمة التشغيل!</string>
|
||||
<string name="playlistCreated">تم إنشاء قائمة التشغيل.</string>
|
||||
<string name="playlistName">اسم قائمة التشغيل</string>
|
||||
<string name="success">نجاح!</string>
|
||||
<string name="success">انتهى.</string>
|
||||
<string name="fail">فشل ذريع :(</string>
|
||||
<string name="dlisinprogress">هناك عملية تنزيل أخرى، رجاء انتظر قليلا ريثما تنتهي.</string>
|
||||
<string name="dlisinprogress">برجاء الانتظار حتى تنتهي كل عمليات التنزيل…</string>
|
||||
<string name="vlc">فتح باستخدام VLC</string>
|
||||
<string name="unknown_error">خطأ في الشبكة.</string>
|
||||
<string name="server_error">تعرض الخادم لخطأ ما. لما لا تجرب نظير آخر؟</string>
|
||||
<string name="error">حدث خطأ ما.</string>
|
||||
<string name="addToPlaylist">إضافة إلى قائمة التشغيل</string>
|
||||
<string name="about">معلومة</string>
|
||||
<string name="about">حول</string>
|
||||
<string name="emptyPlaylistName">لا يمكن لاسم قائمة التشغيل أن يكون فارغا</string>
|
||||
<string name="startpage">الرئيسية</string>
|
||||
<string name="changeLanguage">تغيير اللغة</string>
|
||||
<string name="systemDefault">افتراضي النظام</string>
|
||||
<string name="lightTheme">السمة الفاتحة</string>
|
||||
<string name="changeLanguage">اللغة</string>
|
||||
<string name="systemDefault">النظام</string>
|
||||
<string name="lightTheme">الفاتح</string>
|
||||
<string name="library">المكتبة</string>
|
||||
<string name="import_from_yt_summary">من اليوتيوب او نيوبايب</string>
|
||||
<string name="subscriptions">الاشتراكات</string>
|
||||
<string name="videos">الفيديوهات</string>
|
||||
<string name="systemLanguage">لغة النظام</string>
|
||||
<string name="darkTheme">السمة الداكنة</string>
|
||||
<string name="systemLanguage">النظام</string>
|
||||
<string name="darkTheme">الداكن</string>
|
||||
<string name="subscribers">%1$s مشتركين</string>
|
||||
<string name="noInternet">غير متصل بالإنترنت</string>
|
||||
<string name="noInternet">أتصل بالانترنت أولاً.</string>
|
||||
<string name="retry">أعد المحاولة</string>
|
||||
<string name="comments">تعليقات</string>
|
||||
<string name="settings">إعدادات</string>
|
||||
<string name="location">موقع</string>
|
||||
<string name="settings">الإعدادات</string>
|
||||
<string name="location">الموقع</string>
|
||||
<string name="website">موقع إنترنت</string>
|
||||
<string name="videoCount">%1$sفيديوهات</string>
|
||||
<string name="instance">سيرفر</string>
|
||||
<string name="customization">تخصيص</string>
|
||||
<string name="customization">تخصيصات</string>
|
||||
<string name="history">السجل</string>
|
||||
<string name="channels">قنوات</string>
|
||||
<string name="all">كل</string>
|
||||
@ -97,23 +97,97 @@
|
||||
<string name="category_segments">الاجزاء</string>
|
||||
<string name="category_selfpromo">الترويج غير المدفوع / الذاتي</string>
|
||||
<string name="category_selfpromo_description">على غرار \"الراعي\" باستثناء الترويج غير المدفوع أو الذاتي. يتضمن ذلك أقساما حول البضائع أو التبرعات أو المعلومات حول من تعاونوا معه.</string>
|
||||
<string name="category_interaction">تذكير التفاعل (اشتراك)</string>
|
||||
<string name="category_interaction">تذكير التفاعل (إعجاب واشتراك)</string>
|
||||
<string name="license">الترخيص</string>
|
||||
<string name="color_accent">لون اللهجة</string>
|
||||
<string name="color_accent">اللون الثانوي</string>
|
||||
<string name="color_red">أحمر</string>
|
||||
<string name="color_blue">أزرق</string>
|
||||
<string name="color_yellow">أصفر</string>
|
||||
<string name="color_green">أخضر</string>
|
||||
<string name="color_purple">بنفسجي</string>
|
||||
<string name="oledTheme">نسق OLED</string>
|
||||
<string name="material_you">المواد أنت</string>
|
||||
<string name="category_sponsor_description">ترويج مدفوع وإحالات مدفوعة وإعلانات مباشرة. ليس للترويج الذاتي أو الصيحات المجانية لأسباب / منشئي محتوى / مواقع ويب / منتجات يحبونها.</string>
|
||||
<string name="material_you">تصميم المواد انت 3</string>
|
||||
<string name="category_sponsor_description">ترويج مدفوع وإحالات مدفوعة وإعلانات مباشرة. ليس للترويج الذاتي أو الصيحات المجانية لأسباب / منشىء المحتوى / مواقع الويب / او منتجات يحبونها.</string>
|
||||
<string name="category_outro">بطاقات النهاية / الاعتمادات</string>
|
||||
<string name="sponsorblock_notifications">الإشعارات</string>
|
||||
<string name="app_icon">أيقونة التطبيق</string>
|
||||
<string name="app_icon">أيقونة</string>
|
||||
<string name="enabled">مفعل</string>
|
||||
<string name="disabled">معطل</string>
|
||||
<string name="piped">الانابيب</string>
|
||||
<string name="youtube">يوتيوب</string>
|
||||
<string name="playOnBackground">تشغيل في الخلفية</string>
|
||||
<string name="no_replies">هذا التعليق ليس له ردود.</string>
|
||||
<string name="authors">المؤلفون</string>
|
||||
<string name="internal_storage">وحدة التخزين الداخلية</string>
|
||||
<string name="downloads_directory">مجلد التنزيل</string>
|
||||
<string name="sdcard">بطاقة الذاكرة</string>
|
||||
<string name="music_directory">مجلد الموسيقى</string>
|
||||
<string name="views">%1$s مشاهدة</string>
|
||||
<string name="defaultIcon">الإفتراضي</string>
|
||||
<string name="website_summary">قم بزيارة الموقع لمزيد من المعلومات حول التطبيق ومميزاته.</string>
|
||||
<string name="contributing_summary">تقديم الأفكار والترجمات وتغييرات التصميم وتنظيف وكتابة التعليمات البرمجية. كلما تم القيام بالمزيد كلما كان ذلك أفضل!</string>
|
||||
<string name="update">ابحث عن الإصدار الجديد</string>
|
||||
<string name="update_summary">انقر لمعرفة ما إذا كان التطبيق محدثا أم لا.</string>
|
||||
<string name="app_uptodate">يتم حاليا تشغيل أحدث إصدار.</string>
|
||||
<string name="no_update_available">انت تقوم الان بتشغيل أحدث إصدار.</string>
|
||||
<string name="download_folder">الاسم</string>
|
||||
<string name="download_folder_summary">يتم تخزين اسم المجلد الذي تم تنزيله في الوسائط.</string>
|
||||
<string name="fireIcon">حريق عصري</string>
|
||||
<string name="torchIcon">الشعلة العصرية</string>
|
||||
<string name="shapedIcon">شكل سخيف</string>
|
||||
<string name="flameIcon">اللهب الطائر</string>
|
||||
<string name="birdIcon">الطيور المعززة</string>
|
||||
<string name="invalid_url">الرجاء إدخال عنوان URL يعمل</string>
|
||||
<string name="version">الإصدار %1$s</string>
|
||||
<string name="about_summary">تعرف على فريق LibreTube وكيف يحدث كل شيء.</string>
|
||||
<string name="related_streams">المحتويات ذات الصلة</string>
|
||||
<string name="related_streams_summary">اعرض التدفقات ذات الصلة بجانب ما تشاهده.</string>
|
||||
<string name="show_chapters">عرض الفصول</string>
|
||||
<string name="hide_chapters">إخفاء الفصول</string>
|
||||
<string name="category_filler">حشو لاداع له / او النكات</string>
|
||||
<string name="category_filler_description">للمشاهد العرضية المضافة فقط للحشو أو الفكاهة غير المطلوبة لفهم المحتوى الرئيسي للفيديو.</string>
|
||||
<string name="category_music_offtopic">الموسيقى: قسم غير الموسيقى</string>
|
||||
<string name="category_preview">معاينة / خلاصة</string>
|
||||
<string name="category_preview_description">بالنسبة للأجزاء التي تعرض بالتفصيل المحتوى القادم في هذا أو مقاطع الفيديو المستقبلية في سلسلتها ، لكن لا تقدم معلومات إضافية. إذا كانت تتضمن مقاطع تظهر هنا فقط ، فمن المحتمل جدًا أن تكون هذه الفئة الخطأ.</string>
|
||||
<string name="instance_api_url">عنوان URL لمثيل واجهة برمجة التطبيقات</string>
|
||||
<string name="addInstance">إضافة مثيل</string>
|
||||
<string name="empty_instance">املأ الاسم وعنوان URL لواجهة برمجة التطبيقات.</string>
|
||||
<string name="playerVideoFormat">تنسيق الفيديو لمشغل</string>
|
||||
<string name="category_music_offtopic_description">فقط للاستخدام في مقاطع الفيديو الموسيقية. يجب أن تغطي أجزاء من الفيديو وليس جزءا من الخلطات الرسمية. في النهاية ، يجب أن يشبه الفيديو Spotify أو أي إصدار مختلط آخر قدر الإمكان ، أو يقلل من التحدث أو الانحرافات الأخرى.</string>
|
||||
<string name="buffering_goal">التحميل المسبق</string>
|
||||
<string name="buffering_goal_summary">الحد الأقصى لعدد ثواني الفيديو للتخزين المؤقت.</string>
|
||||
<string name="update_available">الإصدار %1$s متاح</string>
|
||||
<string name="downloads">التنزيلات</string>
|
||||
<string name="contributing">المساهمة</string>
|
||||
<string name="donate">تبرّع</string>
|
||||
<string name="legacyIcon">الإرث الضائع</string>
|
||||
<string name="gradientIcon">التدرج اللوني</string>
|
||||
<string name="instance_summary">الأنابيب ، تسجيل الدخول ، الاشتراكات</string>
|
||||
<string name="instance_name">اسم المثيل</string>
|
||||
<string name="clear_customInstances">مسح المثيلات المخصصة</string>
|
||||
<string name="live">مباشر</string>
|
||||
<string name="player_autoplay">التشغيل التلقائي</string>
|
||||
<string name="update_available_text">انتقل إلى الإصدارات على GitHub لتنزيله؟</string>
|
||||
<string name="appearance">المظهر</string>
|
||||
<string name="app_behavior">السلوك</string>
|
||||
<string name="video_format">تنسيق الفيديو</string>
|
||||
<string name="download_directory">تنزيل إلى</string>
|
||||
<string name="video_format_summary">تحويل الملفات إذا تم تنزيل كل من الصوت والفيديو.</string>
|
||||
<string name="download_directory_summary">حيث يتم تخزين الوسائط التي تم تنزيلها.</string>
|
||||
<string name="advanced">متقدم</string>
|
||||
<string name="player">المشغل</string>
|
||||
<string name="license_summary">GPLv3+ هو ترخيص حر متروك للحقوق. الاستخدام والدراسة والتغيير والمشاركة؛ مع الجميع.</string>
|
||||
<string name="donate_summary">أعط ما يستحقه هذا لك ، إذا استطعت. فريق LibreTube أصغر من تبرعك أو مساعدتك.</string>
|
||||
<string name="playback_speed">سرعة التشغيل الافتراضية</string>
|
||||
<string name="appearance_summary">اضبط التطبيق حسب رغبتك.</string>
|
||||
<string name="authors_summary">تعرف على الجميع.</string>
|
||||
<string name="advanced_summary">المشغل، التنزيلات، التاريخ</string>
|
||||
<string name="customInstance_summary">إضافة مثيل مخصص (على مسؤوليتك الخاصة)</string>
|
||||
<string name="movies_directory">مجلد الأفلام</string>
|
||||
<string name="shareTo">مشاركة عنوان URL إلى</string>
|
||||
<string name="no_audio">لا يوجد صوت</string>
|
||||
<string name="no_video">لا يوجد فيديو</string>
|
||||
<string name="audio">صوت</string>
|
||||
<string name="video">فيديو</string>
|
||||
<string name="downloading">قيد التحميل</string>
|
||||
</resources>
|
@ -40,7 +40,7 @@
|
||||
<string name="music_playlists">YT Musiqi Pleylistləri</string>
|
||||
<string name="defaultTab">Defolt Tab</string>
|
||||
<string name="sponsorblock">SponsorBlok</string>
|
||||
<string name="sponsorblock_summary">https://sponsor.ajay.app API istifadə edir</string>
|
||||
<string name="sponsorblock_summary">https://sponsor.ajay.app API\'sini istifadə edir</string>
|
||||
<string name="category_intro_description">Həqiqi məzmunu olmayan aralıq. Fasilə, statik çərçivə, təkrarlanan animasiya ola bilər. Məlumat ehtiva edən keçidlər üçün istifadə edilməməlidir.</string>
|
||||
<string name="category_outro">Son kartlar və kanal nişanı</string>
|
||||
<string name="category_outro_description">Bitişdən sonra məlumat. Məlumatla nəticə çıxarmaq üçün deyil.</string>
|
||||
@ -57,7 +57,7 @@
|
||||
<string name="retry">Yenidən Cəhd Edin</string>
|
||||
<string name="segment_skipped">Seqment ötürüldü</string>
|
||||
<string name="sponsorblock_state">Açıq</string>
|
||||
<string name="category_sponsor_description">Ödənişli reklam, yönləndirmə və birbaşa reklamlar. Özünü tanıtmaq və ya bəyəndikləri səbəblərə/yaradıcılara/veb-saytlara/məhsullara pulsuz çağırışlar üçün deyil.</string>
|
||||
<string name="category_sponsor_description">Ödənişli reklam ,tövsiyələr və birbaşa reklamlar. Səbəblərə, yaradıcılara, vebsaytlara və məhsullara özünü reklam və ya pulsuz orijinal çağırışlar üçün deyil.</string>
|
||||
<string name="category_interaction">İnteraksiya xatırlatma(bəyən və abunə ol)</string>
|
||||
<string name="category_intro">Fasilə/Giriş Animasiyası</string>
|
||||
<string name="login_register">Daxil olun/qeydiyyatdan keçin</string>
|
||||
@ -68,12 +68,12 @@
|
||||
<string name="dlcomplete">Endirmə tamamlandı.</string>
|
||||
<string name="dlisinprogress">Bütün endirmələr bitənə qədər gözləyin…</string>
|
||||
<string name="downloadfailed">Endirmək alınmadı.</string>
|
||||
<string name="vlc">VLC-də Açın</string>
|
||||
<string name="vlcerror">VLC-də açmaq mümkün deyil. O, quraşdırılmamış ola bilər.</string>
|
||||
<string name="vlc">VLC\'də Açın</string>
|
||||
<string name="vlcerror">VLC\'də açmaq mümkün deyil. O, quraşdırılmamış ola bilər.</string>
|
||||
<string name="import_from_yt">Abunəlikləri İdxal Edin</string>
|
||||
<string name="import_from_yt_summary">YouTube və ya NewPipe\'dan</string>
|
||||
<string name="app_theme">Mövzu</string>
|
||||
<string name="server_error">Serverdə problem var. Başqa bir serveri cəhd edə bilərsiniz\?</string>
|
||||
<string name="server_error">Serverdə problem var. Başqasını cəhd edə bilərsiniz\?</string>
|
||||
<string name="unknown_error">Şəbəkə xətası.</string>
|
||||
<string name="error">Nəsə xəta baş verdi.</string>
|
||||
<string name="empty">Siz istifadəçi adı və şifrə daxil etməlisiniz.</string>
|
||||
@ -92,8 +92,8 @@
|
||||
<string name="changeLanguage">Dil</string>
|
||||
<string name="systemLanguage">Sistem</string>
|
||||
<string name="systemDefault">Sistem</string>
|
||||
<string name="lightTheme">Açıq mövzu</string>
|
||||
<string name="darkTheme">Tünd mövzu</string>
|
||||
<string name="lightTheme">Açıq</string>
|
||||
<string name="darkTheme">Tünd</string>
|
||||
<string name="subscribers">%1$s abunəçi</string>
|
||||
<string name="videoCount">%1$s video</string>
|
||||
<string name="settings">Tənzimləmələr</string>
|
||||
@ -103,11 +103,11 @@
|
||||
<string name="website">Veb Sayt</string>
|
||||
<string name="color_accent">Vurğular</string>
|
||||
<string name="color_red">Rahatladıcı qırmızı</string>
|
||||
<string name="color_blue">Piksel mavisi</string>
|
||||
<string name="color_blue">Xoşbəxt mavi</string>
|
||||
<string name="color_yellow">Yeeting sarı</string>
|
||||
<string name="color_green">Möhtəşəm yaşıl</string>
|
||||
<string name="color_purple">Zövqlü bənövşəyi</string>
|
||||
<string name="oledTheme">Qara mövzu</string>
|
||||
<string name="oledTheme">Qara</string>
|
||||
<string name="material_you">Mistik Material 3</string>
|
||||
<string name="sponsorblock_notifications">Bildirişlər</string>
|
||||
<string name="enabled">Açıq</string>
|
||||
@ -124,7 +124,7 @@
|
||||
<string name="video_format">Video formatı</string>
|
||||
<string name="video_format_summary">Həm səs, həm də video endirilərsə, faylların dönüşdürülməsi.</string>
|
||||
<string name="download_directory">Bura Endirin</string>
|
||||
<string name="download_directory_summary">Endirilmiş media harada saxlanılır.</string>
|
||||
<string name="download_directory_summary">Endirilmiş medianın saxlandığı yer.</string>
|
||||
<string name="website_summary">Tətbiq və onun xüsusiyyətləri haqqında ətraflı məlumat üçün veb sayta daxil olun.</string>
|
||||
<string name="contributing">Töhfə</string>
|
||||
<string name="contributing_summary">İdeyalar, tərcümələr, dizayn dəyişiklikləri təmin edin, kodu aydınlaşdırın və yazın. Nə qədər çox etsəniz, bir o qədər yaxşıdır!</string>
|
||||
@ -135,50 +135,66 @@
|
||||
<string name="app_uptodate">Ən son versiya işlədilir.</string>
|
||||
<string name="playback_speed">Defolt oynatma sürəti</string>
|
||||
<string name="advanced">Qabaqcıl</string>
|
||||
<string name="player">Oynadıcı</string>
|
||||
<string name="player">Səs və video</string>
|
||||
<string name="appearance_summary">Tətbiqi öz zövqünüzə uyğunlaşdırın.</string>
|
||||
<string name="advanced_summary">Oynadıcı, endirmələr, tarixçə</string>
|
||||
<string name="advanced_summary">Endirmələr, tarixçə</string>
|
||||
<string name="update_summary">Tətbiqin güncəl olub-olmadığını öyrənmək üçün klikləyin.</string>
|
||||
<string name="no_update_available">Ən son versiyanı işlədirsiniz.</string>
|
||||
<string name="live">Canlı</string>
|
||||
<string name="authors">Müəlliflər</string>
|
||||
<string name="authors_summary">Tətbiqi təkmilləşdirməyə kömək edən LibreTube komandası və onun bütün töhfəçiləri ilə tanış olun.</string>
|
||||
<string name="authors_summary">Tətbiqin hazırlanmasında və təkmilləşdirilməsində iştirak edən hər kəslə tanış olun.</string>
|
||||
<string name="no_replies">Bu şərhə cavab yoxdur.</string>
|
||||
<string name="downloads_directory">Endirmə qovluğu</string>
|
||||
<string name="music_directory">Musiqi qovluğu</string>
|
||||
<string name="movies_directory">Film qovluğu</string>
|
||||
<string name="shareTo">URL Paylaşın</string>
|
||||
<string name="shareTo">URL\'ni Paylaşın</string>
|
||||
<string name="download_folder">Ad</string>
|
||||
<string name="sdcard">SD kart</string>
|
||||
<string name="internal_storage">Daxili yaddaş</string>
|
||||
<string name="download_folder_summary">Endirilmiş media qovluğunun adı saxlanılır.</string>
|
||||
<string name="download_folder_summary">Endirilmiş medianın saxlandığı qovluğun adı.</string>
|
||||
<string name="views">%1$s baxış</string>
|
||||
<string name="defaultIcon">Defolt</string>
|
||||
<string name="legacyIcon">İtmiş miras</string>
|
||||
<string name="fireIcon">Dəbli yanğın</string>
|
||||
<string name="gradientIcon">Glib gradyanı</string>
|
||||
<string name="gradientIcon">Pərgar meyli</string>
|
||||
<string name="shapedIcon">Axmaq formada</string>
|
||||
<string name="flameIcon">Uçan alov</string>
|
||||
<string name="birdIcon">Gücləndirilmiş quş</string>
|
||||
<string name="torchIcon">Dəbli fənər</string>
|
||||
<string name="instance_name">Server adı</string>
|
||||
<string name="instance_api_url">Server API url\'si</string>
|
||||
<string name="instance_api_url">Server API URL\'si</string>
|
||||
<string name="addInstance">Server Əlavə Edin</string>
|
||||
<string name="invalid_url">Lütfən, etibarlı url daxil edin</string>
|
||||
<string name="customInstance_summary">Fərdi server əlavə edin (riski özünüzə aiddir</string>
|
||||
<string name="invalid_url">Zəhmət olmasa, işləyən URL\'ni daxil edin</string>
|
||||
<string name="customInstance_summary">Fərdi server əlavə edin (riski özünüzə aiddir)</string>
|
||||
<string name="instance_summary">Piped, giriş, abunəliklər</string>
|
||||
<string name="empty_instance">Siz adı və API url\'ni doldurmalısınız.</string>
|
||||
<string name="empty_instance">Adı və API URL\'ni daxil edin.</string>
|
||||
<string name="clear_customInstances">Fərdi serverləri silin</string>
|
||||
<string name="version">Versiya %1$s</string>
|
||||
<string name="about_summary">LibreTube komandası və bunların necə baş verdiyini öyrənin.</string>
|
||||
<string name="related_streams">Əlaqədar yayımlar</string>
|
||||
<string name="related_streams_summary">Videolara əlaqəli yayımları göstərin.</string>
|
||||
<string name="related_streams">Əlaqədar məzmun</string>
|
||||
<string name="related_streams_summary">Baxdıqlarınızla yanaşı əlaqəli yayımları göstərin.</string>
|
||||
<string name="category_filler">Əlaqəsiz/Zarafatlar</string>
|
||||
<string name="show_chapters">Fəsilləri göstərin</string>
|
||||
<string name="category_music_offtopic">Musiqisizlik: Musiqi olmayan bölmə</string>
|
||||
<string name="show_chapters">Bölmələri göstərin</string>
|
||||
<string name="category_music_offtopic">Musiqi: Musiqisiz Bölmə</string>
|
||||
<string name="category_preview">Önbaxış/Anons</string>
|
||||
<string name="category_preview_description">Eyni seriyanın bu və ya gələcək videolarında nələrin olacağını göstərən, lakin əlavə məlumat təqdim etməyən seqmentlər üçün. Əgər o, yalnız burada görünən klipləri ehtiva edirsə, bu, çox güman ki, düzgün kateqoriya deyil.</string>
|
||||
<string name="hide_chapters">Fəsilləri gizlədin</string>
|
||||
<string name="category_filler_description">Bu, videonun əsas məzmununu başa düşmək üçün tələb olunmayan, yalnız doldurucu və ya yumor üçün əlavə edilmiş tangensial səhnələr üçündür.</string>
|
||||
<string name="category_music_offtopic_description">Bu, yalnız musiqi videolarında istifadə üçündür. O, rəsmi qarışıqların bir hissəsi deyil, videonun hissələrini əhatə etməlidir. Nəhayət, video Spotify və ya hər hansı digər miks versiyasını mümkün qədər yaxından xatırlatmalı və ya danışıq və ya digər diqqəti yayındıran amilləri azaltmalıdır.</string>
|
||||
<string name="category_preview_description">Bu və ya onun seriyasındakı gələcək videolarda qarşıdan gələn məzmunu təfərrüatlandıran, lakin əlavə məlumat təqdim etməyən seqmentlər üçün. Əgər o, yalnız burada görünən klipləri ehtiva edirsə, bu, çox güman ki, yanlış kateqoriyadır.</string>
|
||||
<string name="hide_chapters">Bölmələri gizlədin</string>
|
||||
<string name="category_filler_description">Yalnız doldurucu və ya yumor üçün əlavə edilmiş əlaqəsiz səhnələr üçün,videonun əsas məzmununu başa düşmək tələb olunmur.</string>
|
||||
<string name="category_music_offtopic_description">Yalnız musiqi videolarında istifadə üçün. O, rəsmi qarışıqların bir hissəsi deyil, videonun hissələrini əhatə etməlidir. Sonda video Spotify və ya hər hansı digər qarışıq versiyaya mümkün qədər yaxından bənzəməlidir və ya danışıq və ya digər diqqəti yayındıran amilləri azaltmalıdır.</string>
|
||||
<string name="playerVideoFormat">Oynadıcı üçün video formatı</string>
|
||||
<string name="buffering_goal_summary">Maks. bufer üçün video saniyələrin miqdarı.</string>
|
||||
<string name="buffering_goal">Ön yükləmə</string>
|
||||
<string name="player_autoplay">Avto-oynatma</string>
|
||||
<string name="no_video">Video yoxdur</string>
|
||||
<string name="downloading">Endirilir</string>
|
||||
<string name="video">Video</string>
|
||||
<string name="no_audio">Səs yoxdur</string>
|
||||
<string name="audio">Səs</string>
|
||||
<string name="hideTrendingPage">Populyar səhifəsini gizlədin</string>
|
||||
<string name="quality">Keyfiyyət</string>
|
||||
<string name="behavior">Davranış</string>
|
||||
<string name="player_summary">Keyfiyyət və oynadıcı davranışı</string>
|
||||
<string name="seek_increment">Gəlir axtarın</string>
|
||||
<string name="piped_summary">(Piped) YouTube üçün açıq mənbəli alternativ veb-frontendi, istifadə etdiyimiz API təmin edir. Piped olmasaydı, LibreTube mövcud olmazdı. Onların tərtibatçılarına böyük təşəkkürlər!</string>
|
||||
<string name="instance_frontend_url">Server üçün URL</string>
|
||||
</resources>
|
@ -56,8 +56,8 @@
|
||||
<string name="areYouSure">Bist du sicher, dass du die Wiedergabeliste löschen möchtest\?</string>
|
||||
<string name="about">Über</string>
|
||||
<string name="systemDefault">System</string>
|
||||
<string name="lightTheme">Helles Farbschema</string>
|
||||
<string name="darkTheme">Dunkles Farbschema</string>
|
||||
<string name="lightTheme">Hell</string>
|
||||
<string name="darkTheme">Dunkel</string>
|
||||
<string name="subscribers">%1$s Abonnenten</string>
|
||||
<string name="emptyPlaylistName">Der Name der Wiedergabeliste darf nicht leer sein</string>
|
||||
<string name="import_from_yt_summary">Von YouTube oder NewPipe</string>
|
||||
@ -94,7 +94,7 @@
|
||||
<string name="segment_skipped">Abschnitt übersprungen</string>
|
||||
<string name="category_sponsor">Sponsor</string>
|
||||
<string name="sponsorblock_state">Ein</string>
|
||||
<string name="category_sponsor_description">Bezahlte Werbung, bezahlte Empfehlungen und Direktwerbung. Nicht für Eigenwerbung oder kostenlose Empfehlungen für Anliegen/Ersteller/Websites/Produkte, die sie mögen.</string>
|
||||
<string name="category_sponsor_description">Bezahlte Werbung, bezahlte Verweise und direkte Anzeigen. Nicht für Eigenwerbung oder kostenlose echte Shoutouts für Ursachen, Schöpfer, Websites und Produkte.</string>
|
||||
<string name="category_selfpromo">Unbezahlte/Selbst Promotion</string>
|
||||
<string name="category_interaction">Interaktionserinnerung (mögen und abonnieren)</string>
|
||||
<string name="category_outro_description">Infos nach dem Ende. Nicht für Schlussfolgerungen mit Infos.</string>
|
||||
@ -166,8 +166,19 @@
|
||||
<string name="category_preview">Vorschau/Rückblick</string>
|
||||
<string name="hide_chapters">Kapitel ausblenden</string>
|
||||
<string name="show_chapters">Kapitel anzeigen</string>
|
||||
<string name="buffering_goal">Ziel der Pufferung</string>
|
||||
<string name="buffering_goal">Wird vorgeladen</string>
|
||||
<string name="buffering_goal_summary">Die Anzahl der Sekunden, die Videos maximal vorgeladen werden.</string>
|
||||
<string name="category_music_offtopic_description">Dies ist nur zur Verwendung in Musikvideos gedacht. Es sollte Teile des Videos abdecken, die nicht Teil der offiziellen Mixe sind. Am Ende sollte das Video der Spotify- oder einer anderen Mix-Version so nahe wie möglich kommen oder das Sprechen oder andere Ablenkungen reduzieren.</string>
|
||||
<string name="playerVideoFormat">Player-Videoformat</string>
|
||||
<string name="category_music_offtopic_description">Nur zur Verwendung in Musikvideos. Es sollte Teile des Videos abdecken, die nicht Teil der offiziellen Abmischungen sind. Am Ende sollte das Video der Spotify- oder einer anderen abgemischten Version so nahe wie möglich kommen oder das Sprechen oder andere Ablenkungen reduzieren.</string>
|
||||
<string name="playerVideoFormat">Videoformat für Player</string>
|
||||
<string name="version">Version %1$s</string>
|
||||
<string name="about_summary">Lernen Sie das Team LibreTube kennen und erfahren Sie, wie das alles abläuft.</string>
|
||||
<string name="category_preview_description">Für Segmente, die auf kommende Inhalte in diesem oder zukünftigen Videos der Serie hinweisen, aber keine zusätzlichen Informationen liefern. Wenn es Clips enthält, die nur hier erscheinen, ist dies sehr wahrscheinlich die falsche Kategorie.</string>
|
||||
<string name="player_autoplay">Automatische Wiedergabe</string>
|
||||
<string name="related_streams_summary">Zeigen Sie verwandte Streams neben dem, was Sie sehen.</string>
|
||||
<string name="related_streams">Verwandte Inhalte</string>
|
||||
<string name="no_audio">Kein Ton</string>
|
||||
<string name="no_video">Kein Video</string>
|
||||
<string name="audio">Audio</string>
|
||||
<string name="video">Video</string>
|
||||
<string name="downloading">Wird heruntergeladen</string>
|
||||
</resources>
|
@ -3,27 +3,27 @@
|
||||
<string name="unsubscribe">Απεγγραφή</string>
|
||||
<string name="username">Όνομα χρήστη</string>
|
||||
<string name="password">Κωδικός πρόσβασης</string>
|
||||
<string name="login">Σύνδεση</string>
|
||||
<string name="already_logged_in">Έχετε ήδη συνδεθεί. Μπορείτε να αποσυνδεθείτε από τον λογαριασμό σας.</string>
|
||||
<string name="login_first">Παρακαλώ συνδεθείτε και προσπαθήστε πάλι.</string>
|
||||
<string name="instances">Επιλογή διακομιστή</string>
|
||||
<string name="login">Είσοδος</string>
|
||||
<string name="already_logged_in">Έχετε ήδη συνδεθεί. Μπορείτε να αποσυνδεθείτε από το λογαριασμό σας.</string>
|
||||
<string name="login_first">Παρακαλούμε συνδεθείτε και δοκιμάστε ξανά.</string>
|
||||
<string name="instances">Επιλογή ενός διακομιστή</string>
|
||||
<string name="customInstance">Προσαρμομένος διακομιστής</string>
|
||||
<string name="region">Περιοχή</string>
|
||||
<string name="login_register">Σύνδεση/Εγγραφή</string>
|
||||
<string name="please_login">Παρακαλώ συνδεθείτε ή εγγραφείτε πρώτα στις ρυθμίσεις.</string>
|
||||
<string name="cannotDownload">Αποτυχία λήψης αυτού του stream.</string>
|
||||
<string name="dlcomplete">Λήψη επιτυχής.</string>
|
||||
<string name="dlisinprogress">Περιμένετε μέχρι να ολοκληρωθούν όλες οι λήψεις…</string>
|
||||
<string name="downloadfailed">Λήψη ανεπιτυχής.</string>
|
||||
<string name="login_register">Είσοδος/εγγραφή</string>
|
||||
<string name="please_login">Παρακαλούμε συνδεθείτε ή εγγραφείτε πρώτα στις ρυθμίσεις.</string>
|
||||
<string name="cannotDownload">Αποτυχία λήψης αυτού του μέσου.</string>
|
||||
<string name="dlcomplete">Η λήψη ολοκληρώθηκε.</string>
|
||||
<string name="dlisinprogress">Παρακαλώ περιμένετε μέχρι να ολοκληρωθούν όλες οι λήψεις…</string>
|
||||
<string name="downloadfailed">Η λήψη απέτυχε.</string>
|
||||
<string name="vlc">Άνοιγμα στο VLC</string>
|
||||
<string name="vlcerror">Το βίντεο δεν κατάφερε να ανοίξει στο VLC. Ίσως δεν είναι εγκατεστημένο.</string>
|
||||
<string name="vlcerror">Δεν μπορεί να ανοίξει στο VLC. Μπορεί να μην έχει εγκατασταθεί.</string>
|
||||
<string name="import_from_yt">Εισαγωγή εγγραφών</string>
|
||||
<string name="import_from_yt_summary">Από το YouTube ή το NewPipe</string>
|
||||
<string name="app_theme">Θέμα</string>
|
||||
<string name="server_error">Υπάρχει πρόβλημα με τον διακομιστή. Μήπως να δοκιμάσετε άλλο διακομιστή;</string>
|
||||
<string name="unknown_error">Πρόβλημα δικτύου.</string>
|
||||
<string name="server_error">Υπάρχει πρόβλημα με τον διακομιστή. Μήπως να δοκιμάστε άλλον διακομιστή;</string>
|
||||
<string name="unknown_error">Σφάλμα δικτύου.</string>
|
||||
<string name="error">Κάτι πήγε στραβά.</string>
|
||||
<string name="empty">Πρέπει να εισάγετε όνομα χρήστη και κωδικό πρόσβασης.</string>
|
||||
<string name="empty">Πρέπει να εισαγάγετε ένα όνομα χρήστη και έναν κωδικό πρόσβασης.</string>
|
||||
<string name="deletePlaylist">Διαγραφή λίστας αναπαραγωγής</string>
|
||||
<string name="areYouSure">Διαγραφή της λίστας αναπαραγωγής;</string>
|
||||
<string name="search_hint">Αναζήτηση</string>
|
||||
@ -33,24 +33,24 @@
|
||||
<string name="createPlaylist">Δημιουργία λίστας αναπαραγωγής</string>
|
||||
<string name="playlistCreated">Η λίστα αναπαραγωγής δημιουργήθηκε.</string>
|
||||
<string name="playlistName">Όνομα λίστας αναπαραγωγής</string>
|
||||
<string name="emptyPlaylistName">Το όνομα της λίστας αναπαραγωγής δεν επιτρέπεται να είναι άδειο</string>
|
||||
<string name="addToPlaylist">Πρoσθήκη στην λίστα αναπαραγωγής</string>
|
||||
<string name="emptyPlaylistName">Το όνομα της λίστας αναπαραγωγής δεν μπορεί να είναι κενό</string>
|
||||
<string name="addToPlaylist">Πρoσθήκη στη λίστα αναπαραγωγής</string>
|
||||
<string name="success">Ολοκληρώθηκε.</string>
|
||||
<string name="fail">Αποτυχία :(</string>
|
||||
<string name="fail">Απέτυχε :(</string>
|
||||
<string name="about">Σχετικά με</string>
|
||||
<string name="share">Κοινοποίηση</string>
|
||||
<string name="yes">Ναι</string>
|
||||
<string name="choose_quality_dialog">Ποιότητα</string>
|
||||
<string name="download">Λήψη</string>
|
||||
<string name="registered">Εγγραφή επιτυχής. Τώρα μπορείτε να εγγραφείτε σε κανάλια.</string>
|
||||
<string name="registered">Είστε εγγεγραμμένος. Τώρα μπορείτε να εγγραφείτε σε κανάλια.</string>
|
||||
<string name="logout">Αποσύνδεση</string>
|
||||
<string name="cancel">Ακύρωση</string>
|
||||
<string name="loggedout">Αποσύνδεση επιτυχής.</string>
|
||||
<string name="loggedIn">Σύνδεση επιτυχής.</string>
|
||||
<string name="loggedout">Αποσυνδεθήκατε.</string>
|
||||
<string name="loggedIn">Συνδεθήκατε.</string>
|
||||
<string name="importsuccess">Εγγεγραμμένος</string>
|
||||
<string name="subscribeIsEmpty">Εγγραφείτε σε μερικά κανάλια πρώτα .</string>
|
||||
<string name="subscribeIsEmpty">Εγγραφείτε πρώτα σε κάποια κανάλια.</string>
|
||||
<string name="grid">Στήλες πλέγματος</string>
|
||||
<string name="notgmail">Αυτό είναι για λογαριασμό LibreTube.</string>
|
||||
<string name="notgmail">Αυτό είναι για έναν λογαριασμό LibreTube.</string>
|
||||
<string name="defres">Προεπιλεγμένη ανάλυση βίντεο</string>
|
||||
<string name="emptyList">Τίποτα εδώ.</string>
|
||||
<string name="startpage">Αρχική σελίδα</string>
|
||||
@ -59,20 +59,20 @@
|
||||
<string name="videos">Βίντεο</string>
|
||||
<string name="changeLanguage">Γλώσσα</string>
|
||||
<string name="systemLanguage">Συστήματος</string>
|
||||
<string name="lightTheme">Φωτεινό θέμα</string>
|
||||
<string name="lightTheme">Φωτεινό</string>
|
||||
<string name="subscribers">%1$s εγγεγραμμένοι</string>
|
||||
<string name="systemDefault">Συστήματος</string>
|
||||
<string name="darkTheme">Σκοτεινό θέμα</string>
|
||||
<string name="darkTheme">Σκοτεινό</string>
|
||||
<string name="comments">Σχόλια</string>
|
||||
<string name="settings">Ρυθμίσεις</string>
|
||||
<string name="customization">Προσαρμογές</string>
|
||||
<string name="website">Ιστοσελίδα</string>
|
||||
<string name="location">Περιοχή</string>
|
||||
<string name="location">Τοποθεσία</string>
|
||||
<string name="noInternet">Συνδεθείτε πρώτα στο Διαδίκτυο.</string>
|
||||
<string name="retry">Ξαναδοκιμάστε</string>
|
||||
<string name="retry">Προσπαθήστε ξανά</string>
|
||||
<string name="instance">Διακομιστής</string>
|
||||
<string name="videoCount">%1$s βίντεο</string>
|
||||
<string name="choose_filter">Επιλογή φίλτρου αναζήτησης</string>
|
||||
<string name="choose_filter">Επιλέξτε φίλτρο αναζήτησης</string>
|
||||
<string name="channels">Κανάλια</string>
|
||||
<string name="all">Όλα</string>
|
||||
<string name="playlists">Λίστες αναπαραγωγής</string>
|
||||
@ -81,33 +81,33 @@
|
||||
<string name="search_history">Ιστορικό αναζήτησης</string>
|
||||
<string name="clear_history">Εκκαθάριση ιστορικού</string>
|
||||
<string name="defaultTab">Προεπιλεγμένη καρτέλα</string>
|
||||
<string name="category_sponsor_description">Προώθηση επί πληρωμή, παραπομπές επί πληρωμή και άμεσες διαφημίσεις. Όχι για προσωπική προώθηση ή δωρεάν διαφήμιση σε σκοπούς/δημιουργούς/ιστοτόπους/προϊόντα που τους αρέσουν.</string>
|
||||
<string name="category_sponsor_description">Πληρωμένη προώθηση, πληρωμένες παραπομπές και άμεσες διαφημίσεις. Όχι για αυτοπροβολή ή δωρεάν γνήσιες αναφορές σε αιτίες, δημιουργούς, ιστότοπους και προϊόντα.</string>
|
||||
<string name="category_sponsor">Χορηγός</string>
|
||||
<string name="music_songs">YT Music τραγούδια</string>
|
||||
<string name="music_videos">YT Music βίντεο</string>
|
||||
<string name="music_albums">YT Music άλμπουμ</string>
|
||||
<string name="music_playlists">YT Music λίστες αναπαραγωγής</string>
|
||||
<string name="music_songs">YT Music Τραγούδια</string>
|
||||
<string name="music_videos">YT Music Βίντεο</string>
|
||||
<string name="music_albums">YT Music Άλμπουμ</string>
|
||||
<string name="music_playlists">YT Music Λίστες αναπαραγωγής</string>
|
||||
<string name="sponsorblock">SponsorBlock</string>
|
||||
<string name="sponsorblock_summary">Χρησιμοποιεί το https://sponsor.ajay.app/ API</string>
|
||||
<string name="sponsorblock_summary">Χρησιμοποιεί το API https://sponsor.ajay.app</string>
|
||||
<string name="sponsorblock_state">Ενεργοποιημένο</string>
|
||||
<string name="category_segments">Τμήματα</string>
|
||||
<string name="segment_skipped">Τμήμα παραλήφθηκε</string>
|
||||
<string name="segment_skipped">Παραλήφθηκε τμήμα</string>
|
||||
<string name="category_intro">Διάλειμμα/Εισαγωγή</string>
|
||||
<string name="category_selfpromo">Μη-χορηγούμενη/Προσωπική προώθηση</string>
|
||||
<string name="category_interaction">Υπενθύμιση αλληλεπίδρασης (Μου αρέσει και εγγραφή)</string>
|
||||
<string name="category_selfpromo_description">Παρόμοιο με την επιλογή \"Χορηγός\" αλλά για ενημέρωση μη-χορηγούμενης/προσωπικής προώθησης. Αυτό περιλαμβάνει ενότητες σχετικά με εμπορεύματα, δωρεές ή πληροφορίες σχετικά με όσους συνεργάστηκαν.</string>
|
||||
<string name="category_selfpromo">Μη αμειβόμενη/αυτοπροώθηση</string>
|
||||
<string name="category_interaction">Υπενθύμιση αλληλεπίδρασης (μου αρέσει και εγγραφή)</string>
|
||||
<string name="category_selfpromo_description">Παρόμοιο με τον \"χορηγό\", αλλά για μη αμειβόμενη/αυτοπροώθηση. Αυτό περιλαμβάνει τμήματα σχετικά με εμπορεύματα, δωρεές ή πληροφορίες σχετικά με το με ποιον συνεργάστηκαν.</string>
|
||||
<string name="category_outro">Κάρτες τέλους και τίτλοι τέλους</string>
|
||||
<string name="category_outro_description">Πληροφορίες μετά το τέλος. Όχι για συμπεράσματα με πληροφορίες.</string>
|
||||
<string name="category_intro_description">Ένα χρονικό διάστημα χωρίς πραγματικό περιεχόμενο. Μπορεί να είναι παύση, στατικό καρέ, επαναλαμβανόμενη κινούμενη εικόνα. Δεν πρέπει να χρησιμοποιείται για μεταβάσεις που περιέχουν πληροφορίες.</string>
|
||||
<string name="category_interaction_description">Όταν υπάρχει μια σύντομη υπενθύμιση για να πατήσετε μου αρέσει, να εγγραφείτε ή να ακολουθήσετε το κανάλι τους στη μέση του περιεχομένου. Εάν είναι μεγάλης διάρκειας ή για κάτι συγκεκριμένο, θα πρέπει να παρατίθεται στην επιλογή \" Μη-χορηγούμενη/Προσωπική προώθηση\".</string>
|
||||
<string name="category_intro_description">Ένα διάστημα χωρίς πραγματικό περιεχόμενο. Θα μπορούσε να είναι μια παύση, ένα στατικό καρέ, μια επαναλαμβανόμενη κίνηση. Δεν πρέπει να χρησιμοποιείται για μεταβάσεις που περιέχουν πληροφορίες.</string>
|
||||
<string name="category_interaction_description">Όταν υπάρχει μια σύντομη υπενθύμιση για να πατήσετε μου αρέσει, να εγγραφείτε ή να ακολουθήσετε το κανάλι στη μέση του περιεχομένου. Αν είναι μακροσκελές ή αφορά κάτι συγκεκριμένο, θα πρέπει να παρατίθεται στην αυτοπροώθηση.</string>
|
||||
<string name="license">Άδεια</string>
|
||||
<string name="oledTheme">Μαύρο θέμα</string>
|
||||
<string name="oledTheme">Μαύρο</string>
|
||||
<string name="color_accent">Αποχρώσεις</string>
|
||||
<string name="color_blue">Pixel μπλε</string>
|
||||
<string name="color_blue">Ευτυχισμένο μπλε</string>
|
||||
<string name="color_yellow">Κίτρινο που μυρίζει</string>
|
||||
<string name="color_green">Αυλό πράσινο</string>
|
||||
<string name="color_purple">Απολαυστικό μωβ</string>
|
||||
<string name="color_red">Κόκκινη ανάπαυση</string>
|
||||
<string name="color_purple">Ευχάριστο μοβ</string>
|
||||
<string name="color_red">Κόκκινο για ξεκούραση</string>
|
||||
<string name="material_you">Μυστικό Υλικό 3</string>
|
||||
<string name="sponsorblock_notifications">Ειδοποιήσεις</string>
|
||||
<string name="app_icon">Εικονίδιο</string>
|
||||
@ -115,73 +115,86 @@
|
||||
<string name="youtube">YouTube</string>
|
||||
<string name="enabled">Ενεργοποιημένο</string>
|
||||
<string name="disabled">Απενεργοποιημένο</string>
|
||||
<string name="playOnBackground">Αναπαραγωγή στο υπόβαθρο</string>
|
||||
<string name="playOnBackground">Αναπαραγωγή στο παρασκήνιο</string>
|
||||
<string name="update_available">Η έκδοση %1$s είναι διαθέσιμη</string>
|
||||
<string name="update_available_text">Μετάβαση στις εκδόσεις στο GitHub για να το κατεβάσετε;</string>
|
||||
<string name="appearance">Εμφάνιση</string>
|
||||
<string name="app_behavior">Συμπεριφορά</string>
|
||||
<string name="downloads">Λήψεις</string>
|
||||
<string name="video_format">Μορφή βίντεο</string>
|
||||
<string name="video_format_summary">Μετατροπή αρχείων εάν έχει γίνει λήψη και ήχου και βίντεο.</string>
|
||||
<string name="video_format_summary">Μετατροπή των αρχείων σε περίπτωση λήψης ήχου και βίντεο.</string>
|
||||
<string name="download_directory">Λήψη σε</string>
|
||||
<string name="download_directory_summary">Πού αποθηκεύονται τα ληφθέντα μέσα.</string>
|
||||
<string name="website_summary">Επισκεφτείτε τον ιστότοπο για περισσότερες πληροφορίες σχετικά με την εφαρμογή και τις δυνατότητές της.</string>
|
||||
<string name="license_summary">Η GPLv3+ είναι μια άδεια χρήσης που έχει κατοχυρωθεί με δικαιώματα πνευματικής ιδιοκτησίας. Χρήση, μελέτη, αλλαγή και κοινή χρήση. με όλα.</string>
|
||||
<string name="donate">Συνεισφορά</string>
|
||||
<string name="update">Ψάξτε για νέα έκδοση</string>
|
||||
<string name="update_summary">Πατήστε για να μάθετε εάν η εφαρμογή είναι ενημερωμένη.</string>
|
||||
<string name="no_update_available">Εκτελείτε την πιο πρόσφατη έκδοση.</string>
|
||||
<string name="donate">Δωρεά</string>
|
||||
<string name="update">Αναζητήστε νέα έκδοση</string>
|
||||
<string name="update_summary">Πατήστε για να μάθετε αν η εφαρμογή είναι ενημερωμένη.</string>
|
||||
<string name="no_update_available">Εκτελείτε την τελευταία έκδοση.</string>
|
||||
<string name="contributing">Συμβάλοντας</string>
|
||||
<string name="appearance_summary">Προσαρμόστε την εφαρμογή σύμφωνα με τις προτιμήσεις σας.</string>
|
||||
<string name="player">Αναπαραγωγέας</string>
|
||||
<string name="playback_speed">Προκαθορισμένη ταχύτητα αναπαραγωγής</string>
|
||||
<string name="player">Ήχος και βίντεο</string>
|
||||
<string name="playback_speed">Προεπιλεγμένη ταχύτητα αναπαραγωγής</string>
|
||||
<string name="contributing_summary">Παρέχετε ιδέες, μεταφράσεις, αλλαγές σχεδίασης, καθαρίστε και γράψτε κώδικα. Όσο περισσότερα γίνονται τόσο καλύτερη γίνεται η εφαρμογή!</string>
|
||||
<string name="donate_summary">Δώσε αυτό που αξίζει σε σένα, αν μπορείς. Η ομάδα του LibreTube είναι μικρότερη από τη δωρεά ή τη βοήθειά σας.</string>
|
||||
<string name="app_uptodate">Εκτελείται η πιο πρόσφατη έκδοση.</string>
|
||||
<string name="donate_summary">Δώστε ό,τι αξίζει για εσάς, αν μπορείτε. Η ομάδα του LibreTube είναι μικρότερη από τη δωρεά ή τη βοήθειά σας.</string>
|
||||
<string name="app_uptodate">Εκτελείται η τελευταία έκδοση.</string>
|
||||
<string name="advanced">Για προχωρημένους</string>
|
||||
<string name="advanced_summary">Αναπαραγωγέας, λήψεις, ιστορικό</string>
|
||||
<string name="authors">Συγγραφείς</string>
|
||||
<string name="authors_summary">Γνωρίστε την ομάδα του LibreTube και όλους τους συνεισφέροντες της που βοηθούν στη βελτίωση της εφαρμογής.</string>
|
||||
<string name="advanced_summary">Λήψεις, ιστορικό</string>
|
||||
<string name="authors">Ομάδα</string>
|
||||
<string name="authors_summary">Γνωρίστε όλους όσους συμμετέχουν στην ανάπτυξη και τη βελτίωση της εφαρμογής.</string>
|
||||
<string name="download_folder">Όνομα</string>
|
||||
<string name="internal_storage">Εσωτερικός χώρος</string>
|
||||
<string name="internal_storage">Εσωτερικός χώρος αποθήκευσης</string>
|
||||
<string name="sdcard">Κάρτα SD</string>
|
||||
<string name="music_directory">Φάκελος μουσικής</string>
|
||||
<string name="movies_directory">Φάκελος ταινιών</string>
|
||||
<string name="shareTo">Κοινή χρήση διεύθυνσης URL σε</string>
|
||||
<string name="shareTo">Μοιραστείτε τη διεύθυνση URL σε</string>
|
||||
<string name="downloads_directory">Φάκελος λήψεων</string>
|
||||
<string name="no_replies">Αυτό το σχόλιο δεν έχει απαντήσεις.</string>
|
||||
<string name="download_folder_summary">Το όνομα του φακέλου στον οποίο τα κατεβασμένα μέσα αποθηκεύονται.</string>
|
||||
<string name="live">Ζωντανά</string>
|
||||
<string name="torchIcon">Μοντέρνος πυρσός</string>
|
||||
<string name="fireIcon">Μοδάτη φωτιά</string>
|
||||
<string name="fireIcon">Μοντέρνα φωτιά</string>
|
||||
<string name="gradientIcon">Κλίση Glib</string>
|
||||
<string name="shapedIcon">Ανόητο σχήμα</string>
|
||||
<string name="legacyIcon">Χαμένη κληρονομιά</string>
|
||||
<string name="views">%1$s προβολές</string>
|
||||
<string name="defaultIcon">Προκαθορισμένο</string>
|
||||
<string name="defaultIcon">Προεπιλεγμένο</string>
|
||||
<string name="flameIcon">Ιπτάμενη φλόγα</string>
|
||||
<string name="birdIcon">Ενισχυμένο πουλί</string>
|
||||
<string name="clear_customInstances">Εκκαθάριση προσαρμοσμένων διακομιστών</string>
|
||||
<string name="customInstance_summary">Προσθήκη προσαρμοσμένου διακομιστή (με δική σας ευθύνη)</string>
|
||||
<string name="customInstance_summary">Προσθέστε έναν προσαρμοσμένο διακομιστή (με δική σας ευθύνη)</string>
|
||||
<string name="instance_name">Όνομα διακομιστή</string>
|
||||
<string name="instance_summary">Piped, σύνδεση, εγγραφές</string>
|
||||
<string name="invalid_url">Εισαγάγετε μια έγκυρη διεύθυνση URL</string>
|
||||
<string name="instance_api_url">Σύνδεσμος URL του API του διακομιστή</string>
|
||||
<string name="invalid_url">Παρακαλούμε εισάγετε μια διεύθυνση URL που λειτουργεί</string>
|
||||
<string name="instance_api_url">Διεύθυνση URL για το API του διακομιστή</string>
|
||||
<string name="addInstance">Προσθήκη διακομιστή</string>
|
||||
<string name="empty_instance">Πρέπει να συμπληρώσετε το όνομα και τη διεύθυνση URL του API.</string>
|
||||
<string name="empty_instance">Συμπληρώστε το όνομα και τη διεύθυνση URL του API.</string>
|
||||
<string name="about_summary">Γνωρίστε την ομάδα του LibreTube και πώς συμβαίνουν όλα αυτά.</string>
|
||||
<string name="version">Έκδοση %1$s</string>
|
||||
<string name="related_streams">Σχετικά βίντεο</string>
|
||||
<string name="related_streams_summary">Εμφάνιση σχετικών βίντεο κάτω από το βίντεο.</string>
|
||||
<string name="related_streams">Σχετικό περιεχόμενο</string>
|
||||
<string name="related_streams_summary">Εμφάνιση σχετικών βίντεο παράλληλα με αυτό που παρακολουθείτε.</string>
|
||||
<string name="show_chapters">Εμφάνιση κεφαλαίων</string>
|
||||
<string name="hide_chapters">Απόκρυψη κεφαλαίων</string>
|
||||
<string name="category_filler_description">Αυτό ισχύει για εφαπτομενικές σκηνές που προστίθενται μόνο για πληρωτικό υλικό ή χιούμορ που δεν απαιτούνται για την κατανόηση του κύριου περιεχομένου του βίντεο.</string>
|
||||
<string name="category_filler_description">Για εφαπτόμενες σκηνές που προστίθενται μόνο για γέμισμα ή χιούμορ που δεν απαιτούνται για την κατανόηση του κύριου περιεχομένου του βίντεο.</string>
|
||||
<string name="category_music_offtopic">Μουσική: Μη-Μουσικό Τμήμα</string>
|
||||
<string name="category_preview">Προεπισκόπηση/Ανακεφαλαίωση</string>
|
||||
<string name="category_filler">Εφαπτομενικό πληρωτικό υλικό/Αστεία</string>
|
||||
<string name="buffering_goal">Στόχος buffering</string>
|
||||
<string name="buffering_goal_summary">Ο αριθμός των δευτερολέπτων που προφορτώνονται τα βίντεο στο μέγιστο.</string>
|
||||
<string name="playerVideoFormat">Μορφή βίντεο αναπαραγωγέα</string>
|
||||
<string name="category_music_offtopic_description">Αυτό προορίζεται μόνο για χρήση σε μουσικά βίντεο. Θα πρέπει να καλύπτει μέρη του βίντεο που δεν περιλαμβάνονται στις επίσημες μίξεις. Στο τέλος, το βίντεο θα πρέπει να μοιάζει όσο το δυνατόν περισσότερο με την έκδοση του Spotify ή οποιασδήποτε άλλης μίξης, ή θα πρέπει να μειώνει τις ομιλίες ή άλλους περισπασμούς.</string>
|
||||
<string name="category_preview_description">Για τμήματα που δείχνουν τι θα ακολουθήσει σε αυτό ή σε μελλοντικά βίντεο της ίδιας σειράς, αλλά δεν παρέχουν πρόσθετες πληροφορίες. Αν περιλαμβάνει αποσπάσματα που εμφανίζονται μόνο εδώ, είναι πολύ πιθανό να μην είναι η σωστή κατηγορία.</string>
|
||||
<string name="buffering_goal">Προφόρτωση</string>
|
||||
<string name="buffering_goal_summary">Μέγιστη ποσότητα δευτερολέπτων βίντεο για προφόρτωση.</string>
|
||||
<string name="playerVideoFormat">Μορφή βίντεο για τον αναπαραγωγέα</string>
|
||||
<string name="category_music_offtopic_description">Μόνο για χρήση σε μουσικά βίντεο. Θα πρέπει να καλύπτει μέρη του βίντεο που δεν περιλαμβάνονται στις επίσημες μίξεις. Στο τέλος, το βίντεο θα πρέπει να μοιάζει όσο το δυνατόν περισσότερο με την έκδοση του Spotify ή οποιαδήποτε άλλη μίξη, ή να μειώνει τις ομιλίες ή άλλους περισπασμούς.</string>
|
||||
<string name="category_preview_description">Για τμήματα που περιγράφουν λεπτομερώς το επερχόμενο περιεχόμενο σε αυτό ή σε μελλοντικά βίντεο της σειράς, αλλά δεν παρέχουν πρόσθετες πληροφορίες. Εάν περιλαμβάνει κλιπ που εμφανίζεται μόνο εδώ, είναι πολύ πιθανό να πρόκειται για την λάθος κατηγορία.</string>
|
||||
<string name="no_audio">Χωρίς ήχο</string>
|
||||
<string name="no_video">Χωρίς βίντεο</string>
|
||||
<string name="audio">Ήχος</string>
|
||||
<string name="video">Βίντεο</string>
|
||||
<string name="player_autoplay">Αυτόματη αναπαραγωγή</string>
|
||||
<string name="downloading">Λήψη</string>
|
||||
<string name="hideTrendingPage">Απόκρυψη σελίδας τάσεων</string>
|
||||
<string name="instance_frontend_url">Διεύθυνση URL στη σελίδα του διακομιστή</string>
|
||||
<string name="quality">Ποιότητα</string>
|
||||
<string name="behavior">Συμπεριφορά</string>
|
||||
<string name="player_summary">Ποιότητα και συμπεριφορά του αναπαραγωγέα</string>
|
||||
<string name="seek_increment">Προσάυξηση αναζήτησης</string>
|
||||
<string name="piped_summary">Το Piped είναι μία εναλλακτική σελίδα ανοικτού κώδικα για το YouTube που παρέχει το API που χρησιμοποιούμε. Χωρίς το Piped, το LibreTube δεν θα υπήρχε. Τεράστιες ευχαριστίες στους προγραμματιστές του!</string>
|
||||
</resources>
|
@ -36,7 +36,7 @@
|
||||
<string name="error">Algo salió mal.</string>
|
||||
<string name="empty">Tienes que introducir un nombre de usuario y una contraseña.</string>
|
||||
<string name="notgmail">Esto es para una cuenta de LibreTube.</string>
|
||||
<string name="defres">Resolución de video predeterminada</string>
|
||||
<string name="defres">Resolución de vídeo predeterminada</string>
|
||||
<string name="grid">Columnas de la cuadrícula</string>
|
||||
<string name="emptyList">No hay nada aquí.</string>
|
||||
<string name="areYouSure">¿Eliminar la lista de reproducción\?</string>
|
||||
@ -59,12 +59,12 @@
|
||||
<string name="import_from_yt_summary">Desde YouTube o NewPipe</string>
|
||||
<string name="changeLanguage">Idioma</string>
|
||||
<string name="systemLanguage">Sistema</string>
|
||||
<string name="lightTheme">Tema claro</string>
|
||||
<string name="darkTheme">Tema oscuro</string>
|
||||
<string name="lightTheme">Claro</string>
|
||||
<string name="darkTheme">Oscuro</string>
|
||||
<string name="subscribers">%1$s suscriptores</string>
|
||||
<string name="systemDefault">Sistema</string>
|
||||
<string name="comments">Comentarios</string>
|
||||
<string name="videoCount">%1$s videos</string>
|
||||
<string name="videoCount">%1$s vídeos</string>
|
||||
<string name="noInternet">Conéctese primero a Internet.</string>
|
||||
<string name="retry">Reintentar</string>
|
||||
<string name="customization">Personalización</string>
|
||||
@ -81,7 +81,7 @@
|
||||
<string name="search_history">Historial de búsqueda</string>
|
||||
<string name="clear_history">Borrar historial</string>
|
||||
<string name="music_songs">Canciones musicales de YT</string>
|
||||
<string name="music_videos">Videos musicales de YT</string>
|
||||
<string name="music_videos">Vídeos musicales de YT</string>
|
||||
<string name="music_albums">Álbumes musicales de YT</string>
|
||||
<string name="music_playlists">Playlists de música de YT</string>
|
||||
<string name="defaultTab">Pestaña predeterminada</string>
|
||||
@ -89,7 +89,7 @@
|
||||
<string name="sponsorblock_summary">Utiliza la API de https://sponsor.ajay.app</string>
|
||||
<string name="segment_skipped">Segmento omitido</string>
|
||||
<string name="category_sponsor">Patrocinador</string>
|
||||
<string name="category_sponsor_description">Promoción pagada, referencias pagadas y anuncios directos. No para la autopromoción o los anuncios gratuitos de causas/creadores/sitios web/productos que les gustan.</string>
|
||||
<string name="category_sponsor_description">Promoción pagada, referencias pagadas y anuncios directos. No para la autopromoción o los agradecimientos genuinos y gratuitos a las causas, creadores, sitios web y productos.</string>
|
||||
<string name="sponsorblock_state">Activado</string>
|
||||
<string name="category_segments">Segmentos</string>
|
||||
<string name="category_selfpromo_description">Similar a \"patrocinador\", excepto que no se paga o se hace autopromoción. Esto incluye secciones sobre mercancía, donaciones o información sobre con quién han colaborado.</string>
|
||||
@ -107,7 +107,7 @@
|
||||
<string name="color_green">Verde</string>
|
||||
<string name="color_blue">Azul</string>
|
||||
<string name="color_purple">Púrpura</string>
|
||||
<string name="oledTheme">Tema negro</string>
|
||||
<string name="oledTheme">Negro</string>
|
||||
<string name="material_you">Mystic Material 3</string>
|
||||
<string name="app_icon">Icono</string>
|
||||
<string name="piped">Piped</string>
|
||||
@ -123,7 +123,7 @@
|
||||
<string name="appearance">Apariencia</string>
|
||||
<string name="no_replies">Este comentario no tiene respuestas.</string>
|
||||
<string name="authors">Autores</string>
|
||||
<string name="authors_summary">Conoce al equipo de LibreTube y a todos los colaboradores que ayudan a mejorar la aplicación.</string>
|
||||
<string name="authors_summary">Conozca a todos.</string>
|
||||
<string name="internal_storage">Almacenamiento interno</string>
|
||||
<string name="sdcard">Tarjeta SD</string>
|
||||
<string name="shareTo">Compartir con</string>
|
||||
@ -141,14 +141,14 @@
|
||||
<string name="birdIcon">Pájaro</string>
|
||||
<string name="instance_summary">Piped, sesión y suscripciones</string>
|
||||
<string name="instance_name">Nombre de la instancia</string>
|
||||
<string name="instance_api_url">URL de la instancia</string>
|
||||
<string name="empty_instance">Tienes que llenar el nombre y el URL</string>
|
||||
<string name="instance_api_url">URL de la API de la instancia</string>
|
||||
<string name="empty_instance">Introduzca el nombre y la URL de la API.</string>
|
||||
<string name="clear_customInstances">Eliminar instancias personalizadas</string>
|
||||
<string name="invalid_url">Por favor, introduce un URL válido</string>
|
||||
<string name="invalid_url">Por favor, introduzca una URL que funcione</string>
|
||||
<string name="version">Versión %1$s</string>
|
||||
<string name="about_summary">Conoce al equipo de LibreTube y como sucede todo.</string>
|
||||
<string name="related_streams">Transmisiones relacionadas</string>
|
||||
<string name="related_streams_summary">Mostrar transmisiones relacionadas con los videos.</string>
|
||||
<string name="related_streams">Contenido relacionado</string>
|
||||
<string name="related_streams_summary">Mostrar transmisiones relacionadas con lo que ves.</string>
|
||||
<string name="website_summary">Visita el sitio web para más información de la aplicación y sus características.</string>
|
||||
<string name="contributing_summary">Aportar ideas, traducciones, cambios de diseño, limpiar y escribir código. ¡Cuanto más se haga, mejor será!</string>
|
||||
<string name="license_summary">La GPLv3+ es una licencia libre con copyleft. Utiliza, estudia, cambia y comparte; con todos.</string>
|
||||
@ -163,8 +163,8 @@
|
||||
<string name="torchIcon">Antorcha</string>
|
||||
<string name="customInstance_summary">Añadir una instancia personalizada (bajo tu propio riesgo)</string>
|
||||
<string name="downloads">Descargas</string>
|
||||
<string name="video_format">Formato de video</string>
|
||||
<string name="video_format_summary">Conversión de archivos si se descargan tanto el audio como el video.</string>
|
||||
<string name="video_format">Formato de vídeo</string>
|
||||
<string name="video_format_summary">Conversión de archivos si se descargan tanto el audio como el vídeo.</string>
|
||||
<string name="download_directory">Directorio de descargas</string>
|
||||
<string name="contributing">Contribución</string>
|
||||
<string name="donate">Donar</string>
|
||||
@ -175,6 +175,21 @@
|
||||
<string name="live">En vivo</string>
|
||||
<string name="show_chapters">Mostrar capítulos</string>
|
||||
<string name="hide_chapters">Ocultar capítulos</string>
|
||||
<string name="buffering_goal">Objetivo del búfer</string>
|
||||
<string name="buffering_goal_summary">La cantidad de segundos que los videos se precargan al máximo.</string>
|
||||
<string name="buffering_goal">Precarga</string>
|
||||
<string name="buffering_goal_summary">Cantidad máxima de segundos de vídeo a almacenar en búfer.</string>
|
||||
<string name="category_filler">Tangente/chistes de relleno</string>
|
||||
<string name="category_music_offtopic">Música: Sección no musical</string>
|
||||
<string name="category_preview">Vista previa/Resumen</string>
|
||||
<string name="category_preview_description">Para los segmentos que detallan los próximos contenidos de este o futuros vídeos de su serie, pero que no proporcionan información adicional. Si incluye clips que sólo aparecen aquí, es muy probable que esta sea la categoría equivocada.</string>
|
||||
<string name="category_filler_description">Para las escenas tangenciales que se añaden sólo para el relleno o el humor que no es necesario para entender el contenido principal del vídeo.</string>
|
||||
<string name="playerVideoFormat">Formato de vídeo para el reproductor</string>
|
||||
<string name="category_music_offtopic_description">Sólo para su uso en vídeos musicales. Debe abarcar partes del vídeo que no formen parte de las mezclas oficiales. Al final, el vídeo debe parecerse lo más posible a la versión de Spotify o a cualquier otra versión mezclada, o reducir las conversaciones u otras distracciones.</string>
|
||||
<string name="player_autoplay">Reproducción automática</string>
|
||||
<string name="no_video">Sin vídeo</string>
|
||||
<string name="downloading">Descargando</string>
|
||||
<string name="hideTrendingPage">Ocultar página de tendencias</string>
|
||||
<string name="instance_frontend_url">URL de la interfaz de la instancia</string>
|
||||
<string name="no_audio">Sin audio</string>
|
||||
<string name="audio">Audio</string>
|
||||
<string name="video">Vídeo</string>
|
||||
</resources>
|
@ -184,4 +184,5 @@
|
||||
<string name="category_music_offtopic_description">Musika-bideoetan bakarrik erabil daiteke. Nahaste ofizialetakoak ez diren bideo-zatiak estaliko ditu. Azkenean, bideoak Spotifyren edo beste edozein nahasketa bertsioren antzekoa izan behar du, edo hitz egitea edo beste entretenimendu batzuk murriztu behar ditu.</string>
|
||||
<string name="buffering_goal">Aurrez kargatzea</string>
|
||||
<string name="playerVideoFormat">Erreproduzitzailearen bideo formatua</string>
|
||||
<string name="player_autoplay">Erreprodukzio automatikoa</string>
|
||||
</resources>
|
@ -54,14 +54,14 @@
|
||||
<string name="emptyPlaylistName">Le nom de la liste de lecture ne peut pas être vide</string>
|
||||
<string name="import_from_yt_summary">Depuis YouTube ou NewPipe</string>
|
||||
<string name="subscriptions">Abonnements</string>
|
||||
<string name="lightTheme">Thème clair</string>
|
||||
<string name="lightTheme">Clair</string>
|
||||
<string name="library">Bibliothèque</string>
|
||||
<string name="startpage">Accueil</string>
|
||||
<string name="videos">Vidéos</string>
|
||||
<string name="changeLanguage">Langue</string>
|
||||
<string name="systemLanguage">Système</string>
|
||||
<string name="systemDefault">Système</string>
|
||||
<string name="darkTheme">Thème sombre</string>
|
||||
<string name="darkTheme">Sombre</string>
|
||||
<string name="subscribers">%1$s abonnés</string>
|
||||
<string name="comments">Commentaires</string>
|
||||
<string name="videoCount">%1$s vidéos</string>
|
||||
@ -99,14 +99,14 @@
|
||||
<string name="category_intro">Animation d\'intro/entracte</string>
|
||||
<string name="license">Licence</string>
|
||||
<string name="category_interaction_description">Lorsqu\'il y a un bref rappel pour aimer, s\'abonner ou suivre au milieu du contenu. S\'il est long ou porte sur un sujet spécifique, il doit plutôt s\'agir d\'autopromotion.</string>
|
||||
<string name="category_sponsor_description">Promotion payée, références payées et publicités directes. Il ne s\'agit pas d\'autopromotion ou de citation gratuite de causes/créateurs/sites web/produits qu\'ils aiment.</string>
|
||||
<string name="category_sponsor_description">Promotion payée, références payées et publicités directes. Il ne s\'agit pas d\'autopromotion ou d\'une véritable mise en avant gratuite de causes, de créateurs, de sites web et de produits.</string>
|
||||
<string name="category_interaction">Rappel d\'interaction (par ex. : S\'abonner)</string>
|
||||
<string name="color_purple">Violet plaisant</string>
|
||||
<string name="color_blue">Bleu pixel</string>
|
||||
<string name="color_blue">Bleu béat</string>
|
||||
<string name="color_accent">Accentuations</string>
|
||||
<string name="color_red">Rouge de repos</string>
|
||||
<string name="color_yellow">Jaune vif</string>
|
||||
<string name="oledTheme">Thème noir</string>
|
||||
<string name="oledTheme">Noir</string>
|
||||
<string name="material_you">Mystic Material 3</string>
|
||||
<string name="color_green">Vert groovy</string>
|
||||
<string name="sponsorblock_notifications">Notifications</string>
|
||||
@ -121,7 +121,7 @@
|
||||
<string name="donate_summary">Si vous aimez l\'application et appréciez notre travail, nous serions heureux de votre don.</string>
|
||||
<string name="contributing">Contribution</string>
|
||||
<string name="donate">Faire un don</string>
|
||||
<string name="advanced_summary">Lecteur, téléchargements, historique</string>
|
||||
<string name="advanced_summary">Téléchargements, historique</string>
|
||||
<string name="video_format_summary">Conversion des fichiers si on télécharge à la fois de l\'audio et de la vidéo.</string>
|
||||
<string name="download_directory_summary">Où sont stockés les médias téléchargés.</string>
|
||||
<string name="license_summary">La GPLv3+ est une licence libre copylefté. Utilisez, étudiez, modifiez et partagez ; avec tous.</string>
|
||||
@ -138,12 +138,12 @@
|
||||
<string name="no_update_available">Vous utilisez la dernière version.</string>
|
||||
<string name="playback_speed">Vitesse de lecture par défaut</string>
|
||||
<string name="advanced">Avancé</string>
|
||||
<string name="player">Lecteur</string>
|
||||
<string name="player">Audio et vidéo</string>
|
||||
<string name="appearance_summary">Ajustez l\'application à votre convenance.</string>
|
||||
<string name="live">En direct</string>
|
||||
<string name="no_replies">Ce commentaire n\'a pas de réponse.</string>
|
||||
<string name="authors">Auteurs</string>
|
||||
<string name="authors_summary">Faites connaissance avec l\'équipe LibreTube et tous ses contributeurs qui aident à améliorer l\'application.</string>
|
||||
<string name="authors_summary">Apprenez à connaître tout le monde.</string>
|
||||
<string name="sdcard">Carte SD</string>
|
||||
<string name="download_folder_summary">Le nom du dossier dans lequel le média téléchargé est stocké.</string>
|
||||
<string name="download_folder">Nom</string>
|
||||
@ -159,29 +159,41 @@
|
||||
<string name="birdIcon">Oiseau boosté</string>
|
||||
<string name="torchIcon">Torche tendance</string>
|
||||
<string name="instance_summary">Piped, connexion, abonnements</string>
|
||||
<string name="invalid_url">Veuillez entrer une URL valide</string>
|
||||
<string name="invalid_url">Veuillez entrer une URL qui fonctionne</string>
|
||||
<string name="customInstance_summary">Ajouter une instance personnalisée (à vos risques et périls)</string>
|
||||
<string name="instance_name">Nom de l\'instance</string>
|
||||
<string name="flameIcon">Flamme volante</string>
|
||||
<string name="instance_api_url">URL de l\'API de l\'instance</string>
|
||||
<string name="clear_customInstances">Effacer les instances personnalisées</string>
|
||||
<string name="addInstance">Ajouter une instance</string>
|
||||
<string name="empty_instance">Vous devez compléter le nom et l\'URL de l\'API.</string>
|
||||
<string name="empty_instance">Complétez le nom et l\'URL de l\'API.</string>
|
||||
<string name="shapedIcon">Forme idiote</string>
|
||||
<string name="gradientIcon">Dégradé désinvolte</string>
|
||||
<string name="version">Version %1$s</string>
|
||||
<string name="about_summary">Découvrez l\'équipe LibreTube et comment tout cela se passe.</string>
|
||||
<string name="related_streams">Streams connexes</string>
|
||||
<string name="related_streams_summary">Afficher les flux associés aux vidéos.</string>
|
||||
<string name="related_streams">Contenus connexes</string>
|
||||
<string name="related_streams_summary">Affichez des flux connexes à côté de ce que vous regardez.</string>
|
||||
<string name="category_filler">Tangente de remplissage/blagues</string>
|
||||
<string name="category_preview">Aperçu / récap</string>
|
||||
<string name="category_filler_description">Il s\'agit de scènes tangentielles ajoutées uniquement à titre de remplissage ou d\'humour et qui ne sont pas nécessaires pour comprendre le contenu principal de la vidéo.</string>
|
||||
<string name="category_filler_description">Pour les scènes tangentielles ajoutées uniquement à titre de remplissage ou d\'humour non nécessaire à la compréhension du contenu principal de la vidéo.</string>
|
||||
<string name="show_chapters">Afficher les chapitres</string>
|
||||
<string name="category_music_offtopic">Musique : section non musicale</string>
|
||||
<string name="hide_chapters">Masquer les chapitres</string>
|
||||
<string name="buffering_goal">Objectif de mémoire tampon</string>
|
||||
<string name="buffering_goal_summary">Le nombre de secondes pendant lesquelles les vidéos sont préchargées au maximum.</string>
|
||||
<string name="category_music_offtopic_description">Ceci est uniquement destiné à être utilisé dans des vidéos musicales. Il doit couvrir les parties de la vidéo qui ne font pas partie des mixages officiels. Au final, la vidéo doit ressembler le plus possible à la version de Spotify ou de tout autre mix, ou doit réduire les bavardages ou autres distractions.</string>
|
||||
<string name="playerVideoFormat">Format vidéo du lecteur</string>
|
||||
<string name="category_preview_description">Pour les segments qui montrent ce qui est à venir dans cette vidéo ou dans les vidéos futures de la même série, mais qui ne fournissent pas d\'informations supplémentaires. S\'il s\'agit de clips qui n\'apparaissent qu\'ici, il est très probable que cette catégorie ne soit pas la bonne.</string>
|
||||
<string name="buffering_goal">Préchargement</string>
|
||||
<string name="buffering_goal_summary">Nombre maximal de secondes de vidéo à mettre en mémoire tampon.</string>
|
||||
<string name="category_music_offtopic_description">Uniquement pour une utilisation dans des vidéos musicales. Elle doit couvrir les parties de la vidéo qui ne font pas partie des mixages officiels. Au final, la vidéo doit ressembler le plus possible à la version Spotify ou à toute autre version mixée, ou réduire les discussions ou autres distractions.</string>
|
||||
<string name="playerVideoFormat">Format vidéo pour le lecteur</string>
|
||||
<string name="category_preview_description">Pour les segments détaillant le contenu à venir de cette vidéo ou des futures vidéos de sa série, mais qui ne fournissent pas d\'informations supplémentaires. Si elle comprend des clips qui n\'apparaissent qu\'ici, il s\'agit très probablement de la mauvaise catégorie.</string>
|
||||
<string name="player_autoplay">Lecture automatique</string>
|
||||
<string name="no_audio">Sans audio</string>
|
||||
<string name="no_video">Sans vidéo</string>
|
||||
<string name="audio">Audio</string>
|
||||
<string name="video">Vidéo</string>
|
||||
<string name="downloading">Téléchargement</string>
|
||||
<string name="hideTrendingPage">Masquer la page des tendances</string>
|
||||
<string name="instance_frontend_url">URL vers l\'interface de l\'instance</string>
|
||||
<string name="quality">Qualité</string>
|
||||
<string name="behavior">Comportement</string>
|
||||
<string name="player_summary">Qualité et comportement du lecteur</string>
|
||||
<string name="seek_increment">Rechercher l\'incrément</string>
|
||||
</resources>
|
@ -61,8 +61,8 @@
|
||||
<string name="subscriptions">Abbonamenti</string>
|
||||
<string name="changeLanguage">Lingua</string>
|
||||
<string name="systemLanguage">Sistema</string>
|
||||
<string name="lightTheme">Tema chiaro</string>
|
||||
<string name="darkTheme">Tema scuro</string>
|
||||
<string name="lightTheme">Chiaro</string>
|
||||
<string name="darkTheme">Scuro</string>
|
||||
<string name="comments">Commenti</string>
|
||||
<string name="videoCount">%1$s video</string>
|
||||
<string name="noInternet">Connettiti ad internet prima.</string>
|
||||
@ -90,7 +90,7 @@
|
||||
<string name="segment_skipped">Segmento saltato</string>
|
||||
<string name="sponsorblock_state">Attivo</string>
|
||||
<string name="category_segments">Segmenti</string>
|
||||
<string name="category_sponsor_description">Promozione a pagamento, riferimento a pagamento e pubblicità diretta. Non per l\'autopromozione o per la pubblicità gratuita di cause/creatori/siti web/prodotti di loro gradimento.</string>
|
||||
<string name="category_sponsor_description">Promozione a pagamento, riferimento a pagamento e pubblicità diretta. Non per l\'autopromozione o per genuina pubblicità gratuita di cause, creatori, siti web e prodotti.</string>
|
||||
<string name="category_selfpromo">Non retribuito/Autopromozione</string>
|
||||
<string name="category_selfpromo_description">Simile a sponsor, tranne che per la promozione personale o non retribuita. Sono incluse le sezioni relative al merchandising, alle donazioni o alle informazioni sulle persone con cui hanno collaborato.</string>
|
||||
<string name="category_intro">Intervallo/Animazione</string>
|
||||
@ -100,11 +100,11 @@
|
||||
<string name="license">Licenza</string>
|
||||
<string name="color_accent">Accenti</string>
|
||||
<string name="color_red">Rosso riposante</string>
|
||||
<string name="color_blue">Blu pixel</string>
|
||||
<string name="color_blue">Blu beato</string>
|
||||
<string name="color_yellow">Giallo lanciato</string>
|
||||
<string name="color_green">Verde groovy</string>
|
||||
<string name="color_purple">Viola piacevole</string>
|
||||
<string name="oledTheme">Tema nero</string>
|
||||
<string name="oledTheme">Nero</string>
|
||||
<string name="clear_history">Cancella la cronologia</string>
|
||||
<string name="material_you">Mystic Material 3</string>
|
||||
<string name="sponsorblock_notifications">Notifiche</string>
|
||||
@ -143,7 +143,7 @@
|
||||
<string name="live">Dal vivo</string>
|
||||
<string name="authors">Autori</string>
|
||||
<string name="no_replies">Questo commento non ha risposte.</string>
|
||||
<string name="authors_summary">Conosci il team LibreTube e tutti i suoi collaboratori che contribuiscono a migliorare l\'applicazione.</string>
|
||||
<string name="authors_summary">Fai conoscenza con tutti.</string>
|
||||
<string name="downloads_directory">Cartella degli scaricamenti</string>
|
||||
<string name="sdcard">Scheda SD</string>
|
||||
<string name="music_directory">Cartella musicale</string>
|
||||
@ -164,24 +164,31 @@
|
||||
<string name="instance_name">Nome istanza</string>
|
||||
<string name="addInstance">Aggiungi istanza</string>
|
||||
<string name="clear_customInstances">Pulisci istanze personalizzate</string>
|
||||
<string name="empty_instance">Devi compilare il nome e l\'url API.</string>
|
||||
<string name="empty_instance">Compila il nome e l\'URL dell\'API.</string>
|
||||
<string name="instance_summary">Piped, accesso, iscrizioni</string>
|
||||
<string name="customInstance_summary">Aggiungi un\'istanza personalizzata (a tuo rischio)</string>
|
||||
<string name="instance_api_url">URL API dell\'istanza</string>
|
||||
<string name="invalid_url">Si prega di inserire un URL valido</string>
|
||||
<string name="invalid_url">Si prega di inserire un URL che funzioni</string>
|
||||
<string name="version">Versione %1$s</string>
|
||||
<string name="about_summary">Conosci il team LibreTube e come tutto accade.</string>
|
||||
<string name="related_streams_summary">Mostra stream correlati al video.</string>
|
||||
<string name="related_streams">Stream correlati</string>
|
||||
<string name="related_streams_summary">Mostra stream correlati a fianco di ciò che guardi.</string>
|
||||
<string name="related_streams">Contenuti correlati</string>
|
||||
<string name="hide_chapters">Nascondi capitoli</string>
|
||||
<string name="show_chapters">Mostra capitoli</string>
|
||||
<string name="category_filler">Tangente filler/scherzi</string>
|
||||
<string name="category_music_offtopic">Musica: sezione non musicale</string>
|
||||
<string name="category_filler_description">Questo è per le scene tangenziali aggiunte solo per filler o umorismo che non sono necessari per comprendere il contenuto principale del video.</string>
|
||||
<string name="category_music_offtopic_description">Questo è solo per l\'uso in video musicali. Dovrebbe coprire parti del video non parte di mix ufficiali. Alla fine, il video dovrebbe assomigliare al mix di Spotify o a qualsiasi altra versione il più vicino possibile, o dovrebbe ridurre la conversazione o altre distrazioni.</string>
|
||||
<string name="category_filler_description">Per le scene tangenziali aggiunte solo per filler o umorismo non necessarie per comprendere il contenuto principale del video.</string>
|
||||
<string name="category_music_offtopic_description">Solo per l\'uso in video musicali. Dovrebbe coprire parti del video non parte di mix ufficiali. Alla fine, il video dovrebbe assomigliare il più vicino possibile alla versione di Spotify o a qualsiasi altra versione mixata, o riducendo la conversazione o altre distrazioni.</string>
|
||||
<string name="category_preview">Anteprima/riepilogo</string>
|
||||
<string name="category_preview_description">Per i segmenti che mostrano ciò che sta arrivando in questo o futuri video della stessa serie, ma non forniscono ulteriori informazioni. Se include clip che appaiono solo qui, questa probabilmente non è la categoria giusta.</string>
|
||||
<string name="buffering_goal">Obiettivo di caricamento</string>
|
||||
<string name="buffering_goal_summary">La quantità di secondi che viene precaricata al massimo nei video.</string>
|
||||
<string name="category_preview_description">Per i segmenti che mostrano in dettaglio i prossimi contenuti in questo o futuri video della serie, ma non forniscono ulteriori informazioni. Se include clip che appaiono solo qui, questa probabilmente è la categoria sbagliata.</string>
|
||||
<string name="buffering_goal">Precaricamento</string>
|
||||
<string name="buffering_goal_summary">La quantità massima di secondi che viene bufferizzata nei video.</string>
|
||||
<string name="playerVideoFormat">Formato video del lettore</string>
|
||||
<string name="player_autoplay">Riproduzione automatica</string>
|
||||
<string name="audio">Con audio</string>
|
||||
<string name="no_audio">Senza audio</string>
|
||||
<string name="no_video">Senza video</string>
|
||||
<string name="video">Con video</string>
|
||||
<string name="downloading">Scaricando</string>
|
||||
<string name="hideTrendingPage">Nascondi la pagina Tendenze</string>
|
||||
</resources>
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="customization">התאמות</string>
|
||||
<string name="color_blue">כחול פיקסלים</string>
|
||||
<string name="color_blue">כחול כובש</string>
|
||||
<string name="search_hint">חיפוש</string>
|
||||
<string name="videos">סרטונים</string>
|
||||
<string name="subscribe">רישום</string>
|
||||
@ -28,7 +28,7 @@
|
||||
<string name="success">בוצע.</string>
|
||||
<string name="fail">נכשל :(</string>
|
||||
<string name="about">על אודות</string>
|
||||
<string name="lightTheme">ערכת עיצוב בהירה</string>
|
||||
<string name="lightTheme">בהיר</string>
|
||||
<string name="subscribers">%1$s מנויים</string>
|
||||
<string name="comments">הערות</string>
|
||||
<string name="choose_filter">בחירת מסנן חיפוש</string>
|
||||
@ -44,7 +44,7 @@
|
||||
<string name="music_albums">אלבומים מ־YT Music</string>
|
||||
<string name="music_playlists">רשימות נגינה מ־YT Music</string>
|
||||
<string name="defaultTab">לשונית ברירת מחדל</string>
|
||||
<string name="category_sponsor_description">קידום ממומן, הפניות בתשלום ופרסום ישיר. לא למטרות קידום עצמי או הוקרה של מטרות/יוצרים/אתרים/מוצרים אהובים עליהם.</string>
|
||||
<string name="category_sponsor_description">קידום ממומן, הפניות בתשלום ופרסום ישיר. לא למטרות קידום עצמי או הוקרה כנה של מטרות/יוצרים/אתרים/מוצרים.</string>
|
||||
<string name="category_interaction">תזכורת אינטראקציה (לייק ומינוי)</string>
|
||||
<string name="category_outro">כרטיסי סיום וקרדיטים</string>
|
||||
<string name="category_outro_description">מידע לאחר הסיום. לא למסקנות עם מידע.</string>
|
||||
@ -54,7 +54,7 @@
|
||||
<string name="color_yellow">צהוב צורח</string>
|
||||
<string name="color_green">ירוק יוקד</string>
|
||||
<string name="color_purple">סגול סובלני</string>
|
||||
<string name="oledTheme">ערכת עיצוב שחורה</string>
|
||||
<string name="oledTheme">שחור</string>
|
||||
<string name="sponsorblock_notifications">התראות</string>
|
||||
<string name="app_icon">סמל</string>
|
||||
<string name="enabled">פעיל</string>
|
||||
@ -69,7 +69,7 @@
|
||||
<string name="donate">תרומה</string>
|
||||
<string name="license_summary">GPLv3+ הוא רישיון חופשי ומתירני. מותר להשתמש, לחקור, לערוך ולשתף, עם כולם.</string>
|
||||
<string name="update_summary">לחיצה כאן תבדוק אם היישומון עדכני.</string>
|
||||
<string name="player">נגן</string>
|
||||
<string name="player">שמע ווידאו</string>
|
||||
<string name="library">ספרייה</string>
|
||||
<string name="password">סיסמה</string>
|
||||
<string name="register">הרשמה</string>
|
||||
@ -110,7 +110,7 @@
|
||||
<string name="areYouSure">למחוק את רשימת הנגינה\?</string>
|
||||
<string name="playlistCreated">נוצרה רשימת נגינה.</string>
|
||||
<string name="changeLanguage">שפה</string>
|
||||
<string name="darkTheme">ערכת עיצוב כהה</string>
|
||||
<string name="darkTheme">כהה</string>
|
||||
<string name="instance">עותק</string>
|
||||
<string name="videoCount">%1$s סרטונים</string>
|
||||
<string name="category_interaction_description">כשיש תזכורת קצרה לעשות לייק, להירשם למינוי או לעקוב באמצע התוכן. אם זה ארוך או על משהו מסוים, זה אמור להיות קידום עצמי במקום.</string>
|
||||
@ -132,7 +132,7 @@
|
||||
<string name="no_update_available">זאת הגרסה העדכנית ביותר.</string>
|
||||
<string name="donate_summary">אפשר להעניק בהתאם לערך שהוא מעניק לך. צוות LibreTube קטן מהתרומה או הסיוע שלך.</string>
|
||||
<string name="update">איתור גרסה חדשה</string>
|
||||
<string name="advanced_summary">נגן, הורדות, היסטוריה</string>
|
||||
<string name="advanced_summary">הורדות, היסטוריה</string>
|
||||
<string name="app_uptodate">היישומון עדכני.</string>
|
||||
<string name="playback_speed">מהירות נגינה כברירת מחדל</string>
|
||||
<string name="advanced">מתקדם</string>
|
||||
@ -142,7 +142,7 @@
|
||||
<string name="category_selfpromo_description">דומה ל„נותן חסות” למעט קידום עצמי ללא תשלום. לרבות סעיפים על אביזרים ממותגים, תרומות או מידע על שיתופי פעולה.</string>
|
||||
<string name="category_intro">הפוגה/הנפשת הקדמה</string>
|
||||
<string name="authors">יוצרים</string>
|
||||
<string name="authors_summary">כאן מופיעים אלו שעומדים מאחורי LibreTube לצד אלו שמסייעים בשיפור היישומון.</string>
|
||||
<string name="authors_summary">כאן מופיעים כל מי שמעורב בפיתוח ושיפור היישומון.</string>
|
||||
<string name="no_replies">להערה זו אין תגובות.</string>
|
||||
<string name="download_folder_summary">שם התיקייה שבה תאוחסן מדיה שהורדה.</string>
|
||||
<string name="internal_storage">אחסון פנימי</string>
|
||||
@ -164,23 +164,37 @@
|
||||
<string name="customInstance_summary">הוספת עותק משלך (על אחריותך)</string>
|
||||
<string name="instance_name">שם העותק</string>
|
||||
<string name="empty_instance">יש למלא את השם ואת כתובת ה־API.</string>
|
||||
<string name="invalid_url">נא למלא כתובת תקנית</string>
|
||||
<string name="invalid_url">נא למלא כתובת שעובדת</string>
|
||||
<string name="version">גרסה %1$s</string>
|
||||
<string name="about_summary">היכרות עם הצוות של LibreTube ואיך הכול התחיל.</string>
|
||||
<string name="instance_api_url">כתובת API של העותק</string>
|
||||
<string name="instance_api_url">כתובת ל־API של העותק</string>
|
||||
<string name="addInstance">הוספת עותק</string>
|
||||
<string name="clear_customInstances">מחיקת עותקים אחרים</string>
|
||||
<string name="shapedIcon">צורה טיפשית</string>
|
||||
<string name="related_streams">תזרימים קשורים</string>
|
||||
<string name="related_streams_summary">הצגת תזרימים שקשורים לסרטון.</string>
|
||||
<string name="related_streams">תוכן קשור</string>
|
||||
<string name="related_streams_summary">הצגת תזרימים שקשורים לצד הסרטון שמתנגן.</string>
|
||||
<string name="show_chapters">הצגת פרקים</string>
|
||||
<string name="hide_chapters">הסתרת פרקים</string>
|
||||
<string name="category_filler">בדיחות/משיקים למילוי</string>
|
||||
<string name="category_filler_description">זה מיועד לסצנות משיקות שנוספו רק כדי להעביר זמן או הומור שאינם נחוצים להבנת התוכן העיקרי של הסרטון.</string>
|
||||
<string name="category_filler_description">מיועד לסצנות משיקות שנוספו רק כדי להעביר זמן או הומור ואינן נחוצות להבנת התוכן העיקרי של הסרטון.</string>
|
||||
<string name="category_music_offtopic">מוזיקה: קטע לא מוזיקלי</string>
|
||||
<string name="category_preview">תצוגה מקדימה/סיכום</string>
|
||||
<string name="category_music_offtopic_description">זה מיוחד רק לסרטונים מוזיקליים. הוא אמור לכסות חלקים מהסרטון שאינם חלק מהערבולים הרשמיים. בסוף, הסרטון אמור לחקות את Spotify או כל גרסה מעורבלת אחרת בצורה כמה שיותר נאמנה או לצמצם דיבור או כל הפרעה אחרת.</string>
|
||||
<string name="category_preview_description">למקטעים שמציגים מה עתיד לקרות בסרטון הזה או בסרטונים העוקבים, אך לא מספק מידע נוסף. אם הוא כולל מקטעים שמופיעים רק כאן, סביר להניח שזאת לא הקטגוריה הנכונה.</string>
|
||||
<string name="buffering_goal">יעד אגירה</string>
|
||||
<string name="buffering_goal_summary">מספר השניות לטעינה מראש של סרטונים לכל היותר.</string>
|
||||
<string name="category_music_offtopic_description">מיועד רק לסרטונים מוזיקליים. הוא אמור לכסות חלקים מהסרטון שאינם חלק מהערבולים הרשמיים. בסוף, הסרטון אמור לחקות את Spotify או כל גרסה מעורבלת אחרת בצורה כמה שיותר נאמנה או לצמצם דיבור או כל הפרעה אחרת.</string>
|
||||
<string name="category_preview_description">למקטעים שמפרטים על תוכן עתידי בסרטון הזה או בסרטונים העוקבים, אך לא מספק מידע נוסף. אם הוא כולל מקטעים שמופיעים רק כאן, סביר להניח שזאת לא הקטגוריה הנכונה.</string>
|
||||
<string name="buffering_goal">טעינה טרומית</string>
|
||||
<string name="buffering_goal_summary">כמות השניות המרבית של וידאו שייאגר לזיכרון.</string>
|
||||
<string name="playerVideoFormat">תצורת הסרטונים לנגן</string>
|
||||
<string name="no_video">ללא וידאו</string>
|
||||
<string name="no_audio">ללא שמע</string>
|
||||
<string name="audio">שמע</string>
|
||||
<string name="video">וידאו</string>
|
||||
<string name="downloading">מתבצעת הורדה</string>
|
||||
<string name="player_autoplay">נגינה אוטומטית</string>
|
||||
<string name="hideTrendingPage">הסתרת עמוד המובילים</string>
|
||||
<string name="instance_frontend_url">כתובת למנשק המשתמש של העותק</string>
|
||||
<string name="player_summary">איכות והתנהגות הנגן</string>
|
||||
<string name="quality">איכות</string>
|
||||
<string name="behavior">התנהגות</string>
|
||||
<string name="seek_increment">הגדלת קפיצה</string>
|
||||
<string name="piped_summary">Piped הוא חלופה בקוד פתוח למנשק המשתמש של YouTube ומספק את ה־API בו אנו משתמשים. בלי Piped, LibreTube לא היה קיים. אנו מודים למפתחים מקרב לב!</string>
|
||||
</resources>
|
@ -73,7 +73,7 @@
|
||||
<string name="instance">인스턴스</string>
|
||||
<string name="website">웹사이트</string>
|
||||
<string name="defaultTab">기본 탭</string>
|
||||
<string name="category_sponsor_description">유료 프로모션, 유료 추천 및 직접 광고. 자기 홍보나 그들이 좋아하는 원인/제작자/웹사이트/제품에 대한 무료 홍보용이 아닙니다.</string>
|
||||
<string name="category_sponsor_description">유료 프로모션, 유료 추천 및 직접 광고가 해당됩니다. 자기 홍보나 재료/제작자/웹사이트/제품에 대한 공인된 무료 홍보물은 포함되지 않습니다.</string>
|
||||
<string name="segment_skipped">건너뛴 구간</string>
|
||||
<string name="sponsorblock_state">켜기</string>
|
||||
<string name="category_segments">구간</string>
|
||||
@ -101,10 +101,10 @@
|
||||
<string name="category_outro">엔드카드 및 크레딧</string>
|
||||
<string name="category_outro_description">엔딩 이후의 정보. 정보가 포함된 결론이 아닙니다.</string>
|
||||
<string name="license">라이선스</string>
|
||||
<string name="oledTheme">OLED 테마</string>
|
||||
<string name="oledTheme">검정</string>
|
||||
<string name="color_accent">액센트</string>
|
||||
<string name="color_blue">픽셀 블루</string>
|
||||
<string name="material_you">머터리얼</string>
|
||||
<string name="color_blue">파란색</string>
|
||||
<string name="material_you">미스틱 머터리얼 3</string>
|
||||
<string name="color_green">초록색</string>
|
||||
<string name="color_red">빨간색</string>
|
||||
<string name="color_yellow">노란색</string>
|
||||
@ -141,7 +141,7 @@
|
||||
<string name="no_update_available">최신 버전을 실행하고 있습니다.</string>
|
||||
<string name="playback_speed">기본 재생 속도</string>
|
||||
<string name="advanced">고급</string>
|
||||
<string name="player">플레이어</string>
|
||||
<string name="player">오디오 및 비디오</string>
|
||||
<string name="advanced_summary">플레이어, 다운로드, 기록</string>
|
||||
<string name="live">실시간</string>
|
||||
<string name="download_folder">이름</string>
|
||||
@ -175,4 +175,11 @@
|
||||
<string name="buffering_goal_summary">최대 버퍼링할 비디오의 시간(초)입니다.</string>
|
||||
<string name="playerVideoFormat">플레이어의 비디오 형식</string>
|
||||
<string name="buffering_goal">사전 로딩</string>
|
||||
<string name="legacyIcon">레거시</string>
|
||||
<string name="torchIcon">세련된 등불</string>
|
||||
<string name="fireIcon">멋진 불</string>
|
||||
<string name="category_filler">사족/농담</string>
|
||||
<string name="category_filler_description">분량을 채우기 위한 사족 씬이나 동영상의 메인 컨텐츠를 이해하는데 필요하지 않은 유머가 해당됩니다.</string>
|
||||
<string name="birdIcon">돌진하는 새</string>
|
||||
<string name="flameIcon">휘날리는 화염</string>
|
||||
</resources>
|
@ -59,8 +59,8 @@
|
||||
<string name="choose_quality_dialog">Kvalitāte</string>
|
||||
<string name="subscribeIsEmpty">Vispirms abonējiet dažus kanālus.</string>
|
||||
<string name="success">Izdarīts.</string>
|
||||
<string name="darkTheme">Tumšais motīvs</string>
|
||||
<string name="lightTheme">Gaišais motīvs</string>
|
||||
<string name="darkTheme">Tumšs</string>
|
||||
<string name="lightTheme">Gaišs</string>
|
||||
<string name="createPlaylist">Izveidot atskaņošanas sarakstu</string>
|
||||
<string name="loggedout">Jūs neesat pierakstījies.</string>
|
||||
<string name="noInternet">Vispirms savienojieties ar internetu.</string>
|
||||
@ -91,7 +91,7 @@
|
||||
<string name="category_outro_description">Informācija pēc video beigām. Nav domāts secinājumiem ar informāciju.</string>
|
||||
<string name="segment_skipped">Izlaida segmentu</string>
|
||||
<string name="sponsorblock_state">Ieslēgts</string>
|
||||
<string name="category_sponsor_description">Apmaksāta reklāma, apmaksāta pieminēšana un tiešas reklāmas. Ne pašreklamēšanās vai bezmaksas reklāmas veidotājiem/mājaslapām/produktiem, kas viņiem patīk.</string>
|
||||
<string name="category_sponsor_description">Apmaksāta reklāma, apmaksāta pieminēšana un tiešas reklāmas. Nav pašreklāmai vai neapmaksātai reklāmai veidotājiem/mājaslapām/produktiem, kas viņiem patīk.</string>
|
||||
<string name="category_selfpromo_description">Līdzīgs \"sponsoram\", taču neapmaksātām reklāmām vai pašreklamēšanai. Tas ietver sadaļas par precēm, ziedošanu vai informāciju par to, ar kuru viņi sadarbojās.</string>
|
||||
<string name="license">Licence</string>
|
||||
<string name="color_accent">Akcents</string>
|
||||
@ -100,7 +100,7 @@
|
||||
<string name="color_yellow">Dzeltens</string>
|
||||
<string name="color_green">Zaļš</string>
|
||||
<string name="color_purple">Violets</string>
|
||||
<string name="oledTheme">Melnais motīvs</string>
|
||||
<string name="oledTheme">Melns</string>
|
||||
<string name="material_you">Material 3</string>
|
||||
<string name="category_outro">Beigu ekrāns un titri</string>
|
||||
<string name="category_intro_description">Brīdis bez īsta satura. Varētu būt pauze, statisks kadrs, atkārtota animācija. Šo nevajadzētu izmantot brīžiem, kas satur informāciju.</string>
|
||||
@ -118,7 +118,7 @@
|
||||
<string name="playOnBackground">Atskaņot fonā</string>
|
||||
<string name="no_replies">Šim komentāram nav atbilžu.</string>
|
||||
<string name="authors">Autori</string>
|
||||
<string name="authors_summary">Iepazīstieties ar LibreTube komandu un visiem, kas palīdz uzlabot šo aplikāciju.</string>
|
||||
<string name="authors_summary">Iepazīstieties ar visiem.</string>
|
||||
<string name="download_folder_summary">Nosaukums mapei, kurā tiek saglabāti lejupielādētie faili.</string>
|
||||
<string name="download_directory">Lejupielādēt uz</string>
|
||||
<string name="download_folder">Nosaukums</string>
|
||||
@ -162,12 +162,12 @@
|
||||
<string name="playback_speed">Noklusējuma atskaņošanas ātrums</string>
|
||||
<string name="live">Tiešraide</string>
|
||||
<string name="customInstance_summary">Pievienot pielāgotu instanci (uz jūsu atbildību)</string>
|
||||
<string name="empty_instance">Jums vajag ierakstīt nosaukumu un API URL.</string>
|
||||
<string name="empty_instance">Ierakstiet nosaukumu un API URL.</string>
|
||||
<string name="clear_customInstances">Notīrīt pielāgotās instances</string>
|
||||
<string name="invalid_url">Lūdzu ievadiet derīgu URL</string>
|
||||
<string name="show_chapters">Rādīt nodaļas</string>
|
||||
<string name="hide_chapters">Paslēpt nodaļas</string>
|
||||
<string name="category_filler_description">Šis ir sprīžiem, kas nav par tēmu vai jokiem, kas nav nepieciešami, lai saprastu video galveno saturu.</string>
|
||||
<string name="category_filler_description">Laika sprīžiem, kas nav par tēmu vai jokiem, kas nav nepieciešami, lai saprastu video galveno saturu.</string>
|
||||
<string name="category_filler">Ne par tēmu/joki</string>
|
||||
<string name="category_music_offtopic">Mūzika: sprīži bez mūzikas</string>
|
||||
<string name="category_preview">Priekšskatījums/atkārtojums</string>
|
||||
@ -177,11 +177,12 @@
|
||||
<string name="instance_api_url">Instances API URL</string>
|
||||
<string name="addInstance">Pievienot instanci</string>
|
||||
<string name="version">Versija %1$s</string>
|
||||
<string name="about_summary">Iepazīstieties ar LibreTube komandu un kā tas viss notiek.</string>
|
||||
<string name="related_streams">Saistītās tiešraides</string>
|
||||
<string name="related_streams_summary">Rādīt saistītās tiešraides pie video.</string>
|
||||
<string name="buffering_goal">Buferizācijas mērķis</string>
|
||||
<string name="about_summary">Iepazīstieties ar LibreTube komandu un kā šeit viss notiek.</string>
|
||||
<string name="related_streams">Saistīts saturs</string>
|
||||
<string name="related_streams_summary">Rādīt saistītās tiešraides pie tā, ko jūs skatāties.</string>
|
||||
<string name="buffering_goal">Iepriekšēja ielādēšana</string>
|
||||
<string name="buffering_goal_summary">Maksimālais ilgums sekundēs, cik video tiek iepriekš ielādēts.</string>
|
||||
<string name="playerVideoFormat">Atskaņotāja video formāts</string>
|
||||
<string name="category_music_offtopic_description">Šis ir tikai priekš mūzikas video. Tas ir laika sprīžiem, kas nav oficiālajā dziesmas versijā. Beigās video vajadzētu būt tik līdzīgam Spotify vai jebkurai citai dziesmas versijai, cik vien iespējams.</string>
|
||||
<string name="category_music_offtopic_description">Tikai priekš mūzikas video. Tas ir laika sprīžiem, kas nav oficiālajā dziesmas versijā. Beigās video vajadzētu būt tik līdzīgam Spotify vai jebkurai citai dziesmas versijai, cik vien iespējams vai ar samazinātu runāšanas daudzumu un uzmanības novēršanu.</string>
|
||||
<string name="player_autoplay">Automātiski atskaņot</string>
|
||||
</resources>
|
@ -8,8 +8,8 @@
|
||||
<string name="register">Registrering</string>
|
||||
<string name="registered">Registrert. Du kan nå abonnere på de kanalene du ønsker.</string>
|
||||
<string name="instances">Velg en instans</string>
|
||||
<string name="customInstance">Legg til egendefinert instans</string>
|
||||
<string name="region">Velg en region</string>
|
||||
<string name="customInstance">Egendefinert instans</string>
|
||||
<string name="region">Region</string>
|
||||
<string name="login_register">Logg inn/registrer deg</string>
|
||||
<string name="dlcomplete">Nedlasting fullført.</string>
|
||||
<string name="vlc">Åpne i VLC</string>
|
||||
@ -122,12 +122,12 @@
|
||||
<string name="download_directory">Last ned til …</string>
|
||||
<string name="material_you">Mystisk Materiell 3</string>
|
||||
<string name="download_directory_summary">Der nedlastet media lagres.</string>
|
||||
<string name="contributing_summary">Send inn idéer, oversettelser, designendringer, rens og skriv kode. Dest mer som blir gjort, desto bedre blir det.</string>
|
||||
<string name="contributing_summary">Send inn idéer, oversettelser, designendringer, rens og skriv kode. Desto mer som blir gjort, desto bedre blir det.</string>
|
||||
<string name="license_summary">GPLv3+ er en gemenfrihetslig lisens. Bruk, studer, endre, og del; med alle.</string>
|
||||
<string name="update_summary">Klikk for å finne ut om programmet er av nyeste dato.</string>
|
||||
<string name="app_uptodate">Kjører siste versjon.</string>
|
||||
<string name="appearance_summary">Tilpass programmet til din smak.</string>
|
||||
<string name="advanced_summary">Spiller, nedlastninger, historikk</string>
|
||||
<string name="advanced_summary">Nedlastninger, historikk</string>
|
||||
<string name="fireIcon">Fasjonabel flamme</string>
|
||||
<string name="torchIcon">Finskodd fakkel</string>
|
||||
<string name="shapedIcon">Formodentlig formet</string>
|
||||
@ -147,7 +147,7 @@
|
||||
<string name="downloads_directory">Nedlastningsmappe</string>
|
||||
<string name="birdIcon">Framhevet fugl</string>
|
||||
<string name="category_selfpromo_description">Ligner på «Sponsor», bortsett fra at det er ubetalt eller selv-promotering. Dette inkluderer segmenter om ting, donasjoner, eller info om samarbeidspartnere.</string>
|
||||
<string name="category_sponsor_description">Betalt promosjon, betalt videresending og direkte reklame. Ikke for selvpromotering eller gratis nevning av tiltak/skapere/nettsider/produkter.</string>
|
||||
<string name="category_sponsor_description">Betalt promosjon, betalt videresending og direkte reklame. Ikke for selvpromotering eller sannferdig gratis nevning av tiltak, skapere, nettsider, eller produkter.</string>
|
||||
<string name="category_interaction_description">Når det er en kort påminnelse om å like, abonnere, eller følge midt i innhold. Hvis det er lagt eller om noe spesifikt bør du heller velge selvpromotering.</string>
|
||||
<string name="category_intro_description">Et intervall uten faktisk innhold. Kan være en pause, et statisk bilde, eller gjentagende animasjon. Skal ikke brukes for overganger som inneholder info.</string>
|
||||
<string name="sponsorblock_notifications">Merknader</string>
|
||||
@ -160,7 +160,7 @@
|
||||
<string name="no_update_available">Du kjører den siste versjonen.</string>
|
||||
<string name="playback_speed">Forvalgt avspillingshastighet</string>
|
||||
<string name="advanced">Avansert</string>
|
||||
<string name="player">Spiller</string>
|
||||
<string name="player">Lyd og video</string>
|
||||
<string name="instance_summary">Piped, innlogging, abonnementer</string>
|
||||
<string name="customInstance_summary">Legg til en egendefinert instans (på egen risiko)</string>
|
||||
<string name="instance_name">Navn på instans</string>
|
||||
@ -168,10 +168,10 @@
|
||||
<string name="addInstance">Legg til instans</string>
|
||||
<string name="invalid_url">Skriv inn en nettadresse som virker</string>
|
||||
<string name="about_summary">Bli kjent med LibreTube-laget og alt som skjer.</string>
|
||||
<string name="empty_instance">Du må fylle inn navnet og API-nettadressen.</string>
|
||||
<string name="empty_instance">Fyll inn navnet og API-nettadressen.</string>
|
||||
<string name="version">Versjon %1$s</string>
|
||||
<string name="clear_customInstances">Tøm egendefinerte instanser</string>
|
||||
<string name="related_streams">Relaterte strømmer</string>
|
||||
<string name="related_streams">Relatert innhold</string>
|
||||
<string name="related_streams_summary">Vis videoer relatert til det du ser.</string>
|
||||
<string name="show_chapters">Vis kapitler</string>
|
||||
<string name="hide_chapters">Skjul kapitler</string>
|
||||
@ -180,8 +180,21 @@
|
||||
<string name="category_preview">Forhåndsvining/tilbakeblikk</string>
|
||||
<string name="category_music_offtopic">Musikk: Parti uten musikk</string>
|
||||
<string name="category_filler_description">For avsporinger som kun er lagt til for å fylle tid, eller være morsomme, og ikke er nødvendige for å forstå videoens hovedinnhold.</string>
|
||||
<string name="category_music_offtopic_description">Dette er kun i bruk i musikkvideoer. Det bør dekke de delene av videoen som ikke er i den offisielle miksen. Til slutt skal videoen utgjøre det som finnes på Spotify eller annen mikset versjon så nært som mulig, eller redusere snakking og andre distraksjoner.</string>
|
||||
<string name="buffering_goal_summary">Maks. antall sekunders forhåndsinnlasting av videoer.</string>
|
||||
<string name="category_music_offtopic_description">Kun til bruk for musikkvideoer. Det bør dekke de delene av videoen som ikke er i den offisielle miksen. Til slutt skal videoen utgjøre det som finnes på Spotify eller annen mikset versjon så nært som mulig, eller redusere snakking og andre distraksjoner.</string>
|
||||
<string name="buffering_goal_summary">Maks. antall sekunders mellomlagring av videoer.</string>
|
||||
<string name="category_preview_description">For segmenter som viser hva som følger i denne eller kommende videoer i serien, men ikke har ytterligere info. Hvis dette inkluderer klipp som kun vises her er det antagelig ikke riktig kategori.</string>
|
||||
<string name="buffering_goal">Mellomlagringsmål</string>
|
||||
<string name="buffering_goal">Forhåndsinnlasting</string>
|
||||
<string name="downloading">Laster ned …</string>
|
||||
<string name="player_autoplay">Spill automatisk</string>
|
||||
<string name="hideTrendingPage">Ikke vis ting på vei opp</string>
|
||||
<string name="instance_frontend_url">Nettadresse til instans-skjermflate</string>
|
||||
<string name="audio">Lyd</string>
|
||||
<string name="video">Video</string>
|
||||
<string name="no_audio">Ingen lyd</string>
|
||||
<string name="no_video">Ingen video</string>
|
||||
<string name="quality">Kvalitet</string>
|
||||
<string name="behavior">Oppførsel</string>
|
||||
<string name="player_summary">Kvalitet og avspilleroppførsel</string>
|
||||
<string name="seek_increment">Blafringsmengde</string>
|
||||
<string name="piped_summary">Piped er en fri alternativ grenseflate for YouTube som tilbyr API-et programmet bruker. Uten Piped ville ikke LibreTube eksistert. Stor takk til utviklerne deres.</string>
|
||||
</resources>
|
@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="login">Zaloguj się</string>
|
||||
<string name="region">Wybierz region</string>
|
||||
<string name="region">Region</string>
|
||||
<string name="yes">Tak</string>
|
||||
<string name="download">Pobierz</string>
|
||||
<string name="choose_quality_dialog">Wybierz jakość:</string>
|
||||
<string name="choose_quality_dialog">Jakość</string>
|
||||
<string name="search_hint">Szukaj</string>
|
||||
<string name="subscribe">Subskrybuj</string>
|
||||
<string name="unsubscribe">ODSUBSKRYBUJ</string>
|
||||
@ -19,10 +19,10 @@
|
||||
<string name="already_logged_in">Jesteś już zalogowany, możesz się wylogować ze swojego konta.</string>
|
||||
<string name="login_first">Zaloguj się i spróbuj ponownie!</string>
|
||||
<string name="instances">Wybierz instancję</string>
|
||||
<string name="customInstance">Dodaj niestandardową instancję</string>
|
||||
<string name="login_register">Zaloguj/Zarejestruj się</string>
|
||||
<string name="customInstance">Niestandardowa instancja</string>
|
||||
<string name="login_register">Zaloguj/zarejestruj się</string>
|
||||
<string name="please_login">Najpierw zaloguj lub zarejestruj się przechodząc do ustawień!</string>
|
||||
<string name="importsuccess">Dodano subskrypcję!</string>
|
||||
<string name="importsuccess">Zasubskrybowano</string>
|
||||
<string name="subscribeIsEmpty">Zasubskrybuj ulubione kanały, aby widzieć tutaj ich najnowsze publikacje!</string>
|
||||
<string name="dlcomplete">Pobieranie ukończone.</string>
|
||||
<string name="dlisinprogress">Pobieranie innego materiału trwa, poczekaj aż proces się zakończy!</string>
|
||||
@ -35,37 +35,37 @@
|
||||
<string name="error">Coś poszło nie tak!</string>
|
||||
<string name="notgmail">To nie jest konto gmail!</string>
|
||||
<string name="defres">Domyślna jakość video</string>
|
||||
<string name="grid">Wybierz zagęszczenie siatki filmów</string>
|
||||
<string name="grid">Zagęszczenie siatki filmów</string>
|
||||
<string name="emptyList">Tu jeszcze nic nie ma!</string>
|
||||
<string name="deletePlaylist">Usuń playlistę</string>
|
||||
<string name="createPlaylist">Utwórz nową playlistę</string>
|
||||
<string name="playlistCreated">Utworzono playlistę!</string>
|
||||
<string name="playlistCreated">Utworzono playlistę.</string>
|
||||
<string name="playlistName">Nazwa playlisty</string>
|
||||
<string name="success">Udało się!</string>
|
||||
<string name="success">Gotowe.</string>
|
||||
<string name="fail">Nie powiodło się :(</string>
|
||||
<string name="about">O LibreTube</string>
|
||||
<string name="registered">Zarejestrowano się pomyślnie! Od teraz masz możliwość subskrybowania kanałów.</string>
|
||||
<string name="cannotDownload">Niemożliwe jest pobranie tej transmisji!</string>
|
||||
<string name="vlc">Otwórz w VLC</string>
|
||||
<string name="empty">Nazwa użytkownika i hasło nie mogą być puste!</string>
|
||||
<string name="vlcerror">Nie można otworzyć w programie VLC. Sprawdź, czy jest zainstalowany!</string>
|
||||
<string name="vlcerror">Nie można otworzyć w VLC. Aplikacja może być niezainstalowana</string>
|
||||
<string name="areYouSure">Na pewno chcesz usunąć tę palistę\?</string>
|
||||
<string name="addToPlaylist">Dodaj do playlisty</string>
|
||||
<string name="emptyPlaylistName">Nazwa playlisty nie może być pusta</string>
|
||||
<string name="import_from_yt_summary">Z YouTube lub NewPipe</string>
|
||||
<string name="videos">Filmy</string>
|
||||
<string name="changeLanguage">Zmień język</string>
|
||||
<string name="systemLanguage">Język systemowy</string>
|
||||
<string name="systemDefault">Motyw systemu</string>
|
||||
<string name="lightTheme">Tryb jasny</string>
|
||||
<string name="changeLanguage">Język</string>
|
||||
<string name="systemLanguage">System</string>
|
||||
<string name="systemDefault">Systemowy</string>
|
||||
<string name="lightTheme">Jasny</string>
|
||||
<string name="subscribers">%1$s subskrypcji</string>
|
||||
<string name="startpage">Główna</string>
|
||||
<string name="darkTheme">Tryb ciemny</string>
|
||||
<string name="darkTheme">Ciemny</string>
|
||||
<string name="subscriptions">Subskrypcje</string>
|
||||
<string name="library">Biblioteka</string>
|
||||
<string name="defaultTab">Strona Główna</string>
|
||||
<string name="sponsorblock">Blocker Sponsorów</string>
|
||||
<string name="sponsorblock_summary">Używa API z https://sponsor.ajay.app/</string>
|
||||
<string name="sponsorblock">SponsorBlock</string>
|
||||
<string name="sponsorblock_summary">Używa API https://sponsor.ajay.app/</string>
|
||||
<string name="choose_filter">Wybierz filter wyszukiwania</string>
|
||||
<string name="channels">Kanały</string>
|
||||
<string name="all">Wszystkie</string>
|
||||
@ -77,11 +77,11 @@
|
||||
<string name="sponsorblock_state">Włączono</string>
|
||||
<string name="category_selfpromo">Bezpłatna / własna promocja</string>
|
||||
<string name="category_segments">Segmenty</string>
|
||||
<string name="category_sponsor">Sponsor</string>
|
||||
<string name="category_sponsor">Lokowanie</string>
|
||||
<string name="category_sponsor_description">Płatna promocja, płatne polecenia i bezpośrednie reklamy. Nie służy do autopromocji ani niesponsorowanego chwalenia spraw/twórców/stron internetowych/produktów.</string>
|
||||
<string name="segment_skipped">Pominięto segment</string>
|
||||
<string name="category_selfpromo_description">Podobne do \"sponsora\", z wyjątkiem bezpłatniej lub samo promocji. Obejmuje to sekcje dotyczące towarów, darowizn lub informacji o tym, z kim współpracowali</string>
|
||||
<string name="category_interaction">Przypomnienie o interakcji (Subskrybuj)</string>
|
||||
<string name="category_interaction">Przypomnienie o interakcji (o polubieniu, subskrybcji)</string>
|
||||
<string name="category_interaction_description">Gdy pojawi się krótkie przypomnienie, aby polubić, zasubskrybować, czy zaobserwować w środku treści. Jeśli trwa to długo lub dotyczy czegoś konkretnego, fragment powinien zostać oznaczony jako autopromocja.</string>
|
||||
<string name="category_intro">Przerywnik / Animacja wprowadzająca</string>
|
||||
<string name="category_intro_description">Przerwa bez faktycznej treści. Może to być pauza, statyczna klatka, powtarzająca się animacja. Nie należy tego używać do efektów przejścia zawierających informacje.</string>
|
||||
@ -94,17 +94,17 @@
|
||||
<string name="customization">Dostosowywanie</string>
|
||||
<string name="website">Strona Internetowa</string>
|
||||
<string name="videoCount">%1$s filmy</string>
|
||||
<string name="noInternet">Brak Połączenia z Internetem</string>
|
||||
<string name="noInternet">Wpierw połącz się z internetem.</string>
|
||||
<string name="retry">Spróbuj Ponownie</string>
|
||||
<string name="comments">Komentarze</string>
|
||||
<string name="color_blue">Niebieski</string>
|
||||
<string name="color_yellow">Żółty</string>
|
||||
<string name="color_green">Zielony</string>
|
||||
<string name="color_accent">Colory Akcentów</string>
|
||||
<string name="color_red">Czerwony</string>
|
||||
<string name="color_purple">Fioletowy</string>
|
||||
<string name="oledTheme">Motyw OLED</string>
|
||||
<string name="material_you">Material You</string>
|
||||
<string name="color_blue">Błogi błękit</string>
|
||||
<string name="color_yellow">Żwawa żółć</string>
|
||||
<string name="color_green">Wdzięczna zieleń</string>
|
||||
<string name="color_accent">Akcenty</string>
|
||||
<string name="color_red">Kojąca czerwień</string>
|
||||
<string name="color_purple">Fantastyczny fiolet</string>
|
||||
<string name="oledTheme">Czarny</string>
|
||||
<string name="material_you">Mystic Material 3</string>
|
||||
<string name="sponsorblock_notifications">Powiadomienia</string>
|
||||
<string name="app_icon">Ikona aplikacji</string>
|
||||
<string name="youtube">YouTube</string>
|
||||
@ -133,7 +133,7 @@
|
||||
<string name="no_update_available">Używasz najnowszej wersji.</string>
|
||||
<string name="appearance_summary">Dostosuj aplikację do swoich potrzeb.</string>
|
||||
<string name="advanced_summary">Ustawienia wideo, pobrane i historia</string>
|
||||
<string name="authors_summary">Poznaj zespół LibreTube i wszystkich jego wolontariuszy, którzy pomagają ulepszać tę aplikację.</string>
|
||||
<string name="authors_summary">Poznaj wszystkich.</string>
|
||||
<string name="download_folder">Nazwa</string>
|
||||
<string name="download_folder_summary">Nazwa folderu, w którym zapisywane są pobrane treści.</string>
|
||||
<string name="downloads_directory">Folder pobranych</string>
|
||||
@ -143,8 +143,8 @@
|
||||
<string name="instance_summary">Piped, logowanie i subskrypcje</string>
|
||||
<string name="instance_api_url">Adres url API instancji</string>
|
||||
<string name="addInstance">Dodaj instancję</string>
|
||||
<string name="empty_instance">Musisz wpisać nazwę i adres URL interfejsu API.</string>
|
||||
<string name="invalid_url">Wprowadź prawidłowy adres url</string>
|
||||
<string name="empty_instance">Wpisz nazwę i adres URL interfejsu API.</string>
|
||||
<string name="invalid_url">Wpisz działający adres</string>
|
||||
<string name="customInstance_summary">Dodaj niestandardową instancję (na własne ryzyko)</string>
|
||||
<string name="website_summary">Odwiedź stronę internetową, aby uzyskać więcej informacji o aplikacji i jej funkcjach.</string>
|
||||
<string name="update">Sprawdź, czy dostępna jest nowsza wersja</string>
|
||||
@ -164,8 +164,19 @@
|
||||
<string name="advanced">Zaawansowane</string>
|
||||
<string name="player">Ustawienia video</string>
|
||||
<string name="live">Na Żywo</string>
|
||||
<string name="related_streams">Powiązane rekomendacje</string>
|
||||
<string name="related_streams">Sugerowane treści</string>
|
||||
<string name="hide_chapters">Ukryj rozdziały</string>
|
||||
<string name="show_chapters">Pokaż rozdziały</string>
|
||||
<string name="related_streams_summary">Proponuj powiązane do oglądanego filmu treści.</string>
|
||||
<string name="legacyIcon">Zaginione dziedzictwo</string>
|
||||
<string name="fireIcon">Zniewalający żar</string>
|
||||
<string name="category_filler">Przerywniki/Żarty</string>
|
||||
<string name="category_filler_description">Za sceny poboczne dodane tylko jako wypełniacz lub w ramach humor,u które nie są potrzebne do zrozumienia głównej treści filmu.</string>
|
||||
<string name="category_music_offtopic">Muzyka: Sekcja bez muzyki</string>
|
||||
<string name="category_music_offtopic_description">Tylko do użytku w teledyskach. Obejmuje fragmenty teledysku, które nie są częścią oficjalnego mixu. Teledysk powinien jak najbardziej przypominać wersję Spotify lub inną zmiksowaną wersję, lub ograniczyć ilość rozmów i innych elementów rozpraszających uwagę.</string>
|
||||
<string name="category_preview">Zajawka/Skrót</string>
|
||||
<string name="category_preview_description">Segmenty zapowiadające ten lub przyszłe filmy z danej serii, ale nie dostarczające dodatkowych informacji. Jeśli zawiera klipy niepojawiające się nigdzie indziej, najprawdopodobniej jest to niewłaściwa kategoria.</string>
|
||||
<string name="buffering_goal">Wstępne ładowanie</string>
|
||||
<string name="buffering_goal_summary">Maks. liczba sekund filmu do zbuforowania.</string>
|
||||
<string name="playerVideoFormat">Format wideo odtwarzacza</string>
|
||||
</resources>
|
@ -14,8 +14,8 @@
|
||||
<string name="loggedout">Saiu com sucesso.</string>
|
||||
<string name="already_logged_in">Você já está logado, você pode sair da sua conta.</string>
|
||||
<string name="instances">Escolha uma instância</string>
|
||||
<string name="customInstance">Adicionar uma instância personalizada</string>
|
||||
<string name="login_register">Entrar/Registrar</string>
|
||||
<string name="customInstance">Instância personalizada</string>
|
||||
<string name="login_register">Entrar/registrar</string>
|
||||
<string name="please_login">Por favor, faça login ou registre-se nas configurações primeiro!</string>
|
||||
<string name="subscribeIsEmpty">Inscreva-se em alguns canais primeiro.</string>
|
||||
<string name="cannotDownload">Não é possível baixar este stream.</string>
|
||||
@ -29,52 +29,52 @@
|
||||
<string name="unknown_error">Erro de rede.</string>
|
||||
<string name="error">Algo deu errado.</string>
|
||||
<string name="empty">Você precisa colocar um nome de usuário e senha.</string>
|
||||
<string name="notgmail">Esta não é sua conta do Gmail.</string>
|
||||
<string name="notgmail">Isto é para uma conta LibreTube.</string>
|
||||
<string name="defres">Resolução de vídeo padrão</string>
|
||||
<string name="grid">Escolha as colunas da grade</string>
|
||||
<string name="grid">Colunas de grade</string>
|
||||
<string name="emptyList">Não há nada aqui.</string>
|
||||
<string name="deletePlaylist">Excluir playlist</string>
|
||||
<string name="createPlaylist">Criar playlist</string>
|
||||
<string name="playlistCreated">Playlist criada!</string>
|
||||
<string name="playlistCreated">Playlist criada.</string>
|
||||
<string name="playlistName">Nome da playlist</string>
|
||||
<string name="addToPlaylist">Adicionar à Playlist</string>
|
||||
<string name="success">Sucesso!</string>
|
||||
<string name="addToPlaylist">Adicionar à playlist</string>
|
||||
<string name="success">Feito.</string>
|
||||
<string name="fail">Falhou :(</string>
|
||||
<string name="about">Sobre</string>
|
||||
<string name="choose_quality_dialog">Qualidade</string>
|
||||
<string name="subscribe">Inscrever-se</string>
|
||||
<string name="dlisinprogress">Outro download já está em andamento, por favor aguarde até que seja concluído.</string>
|
||||
<string name="dlisinprogress">Aguarde até que todos os downloads sejam concluídos…</string>
|
||||
<string name="username">Nome do usuário</string>
|
||||
<string name="registered">Registrado com sucesso! Agora você pode se inscrever nos canais que deseja.</string>
|
||||
<string name="login_first">Por favor, faça o login e tente novamente!</string>
|
||||
<string name="login_first">Por favor, faça o login e tente novamente.</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="region">Escolha uma região</string>
|
||||
<string name="region">Região</string>
|
||||
<string name="importsuccess">Inscrito</string>
|
||||
<string name="areYouSure">Tem certeza de que deseja excluir esta playlist\?</string>
|
||||
<string name="emptyPlaylistName">O nome da playlist não pode estar vazio</string>
|
||||
<string name="subscriptions">Inscrições</string>
|
||||
<string name="videos">Vídeos</string>
|
||||
<string name="changeLanguage">Mudar idioma</string>
|
||||
<string name="systemLanguage">Idioma do sistema</string>
|
||||
<string name="systemDefault">Padrão do sistema</string>
|
||||
<string name="lightTheme">Tema claro</string>
|
||||
<string name="darkTheme">Tema escuro</string>
|
||||
<string name="changeLanguage">Linguagem</string>
|
||||
<string name="systemLanguage">Sistema</string>
|
||||
<string name="systemDefault">Sistema</string>
|
||||
<string name="lightTheme">Claro</string>
|
||||
<string name="darkTheme">Escuro</string>
|
||||
<string name="import_from_yt_summary">Do YouTube ou NewPipe</string>
|
||||
<string name="subscribers">%1$s inscritos</string>
|
||||
<string name="library">Biblioteca</string>
|
||||
<string name="startpage">Início</string>
|
||||
<string name="customization">Personalização</string>
|
||||
<string name="customization">Ajustes</string>
|
||||
<string name="settings">Configurações</string>
|
||||
<string name="videoCount">%1$s vídeos</string>
|
||||
<string name="location">Localização</string>
|
||||
<string name="instance">Instância</string>
|
||||
<string name="website">Sítio Web</string>
|
||||
<string name="comments">Comentários</string>
|
||||
<string name="noInternet">Sem ligação à Internet</string>
|
||||
<string name="noInternet">Conecte-se à Internet primeiro.</string>
|
||||
<string name="retry">Tente novamente</string>
|
||||
<string name="defaultTab">Aba padrão</string>
|
||||
<string name="sponsorblock">SponsorBlock</string>
|
||||
<string name="sponsorblock_summary">Utiliza a API de https://sponsor.ajay.app/</string>
|
||||
<string name="sponsorblock_summary">Usa a API https://sponsor.ajay.app</string>
|
||||
<string name="channels">Canais</string>
|
||||
<string name="choose_filter">Escolher filtro de pesquisa</string>
|
||||
<string name="clear_history">Limpar histórico</string>
|
||||
@ -91,29 +91,96 @@
|
||||
<string name="sponsorblock_state">Habilitado</string>
|
||||
<string name="category_segments">Segmentos</string>
|
||||
<string name="category_sponsor">Patrocinador</string>
|
||||
<string name="category_sponsor_description">Promoção paga, referências pagas e publicidade directa. Não funciona para auto-promoção, anúncios gratuitos a causas/criadores/websites ou produtos que eles gostam.</string>
|
||||
<string name="category_sponsor_description">Promoção paga, referências pagas e anúncios diretos. Não para autopromoção ou mensagens genuínas gratuitas para causas, criadores, sites e produtos.</string>
|
||||
<string name="category_intro">Interrupção/Introdução</string>
|
||||
<string name="category_intro_description">Um intervalo sem conteúdo. Pode ser uma pausa, imagem estática ou uma animação que se repete. Isto não deve ser utilizado para transições que contém informação.</string>
|
||||
<string name="category_intro_description">Um intervalo sem conteúdo real. Pode ser uma pausa, quadro estático, animação repetida. Não deve ser usado para transições contendo informações.</string>
|
||||
<string name="category_outro">Telas finais/Créditos</string>
|
||||
<string name="license">Licença</string>
|
||||
<string name="category_selfpromo">Não paga/Auto-promoção</string>
|
||||
<string name="category_selfpromo_description">Similar a \" patrocinador\", excepto para promoção não paga ou auto-promoção. Isto inclui seções sobre mercadorias, doações, ou informação sobre com quem colaboraram.</string>
|
||||
<string name="category_interaction">Lembrete de interação (Inscrever-se)</string>
|
||||
<string name="category_interaction_description">Quando tem um breve lembrete para gostar, se inscrever ou segui-los no meio do conteúdo. Se for muito longo ou sobre algo específico, deve, em vez disso, estar sob auto-promoção.</string>
|
||||
<string name="category_outro_description">Créditos ou quando as telas finais do YouTube aparecem.</string>
|
||||
<string name="category_selfpromo_description">Semelhante a \"patrocinador\", exceto para promoção não paga ou autopromoção. Isso inclui seções sobre mercadorias, doações ou informações sobre com quem eles colaboraram.</string>
|
||||
<string name="category_interaction">Lembrete de interação (curtir e se inscrever)</string>
|
||||
<string name="category_interaction_description">Quando há um pequeno lembrete para curtir, se inscrever ou seguir no meio do conteúdo. Se for longo ou sobre algo específico, deve ser autopromoção.</string>
|
||||
<string name="category_outro_description">Informações após o final. Não para conclusões com informações.</string>
|
||||
<string name="color_accent">Cor de realce</string>
|
||||
<string name="color_red">Vermelho</string>
|
||||
<string name="color_blue">Azul Pixel</string>
|
||||
<string name="color_yellow">Amarelo</string>
|
||||
<string name="color_green">Verde</string>
|
||||
<string name="color_purple">Roxo</string>
|
||||
<string name="oledTheme">Tema OLED</string>
|
||||
<string name="material_you">Material You</string>
|
||||
<string name="app_icon">Ícone do aplicativo</string>
|
||||
<string name="oledTheme">Preto</string>
|
||||
<string name="material_you">Material Místico 3</string>
|
||||
<string name="app_icon">Ícone</string>
|
||||
<string name="sponsorblock_notifications">Notificações</string>
|
||||
<string name="enabled">Habilitado</string>
|
||||
<string name="piped">Canalizado</string>
|
||||
<string name="youtube">YouTube</string>
|
||||
<string name="playOnBackground">Reproduzir em segundo plano</string>
|
||||
<string name="disabled">Desabilitado</string>
|
||||
<string name="authors">Autores</string>
|
||||
<string name="authors_summary">Conheça todos.</string>
|
||||
<string name="internal_storage">Armazenamento interno</string>
|
||||
<string name="sdcard">SD card</string>
|
||||
<string name="defaultIcon">Padrão</string>
|
||||
<string name="views">%1$s visualizações</string>
|
||||
<string name="update_available_text">Ir para lançamentos no GitHub para baixá-lo\?</string>
|
||||
<string name="download_directory_summary">Onde a mídia baixada é armazenada.</string>
|
||||
<string name="license_summary">A GPLv3+ é uma licença livre com copyleft. Use, estude, mude e compartilhe; com tudo.</string>
|
||||
<string name="donate_summary">Dê o que isso vale para você, se puder. O Team LibreTube é menor do que sua doação ou ajuda.</string>
|
||||
<string name="contributing_summary">Forneça ideias, traduções, alterações de design, limpe e escreva código. Quanto mais for feito, melhor fica!</string>
|
||||
<string name="app_uptodate">Executando a versão mais recente.</string>
|
||||
<string name="no_update_available">Você está executando a versão mais recente.</string>
|
||||
<string name="fireIcon">Fogo na moda</string>
|
||||
<string name="shapedIcon">Forma boba</string>
|
||||
<string name="gradientIcon">Gradiente liso</string>
|
||||
<string name="torchIcon">Lanterna da moda</string>
|
||||
<string name="customInstance_summary">Adicione uma instância personalizada (por sua conta e risco)</string>
|
||||
<string name="version">Versão %1$s</string>
|
||||
<string name="category_filler">Filler Tangente/Piadas</string>
|
||||
<string name="category_music_offtopic">Música: Seção Não-Música</string>
|
||||
<string name="category_music_offtopic_description">Apenas para uso em vídeos de música. Deve abranger partes do vídeo que não fazem parte de mixagens oficiais. No final, o vídeo deve se assemelhar ao Spotify ou qualquer outra versão mista o mais próximo possível, ou reduzir a fala ou outras distrações.</string>
|
||||
<string name="category_preview">Visualizar/Recapitular</string>
|
||||
<string name="appearance">Aparência</string>
|
||||
<string name="app_behavior">Comportamento</string>
|
||||
<string name="downloads">Downloads</string>
|
||||
<string name="video_format">Formato de vídeo</string>
|
||||
<string name="video_format_summary">Conversão de arquivos se o áudio e o vídeo forem baixados.</string>
|
||||
<string name="website_summary">Visite o site para obter mais informações sobre o aplicativo e seus recursos.</string>
|
||||
<string name="update">Procure uma nova versão</string>
|
||||
<string name="update_summary">Clique para saber se o aplicativo está atualizado.</string>
|
||||
<string name="playback_speed">Velocidade de reprodução padrão</string>
|
||||
<string name="advanced">Avançado</string>
|
||||
<string name="player">Áudio e vídeo</string>
|
||||
<string name="appearance_summary">Ajuste o aplicativo ao seu gosto.</string>
|
||||
<string name="no_replies">Este comentário não tem respostas.</string>
|
||||
<string name="download_folder">Nome</string>
|
||||
<string name="birdIcon">Pássaro impulsionado</string>
|
||||
<string name="download_folder_summary">O nome da pasta onde a mídia baixada está armazenada.</string>
|
||||
<string name="downloads_directory">Pasta de download</string>
|
||||
<string name="music_directory">Pasta de música</string>
|
||||
<string name="movies_directory">Pasta de música</string>
|
||||
<string name="shareTo">Compartilhar URL para</string>
|
||||
<string name="legacyIcon">Legado perdido</string>
|
||||
<string name="flameIcon">Chama voadora</string>
|
||||
<string name="instance_summary">Canalizado, login, assinaturas</string>
|
||||
<string name="instance_name">Nome da instância</string>
|
||||
<string name="instance_api_url">URL para API de instância</string>
|
||||
<string name="addInstance">Adicionar instância</string>
|
||||
<string name="empty_instance">Preencha o nome e o URL da API.</string>
|
||||
<string name="clear_customInstances">Limpar instâncias personalizadas</string>
|
||||
<string name="invalid_url">Insira um URL que funcione</string>
|
||||
<string name="about_summary">Conheça a equipe LibreTube e como tudo acontece.</string>
|
||||
<string name="related_streams">Conteúdo Relacionado</string>
|
||||
<string name="show_chapters">Mostrar capítulos</string>
|
||||
<string name="category_filler_description">Para cenas tangenciais adicionadas apenas para preenchimento ou humor não é necessário entender o conteúdo principal do vídeo.</string>
|
||||
<string name="category_preview_description">Para segmentos que detalham o conteúdo futuro neste ou em futuros vídeos da série, mas não forneça informações adicionais. Se incluir clipes que só aparecem aqui, provavelmente é a categoria errada.</string>
|
||||
<string name="buffering_goal">Pré-carregamento</string>
|
||||
<string name="buffering_goal_summary">Máx. quantidade de segundos de vídeo para buffer.</string>
|
||||
<string name="playerVideoFormat">Formato de vídeo para player</string>
|
||||
<string name="update_available">A versão %1$s está disponível</string>
|
||||
<string name="contributing">Contribuindo</string>
|
||||
<string name="donate">Doar</string>
|
||||
<string name="advanced_summary">Downloads, histórico</string>
|
||||
<string name="player_summary">Qualidade e comportamento do player</string>
|
||||
<string name="hide_chapters">Ocultar capítulos</string>
|
||||
<string name="related_streams_summary">Mostre streams relacionados ao lado do que você assiste.</string>
|
||||
</resources>
|
@ -22,7 +22,7 @@
|
||||
<string name="instances">Выберите экземпляр</string>
|
||||
<string name="customInstance">Пользовательский экземпляр</string>
|
||||
<string name="region">Регион</string>
|
||||
<string name="login_register">Войти/Зарегистрироваться</string>
|
||||
<string name="login_register">Войти/зарегистрироваться</string>
|
||||
<string name="please_login">Пожалуйста, сначала войдите или зарегистрируйтесь в настройках.</string>
|
||||
<string name="importsuccess">Подписан</string>
|
||||
<string name="subscribeIsEmpty">Сначала подпишитесь на некоторые каналы.</string>
|
||||
@ -57,8 +57,8 @@
|
||||
<string name="changeLanguage">Язык</string>
|
||||
<string name="systemLanguage">Системный</string>
|
||||
<string name="systemDefault">Системная</string>
|
||||
<string name="lightTheme">Светлая тема</string>
|
||||
<string name="darkTheme">Тёмная тема</string>
|
||||
<string name="lightTheme">Светлая</string>
|
||||
<string name="darkTheme">Тёмная</string>
|
||||
<string name="subscribers">%1$s подписчиков</string>
|
||||
<string name="startpage">Домашняя</string>
|
||||
<string name="import_from_yt_summary">Из YouTube или NewPipe</string>
|
||||
@ -82,7 +82,7 @@
|
||||
<string name="history">История</string>
|
||||
<string name="search_history">История поиска</string>
|
||||
<string name="sponsorblock">SponsorBlock</string>
|
||||
<string name="sponsorblock_summary">Использует API с https://sponsor.ajay.app/</string>
|
||||
<string name="sponsorblock_summary">Использует API сервиса https://sponsor.ajay.app/</string>
|
||||
<string name="segment_skipped">Пропущен сегмент</string>
|
||||
<string name="sponsorblock_state">Вкл</string>
|
||||
<string name="category_interaction">Напоминание о взаимодействии (как подписка)</string>
|
||||
@ -90,7 +90,7 @@
|
||||
<string name="category_outro">Конечная заставка и титры</string>
|
||||
<string name="category_segments">Сегменты</string>
|
||||
<string name="category_sponsor">Спонсор</string>
|
||||
<string name="category_sponsor_description">Платное продвижение, рефералы и прямая реклама. Не для саморекламы или благодарности причинам/создателям/сайтам/продуктам, которые им нравятся.</string>
|
||||
<string name="category_sponsor_description">Платное продвижение, рефералы и навязчивая реклама. Не является саморекламой или бесплатным отзывом о сервиса/авторах/веб-сайтах/продуктах, которые автору нравятся.</string>
|
||||
<string name="music_playlists">Плейлисты из YT Music</string>
|
||||
<string name="music_songs">Песни из YT Music</string>
|
||||
<string name="music_videos">Видео из YT Music</string>
|
||||
@ -99,15 +99,15 @@
|
||||
<string name="category_intro_description">Интервал без фактического контента. Это может быть пауза, статичный кадр, повторяющаяся анимация. Не должно использоваться для переходов, содержащих информацию.</string>
|
||||
<string name="category_outro_description">Когда появляется концовка. Не для выводов с информацией.</string>
|
||||
<string name="category_selfpromo">Неоплачиваемый/Самореклама</string>
|
||||
<string name="category_selfpromo_description">Аналогично «спонсору», за исключением бесплатных или саморекламируемых. Сюда входят разделы о товарах, пожертвованиях или информации о том, с кем они сотрудничали.</string>
|
||||
<string name="category_selfpromo_description">Аналогично «спонсорам», за исключением бесплатной рекламы или саморекламы. Сюда входят части о товарах, пожертвованиях или информации о том, с кем они сотрудничали.</string>
|
||||
<string name="license">Лицензия</string>
|
||||
<string name="color_accent">Акцентны</string>
|
||||
<string name="color_red">Крутой красный</string>
|
||||
<string name="color_blue">Сияющий синий</string>
|
||||
<string name="color_blue">Синий Pixel</string>
|
||||
<string name="color_yellow">Желейный жёлтый</string>
|
||||
<string name="color_green">Заводной зелёный</string>
|
||||
<string name="color_purple">Приятный пурпурный</string>
|
||||
<string name="oledTheme">Чёрная тема</string>
|
||||
<string name="oledTheme">OLED-тема</string>
|
||||
<string name="material_you">Мистический Material 3</string>
|
||||
<string name="app_icon">Значок</string>
|
||||
<string name="sponsorblock_notifications">Уведомления</string>
|
||||
@ -132,7 +132,7 @@
|
||||
<string name="gradientIcon">Гладкий градиент</string>
|
||||
<string name="update_available_text">Перейти к выпускам на GitHub, чтобы загрузить его\?</string>
|
||||
<string name="app_behavior">Поведение</string>
|
||||
<string name="authors_summary">Познакомьтесь с командой LibreTube и всеми ее участниками, помогающими улучшить приложение.</string>
|
||||
<string name="authors_summary">Познакомьтесь со всеми.</string>
|
||||
<string name="download_folder_summary">Имя папки, в которой хранится загруженные медиафайлы.</string>
|
||||
<string name="birdIcon">Прикольная птица</string>
|
||||
<string name="fireIcon">Огненный огонь</string>
|
||||
@ -144,24 +144,24 @@
|
||||
<string name="category_filler">Тангенс наполнения/шутки</string>
|
||||
<string name="category_music_offtopic">Музыка: Немузыкальная секция</string>
|
||||
<string name="category_preview">Предварительный просмотр/резюме</string>
|
||||
<string name="category_preview_description">Для сегментов, которые показывают, что будет в этом или будущих видео той же серии, но не предоставляют дополнительную информацию. Если он включает в себя клипы, которые появляются только здесь, скорее всего, это не та категория.</string>
|
||||
<string name="category_preview_description">Для сегментов, подробно описывающих предстоящий контент в этом или будущих видео этой серии, но не предоставляющих дополнительную информацию. Если он включает в себя клипы, которые появляются только здесь, скорее всего, это неправильная категория.</string>
|
||||
<string name="appearance">Внешний вид</string>
|
||||
<string name="no_replies">Этот комментарий не имеет ответов.</string>
|
||||
<string name="customInstance_summary">Добавьте пользовательский экземпляр (на свой страх и риск)</string>
|
||||
<string name="addInstance">Добавить экземпляр</string>
|
||||
<string name="empty_instance">Вы должны заполнить имя и URL-адрес API.</string>
|
||||
<string name="related_streams">Связанные потоки</string>
|
||||
<string name="empty_instance">Заполните имя и URL-адрес API.</string>
|
||||
<string name="related_streams">Связанный контент</string>
|
||||
<string name="show_chapters">Показать главы</string>
|
||||
<string name="hide_chapters">Скрыть главы</string>
|
||||
<string name="category_music_offtopic_description">Это только для использования в музыкальных клипах. Он должен охватывать части видео, не являющиеся частью официальных миксов. В конце концов, видео должно быть максимально похоже на версию Spotify или любую другую микс-версию, или должно быть меньше разговоров и других отвлекающих факторов.</string>
|
||||
<string name="category_filler_description">Это для тангенциальных сцен, добавленных только для наполнения или юмора, которые не требуются для понимания основного содержания видео.</string>
|
||||
<string name="category_music_offtopic_description">Только для использования в музыкальных клипах. Он должен охватывать части видео, не являющиеся частью официальных миксов. В конечном итоге, видео должно быть максимально похоже на версию Spotify или любую другую микс-версию, или должно быть меньше разговоров и других отвлекающих факторов.</string>
|
||||
<string name="category_filler_description">Для пустых сцен, которые были добавлены только для заполнения контентом или юмор который не требуется для понимания основного контента видео.</string>
|
||||
<string name="instance_name">Имя экземпляра</string>
|
||||
<string name="instance_api_url">URL-адрес API экземпляра</string>
|
||||
<string name="buffering_goal_summary">Максимальное количество секунд для пред-загрузки видео.</string>
|
||||
<string name="buffering_goal_summary">Макс. количество секунд видео для буферизации.</string>
|
||||
<string name="clear_customInstances">Очистить пользовательские экземпляры</string>
|
||||
<string name="related_streams_summary">Показать потоки, связанные с видео.</string>
|
||||
<string name="invalid_url">Пожалуйста, введите корректный url</string>
|
||||
<string name="buffering_goal">Цель буферизации</string>
|
||||
<string name="related_streams_summary">Показывать связанные потоки с тем, что вы смотрите.</string>
|
||||
<string name="invalid_url">Пожалуйста, введите рабочий URL</string>
|
||||
<string name="buffering_goal">Предварительная загрузка</string>
|
||||
<string name="downloads">Загрузки</string>
|
||||
<string name="video_format">Формат видео</string>
|
||||
<string name="video_format_summary">Преобразование файлов, если и аудио, и видео загружены.</string>
|
||||
@ -183,4 +183,12 @@
|
||||
<string name="appearance_summary">Настройте приложение по своему вкусу.</string>
|
||||
<string name="advanced_summary">Плеер, загрузки, история</string>
|
||||
<string name="live">В прямом эфире</string>
|
||||
<string name="playerVideoFormat">Формат видео для плеера</string>
|
||||
<string name="audio">Аудио</string>
|
||||
<string name="video">Видео</string>
|
||||
<string name="downloading">Загрузка</string>
|
||||
<string name="player_autoplay">Автовоспроизведение</string>
|
||||
<string name="hideTrendingPage">Скрыть вкладку \"тренды\"</string>
|
||||
<string name="no_video">Нет видео</string>
|
||||
<string name="no_audio">Нет звука</string>
|
||||
</resources>
|
@ -48,7 +48,7 @@
|
||||
<string name="about">Hakkında</string>
|
||||
<string name="vlcerror">VLC\'de açılamıyor. Kurulmamış olabilir.</string>
|
||||
<string name="instances">Erişim Aracı Seç</string>
|
||||
<string name="customInstance">Dilediğiniz bir erişim aracısını ekleyin</string>
|
||||
<string name="customInstance">Özel erişim aracı</string>
|
||||
<string name="server_error">Sunucu bir engelle karşılaştı, başka bir erişim aracını deneyebilir misiniz\?</string>
|
||||
<string name="grid">Ağ sütunları</string>
|
||||
<string name="import_from_yt_summary">YouTube veya NewPipe\'tan</string>
|
||||
@ -56,9 +56,9 @@
|
||||
<string name="subscriptions">Abonelikler</string>
|
||||
<string name="library">Kütüphane</string>
|
||||
<string name="systemDefault">Sistem</string>
|
||||
<string name="darkTheme">Tamamen karanlık</string>
|
||||
<string name="darkTheme">Koyu</string>
|
||||
<string name="subscribers">%1$s Abone</string>
|
||||
<string name="lightTheme">Parlak işık</string>
|
||||
<string name="lightTheme">Açık</string>
|
||||
<string name="videos">Videolar</string>
|
||||
<string name="startpage">Ana Sayfa</string>
|
||||
<string name="changeLanguage">Dil</string>
|
||||
@ -74,7 +74,7 @@
|
||||
<string name="website">İnternet Sitesi</string>
|
||||
<string name="defaultTab">Varsayılan Sekme</string>
|
||||
<string name="choose_filter">Arama filtresi seç</string>
|
||||
<string name="category_outro_description">Kanal ikonları veya YouTube video kartları göründüğünde. Bilgi ile sonuçlar için değil.</string>
|
||||
<string name="category_outro_description">Sonunu takip eden bilgi. Bilgi içeren sonuçlar için değil.</string>
|
||||
<string name="sponsorblock_state">Açık</string>
|
||||
<string name="clear_history">Geçmişi Temizle</string>
|
||||
<string name="sponsorblock">SponsorBlok</string>
|
||||
@ -88,89 +88,105 @@
|
||||
<string name="category_segments">Bölümler</string>
|
||||
<string name="category_sponsor">Bağışçı</string>
|
||||
<string name="segment_skipped">Bölüm atlandı</string>
|
||||
<string name="category_sponsor_description">Ücretli promosyon, ücretli yönlendirmeler ve reklamlar içindir. Kendini veya sevdikleri nedenleri/üreticileri/internet sitelerini/ürünleri tanıtmak için değildir.</string>
|
||||
<string name="category_sponsor_description">Ücretli promosyon, yönlendirmeler ve doğrudan reklamlar. Kendi reklamını yapmak veya amaçlara, yaratıcılara, internet sitelerine ve ürünlere ücretsiz hakiki duyurular için değil.</string>
|
||||
<string name="category_selfpromo">Ödenmemiş/Kendini Tanıtmak</string>
|
||||
<string name="category_interaction">Etkileşim Hatırlatıcısı (Abone Ol)</string>
|
||||
<string name="category_interaction">Etkileşim hatırlatıcısı (beğen ve abone ol)</string>
|
||||
<string name="category_intro">Ara Verme/Giriş Animasyonu</string>
|
||||
<string name="category_intro_description">Gerçek içerik olmayan bir bölge. Duraklatma, durağan bir bölüm, tekrarlayan animasyon olabilir. Bu, bilgi içeren geçişler için kullanılmamalıdır.</string>
|
||||
<string name="category_interaction_description">İçeriğin ortasında beğenmek, abone olmak veya takip etmek için kısa bir hatırlatma olduğunda işe yarar. Uzunsa ya da belirli bir şey hakkında ise, bunun yerine \"kendini tanıtım\" altında olmalıdır.</string>
|
||||
<string name="category_intro_description">Gerçek içeriği olmayan bir aralık. Duraklatma, statik kare, yinelenen animasyon olabilir. Bilgi içeren geçişler için kullanılmamalıdır.</string>
|
||||
<string name="category_interaction_description">İçeriğin ortasında beğenmek, abone olmak veya takip etmek için kısa bir hatırlatma olduğunda. Uzun veya belirli bir şey hakkındaysa, bunun yerine kendini tanıtmalıdır.</string>
|
||||
<string name="category_selfpromo_description">Ücretsiz veya kendini tanıtım dışında \"bağışçı\" ile benzer. Bu, mallar, bağışlar veya kiminle işbirliği yaptığına dair bilgilerle ilgili bölümleri içerir.</string>
|
||||
<string name="category_outro">Video Kartları/Kanal İkonu</string>
|
||||
<string name="category_outro">Bitiş kartları ve kanal simgesi</string>
|
||||
<string name="music_songs">YT Müzik Şarkıları</string>
|
||||
<string name="music_albums">YT Müzik Albümleri</string>
|
||||
<string name="music_videos">YT Müzik Videoları</string>
|
||||
<string name="music_playlists">YT Müzik Oynatma Listeleri</string>
|
||||
<string name="license">Lisans</string>
|
||||
<string name="color_accent">Vurgu Rengi</string>
|
||||
<string name="oledTheme">OLED Tema</string>
|
||||
<string name="material_you">Kendi Tasarımı</string>
|
||||
<string name="color_green">Yeşil</string>
|
||||
<string name="color_purple">Mor</string>
|
||||
<string name="color_yellow">Sarı</string>
|
||||
<string name="color_blue">Piksel Mavisi</string>
|
||||
<string name="color_red">Kırmızı</string>
|
||||
<string name="color_accent">Vurgular</string>
|
||||
<string name="oledTheme">Siyah</string>
|
||||
<string name="material_you">Mistik Malzeme 3</string>
|
||||
<string name="color_green">Harika yeşil</string>
|
||||
<string name="color_purple">Keyifli mor</string>
|
||||
<string name="color_yellow">Yeeting sarı</string>
|
||||
<string name="color_blue">Mutlu mavi</string>
|
||||
<string name="color_red">Rahatlatıcı kırmızı</string>
|
||||
<string name="sponsorblock_notifications">Bildirimler</string>
|
||||
<string name="enabled">Etkinleştirildi</string>
|
||||
<string name="disabled">Devre dışı bırakıldı</string>
|
||||
<string name="app_icon">Uygulama Simgesi</string>
|
||||
<string name="enabled">Açık</string>
|
||||
<string name="disabled">Kapalı</string>
|
||||
<string name="app_icon">Simge</string>
|
||||
<string name="piped">Piped</string>
|
||||
<string name="youtube">YouTube</string>
|
||||
<string name="playOnBackground">Arka Planda Oynat</string>
|
||||
<string name="playOnBackground">Arka planda oynat</string>
|
||||
<string name="update_available">%1$s Sürümü Mevcut</string>
|
||||
<string name="update_available_text">Yeni bir güncelleme mevcut. GitHub\'daki güncelleme sayfasına yönlendirilmek için tamam\'a tıklayın.</string>
|
||||
<string name="update_available_text">İndirmek için GitHub\'daki sürümlere git\?</string>
|
||||
<string name="appearance">Görünüm</string>
|
||||
<string name="app_behavior">Uygulama Davranışı</string>
|
||||
<string name="app_behavior">Davranış</string>
|
||||
<string name="downloads">İndirilenler</string>
|
||||
<string name="video_format">Video formatı</string>
|
||||
<string name="video_format_summary">İndirilen videoların dönüştürüldüğü video formatı (yalnızca hem ses hem de video indirilirse geçerlidir).</string>
|
||||
<string name="download_directory">İndirme konumu</string>
|
||||
<string name="download_directory_summary">İndirdiğiniz medyanın depolandığı konum.</string>
|
||||
<string name="video_format_summary">Hem ses, hem de video indirilirse dosyaların dönüştürülmesi.</string>
|
||||
<string name="download_directory">Buraya İndir</string>
|
||||
<string name="download_directory_summary">İndirilen medyanın depolandığı yer.</string>
|
||||
<string name="contributing">Katkı</string>
|
||||
<string name="license_summary">GNU Genel Kamu Lisansı, yazılım ve diğer çalışma türleri için ücretsiz, genel bir lisanstır.</string>
|
||||
<string name="license_summary">GPLv3+, telif hakkıyla korunan bir bedava lisansdır. Kullanın, inceleyin, değiştirin ve paylaşın;herkesle.</string>
|
||||
<string name="donate">Bağış Yapın</string>
|
||||
<string name="donate_summary">Uygulamayı beğenirseniz ve çalışmalarımızı takdir ederseniz, bağış yapmanızdan memnuniyet duyarız.</string>
|
||||
<string name="website_summary">Uygulama ve özellikleri hakkında daha fazla bilgi edinmek için web sitemizi ziyaret edin.</string>
|
||||
<string name="contributing_summary">Fikirleriniz, çevirileriniz, tasarım değişiklikleriniz, kod temizlemeniz veya gerçek ağır kod değişiklikleriniz olsun, yardım her zaman memnuniyetle karşılanır. Ne kadar çok yapılırsa o kadar iyi olur!</string>
|
||||
<string name="update_summary">Yeni bir uygulama güncellemesi olup-olmadığını kontrol etmek için burayı tıklayın.</string>
|
||||
<string name="app_uptodate">Uygulama Güncel</string>
|
||||
<string name="no_update_available">Şu anda yeni bir güncelleme mevcut değil. Bizi izlemeye devam edin!</string>
|
||||
<string name="donate_summary">Yapabiliyorsan, bunun senin için değeri ne ise onu ver.LibreTube ekipi, bağışınız veya yardımınızdan daha küçüktür.</string>
|
||||
<string name="website_summary">Uygulama ve özellikleri hakkında daha fazla bilgi için internet sitesini ziyaret edin.</string>
|
||||
<string name="contributing_summary">Fikirler, çeviriler, tasarım değişiklikleri sağlayın, kodu temizleyin ve yazın. Ne kadar çok yapılırsa o kadar iyi olur!</string>
|
||||
<string name="update_summary">Uygulamanın güncel olup-olmadığını öğrenmek için tıklayın.</string>
|
||||
<string name="app_uptodate">En son sürümü çalıştırıyor.</string>
|
||||
<string name="no_update_available">En son sürümü çalıştırıyorsunuz.</string>
|
||||
<string name="playback_speed">Varsayılan oynatma hızı</string>
|
||||
<string name="advanced">Gelişmiş</string>
|
||||
<string name="player">Oynatıcı</string>
|
||||
<string name="appearance_summary">Uygulamanın istediğiniz gibi görünmesini sağlayın.</string>
|
||||
<string name="advanced_summary">Oynatıcı, İndirilenler, Geçmiş</string>
|
||||
<string name="update">Uygulama Güncellenmesi</string>
|
||||
<string name="player">Ses ve video</string>
|
||||
<string name="appearance_summary">Uygulamayı zevkinize göre ayarlayın.</string>
|
||||
<string name="advanced_summary">İndirilenler, geçmiş</string>
|
||||
<string name="update">Yeni sürümü arayın</string>
|
||||
<string name="live">Canlı</string>
|
||||
<string name="no_replies">Bu yoruma cevap yok.</string>
|
||||
<string name="authors">Yazarlar</string>
|
||||
<string name="authors_summary">LibreTube Ekipinin arkasında kimin olduğunu ve sihri kimin yapdığını öğrenin.</string>
|
||||
<string name="authors_summary">Uygulamayı geliştirmeye ve iyileştirmeye dahil olan herkesi tanıyın.</string>
|
||||
<string name="internal_storage">Dahili depolama</string>
|
||||
<string name="download_folder_summary">İndirilen medya adı ile bir klasörde saklanır.</string>
|
||||
<string name="movies_directory">Filmler dizini</string>
|
||||
<string name="shareTo">URL\'yi Paylaşın:</string>
|
||||
<string name="download_folder">Dizin adı</string>
|
||||
<string name="downloads_directory">İndirilenler dizini</string>
|
||||
<string name="download_folder_summary">İndirilen medyanın saklandığı klasörün adı.</string>
|
||||
<string name="movies_directory">Filmler klasörü</string>
|
||||
<string name="shareTo">URL\'yi şununla paylaş:</string>
|
||||
<string name="download_folder">Ad</string>
|
||||
<string name="downloads_directory">İndirme klasörü</string>
|
||||
<string name="sdcard">Hafıza kartı</string>
|
||||
<string name="music_directory">Müzik dizini</string>
|
||||
<string name="music_directory">Müzik klasörü</string>
|
||||
<string name="defaultIcon">Varsayılan</string>
|
||||
<string name="gradientIcon">Gradyan</string>
|
||||
<string name="fireIcon">Yangın</string>
|
||||
<string name="torchIcon">El Feneri</string>
|
||||
<string name="birdIcon">Kuş</string>
|
||||
<string name="legacyIcon">Eski</string>
|
||||
<string name="gradientIcon">Pergar eğilimi</string>
|
||||
<string name="fireIcon">Moda ateş</string>
|
||||
<string name="torchIcon">Şık fener</string>
|
||||
<string name="birdIcon">Güçlendirilmiş kuş</string>
|
||||
<string name="legacyIcon">Kayıp miras</string>
|
||||
<string name="views">%1$s görüntüleme</string>
|
||||
<string name="shapedIcon">Şekilli</string>
|
||||
<string name="flameIcon">Alev</string>
|
||||
<string name="shapedIcon">Aptal şekilli</string>
|
||||
<string name="flameIcon">Uçan alev</string>
|
||||
<string name="instance_summary">Piped, giriş, abonelikler</string>
|
||||
<string name="addInstance">Oluşum ekle</string>
|
||||
<string name="clear_customInstances">Özel oluşumları temizle</string>
|
||||
<string name="instance_api_url">Oluşumun API bağlantısı</string>
|
||||
<string name="instance_api_url">Erişim aracı API\'sinin URL\'si</string>
|
||||
<string name="customInstance_summary">Özel bir oluşum ekleyin (riski size ait olmak üzere)</string>
|
||||
<string name="empty_instance">Adı ve API bağlantısını doldurmanız gerekir.</string>
|
||||
<string name="empty_instance">Adı ve API URL\'sini girin.</string>
|
||||
<string name="instance_name">Oluşumun adı</string>
|
||||
<string name="invalid_url">Lütfen geçerli bir URL girin</string>
|
||||
<string name="invalid_url">Lütfen, çalışan bir URL girin</string>
|
||||
<string name="version">Sürüm %1$s</string>
|
||||
<string name="about_summary">LibreTube ekibini tanıyın ve tüm bunların nasıl gerçekleştiğini öğrenin.</string>
|
||||
<string name="show_chapters">Bölümleri göster</string>
|
||||
<string name="hide_chapters">Bölümleri gizle</string>
|
||||
<string name="category_filler">Alakasız/Şakalar</string>
|
||||
<string name="category_filler_description">Videonun ana içeriğini anlamak için gerekli olmayan yalnızca dolgu veya mizah için eklenen teğet sahneler için.</string>
|
||||
<string name="category_music_offtopic">Müzik: Müzik Dışı Bölüm</string>
|
||||
<string name="category_music_offtopic_description">Sadece müzik videolarında kullanım içindir. Resmi mikslerin değil videonun bazı kısımlarını kapsamalıdır. Sonuç olarak, video Spotify\'a veya diğer karışık versiyonlara mümkün olduğunca yakın olmalı veya konuşmayı ve diğer dikkat dağıtıcı unsurları azaltmalıdır.</string>
|
||||
<string name="category_preview">Önizleme/Özet</string>
|
||||
<string name="category_preview_description">Bu veya serisindeki gelecekteki videolarda gelecek içeriği detaylandıran, ancak ek bilgi sağlamayan segmentler için. Yalnızca burada görünen klipleri içeriyorsa, bu büyük olasılıkla yanlış kategoridir.</string>
|
||||
<string name="related_streams">İlgili içerik</string>
|
||||
<string name="related_streams_summary">İzlediklerinizin yanında ilgili akışları gösterin.</string>
|
||||
<string name="buffering_goal">Ön yükleme</string>
|
||||
<string name="buffering_goal_summary">Maks. arabelleğe alınacak videonun saniye miktarı.</string>
|
||||
<string name="playerVideoFormat">Oynatıcı için video formatı</string>
|
||||
<string name="no_audio">Ses yok</string>
|
||||
<string name="no_video">Video yok</string>
|
||||
<string name="audio">Ses</string>
|
||||
<string name="video">Video</string>
|
||||
<string name="downloading">İndiriliyor</string>
|
||||
</resources>
|
@ -77,7 +77,7 @@
|
||||
<string name="category_outro_description">Thông tin sau phần kết. Không phải cho kết luận với thông tin.</string>
|
||||
<string name="license">Giấy phép</string>
|
||||
<string name="color_accent">Giọng điệu</string>
|
||||
<string name="color_blue">Màu xanh dương pixel</string>
|
||||
<string name="color_blue">Màu xanh dương hạnh phúc</string>
|
||||
<string name="color_yellow">Màu vàng yeeting</string>
|
||||
<string name="color_green">Màu xanh lá vui vẻ</string>
|
||||
<string name="color_red">Màu đỏ resting</string>
|
||||
@ -122,15 +122,15 @@
|
||||
<string name="no_update_available">Bạn đang sử dụng phiên bản mới nhất của ứng dụng.</string>
|
||||
<string name="download_folder_summary">Tên của thư mục phương tiện đã tải xuống được lưu trữ trong.</string>
|
||||
<string name="instance_summary">Piped, đăng nhập, kênh đăng kí</string>
|
||||
<string name="invalid_url">Hãy nhập một cái url hợp lệ</string>
|
||||
<string name="darkTheme">Giao diện tối</string>
|
||||
<string name="oledTheme">Chủ đề màu tối dành cho màn hình OLED</string>
|
||||
<string name="lightTheme">Giao diện sáng</string>
|
||||
<string name="category_filler_description">Điều này chỉ dành cho các cảnh tiếp theo được thêm vào để bổ sung hoặc hài hước không bắt buộc để hiểu nội dung chính của video.</string>
|
||||
<string name="invalid_url">Hãy nhập một URL mà hoạt đông được</string>
|
||||
<string name="darkTheme">Tối</string>
|
||||
<string name="oledTheme">Đen</string>
|
||||
<string name="lightTheme">Sáng</string>
|
||||
<string name="category_filler_description">Dành cho các cảnh tiếp theo được thêm vào để bổ sung hoặc hài hước không bắt buộc để hiểu nội dung chính của video.</string>
|
||||
<string name="category_music_offtopic">Âm nhạc: Phần không có nhạc</string>
|
||||
<string name="category_filler">Filler Tangent / Trò đùa</string>
|
||||
<string name="category_preview">Xem trước/Tóm tắt</string>
|
||||
<string name="category_preview_description">Cho các phân đoạn mà thể hiện điều sắp diễn ra hay ở videos tới ở trong cùng một series, nhưng không có cung cấp thông tin thêm. Nếu nó bao gồm các clips mà chỉ xuất hiện ở đây thì có thể không phải là một phân loại thích hợp.</string>
|
||||
<string name="category_preview_description">Cho các phân đoạn mà thể hiện điều sắp diễn ra hay ở videos tới ở trong cùng series đó, nhưng không có cung cấp thông tin thêm. Nếu nó bao gồm các clips mà chỉ xuất hiện ở đây thì có thể không phải là một phân loại thích hợp.</string>
|
||||
<string name="material_you">Mystic Material 3</string>
|
||||
<string name="app_icon">Biểu tượng app</string>
|
||||
<string name="enabled">Kích hoạt</string>
|
||||
@ -154,27 +154,27 @@
|
||||
<string name="category_segments">Phân đoạn</string>
|
||||
<string name="category_sponsor_description">Quảng cáo có trả tiền, giới thiệu có trả tiền và quảng cáo trực tiếp. Không phải để tự quảng cáo hoặc gửi lời cảm ơn miễn phí tới các hoạt động chính nghĩa / người sáng tạo / trang web / sản phẩm mà họ thích.</string>
|
||||
<string name="category_intro_description">Khoảng thời gian không có chứa nội dung của video. Có thể là tạm dừng, khung tĩnh, hoạt ảnh lặp lại. Không nên được sử dụng cho các phân cảnh chuyển có chứa thông tin.</string>
|
||||
<string name="category_music_offtopic_description">Phân loại này chỉ sử dụng cho các video ca nhạc. Nó phải bao gồm các phần của video không phải là một phần của bản phối chính thức. Chung quy lại, video phải giống với Spotify hoặc bất kỳ phiên bản phối nào khác càng giống càng tốt, hoặc phải giảm nói chuyện hoặc các yếu tố gây xao nhãng khác.</string>
|
||||
<string name="category_music_offtopic_description">Chỉ sử dụng cho các video ca nhạc. Nó phải bao gồm các phần của video không phải là một phần của bản phối chính thức. Chung quy lại, video phải giống với Spotify hoặc bất kỳ phiên bản phối nào khác càng giống càng tốt, hoặc giảm nói chuyện hoặc các yếu tố gây xao nhãng khác.</string>
|
||||
<string name="website_summary">Truy cập trang web để biết thêm thông tin về ứng dụng và các tính năng của nó.</string>
|
||||
<string name="download_directory_summary">Nơi mà những file phương tiện đã được tải xuống được lưu trữ.</string>
|
||||
<string name="download_directory">Tải xuống tới</string>
|
||||
<string name="contributing_summary">Cung cấp ý tưởng, bản dịch, những thay đổi thiết kế, làm sạch và viết mã. Càng làm nhiều thì càng tốt!</string>
|
||||
<string name="license_summary">GPLv3 + là một giấy phép viết tắt được copyleft. Sử dụng, nghiên cứu, thay đổi và chia sẻ; với tất cả.</string>
|
||||
<string name="donate_summary">Hãy cho đi những gì xứng đáng với bạn, nếu bạn có thể. Team LibreTube nhỏ hơn khoản đóng góp hoặc trợ giúp của bạn.</string>
|
||||
<string name="authors_summary">Tìm hiểu về nhóm LibreTube và tất cả những người đóng góp giúp cải thiện ứng dụng.</string>
|
||||
<string name="authors_summary">Tìm hiểu về mọi người tham gia vào dự án này.</string>
|
||||
<string name="sdcard">Thẻ SD</string>
|
||||
<string name="buffering_goal">Mục tiêu buffering</string>
|
||||
<string name="buffering_goal">Tải trước</string>
|
||||
<string name="hide_chapters">Ẩn chương</string>
|
||||
<string name="shareTo">Chia sẻ URL tới</string>
|
||||
<string name="legacyIcon">Cũ</string>
|
||||
<string name="gradientIcon">Kiểu gradient</string>
|
||||
<string name="flameIcon">Ngọn lửa bay</string>
|
||||
<string name="instance_api_url">API URL của server</string>
|
||||
<string name="instance_api_url">URL thành API của server</string>
|
||||
<string name="downloads_directory">Thư mục lưu trữ</string>
|
||||
<string name="clear_customInstances">Xóa server tùy chỉnh</string>
|
||||
<string name="fireIcon">Ngọn lửa thời trang</string>
|
||||
<string name="empty_instance">Bạn phải điền tên và API URL của server vào.</string>
|
||||
<string name="related_streams_summary">Hiển thị các luồng liên quan đến video.</string>
|
||||
<string name="empty_instance">Điền tên và API URL của server vào.</string>
|
||||
<string name="related_streams_summary">Hiển thị các luồng bên cạnh những gì mà bạn xem.</string>
|
||||
<string name="show_chapters">Hiện thị chương</string>
|
||||
<string name="torchIcon">Ngọn đuốc thời thượng</string>
|
||||
<string name="shapedIcon">Hình dạng ngớ ngẩn</string>
|
||||
@ -182,6 +182,6 @@
|
||||
<string name="birdIcon">Chim</string>
|
||||
<string name="instance_name">Tên server</string>
|
||||
<string name="about_summary">Tìm hiểu về nhóm LibreTube và cách mà tất cả diễn ra.</string>
|
||||
<string name="related_streams">Các luồng liên quan</string>
|
||||
<string name="playerVideoFormat">Định dạng trình phát video</string>
|
||||
<string name="related_streams">Các nội dung liên quan</string>
|
||||
<string name="playerVideoFormat">Định dạng video cho trình phát</string>
|
||||
</resources>
|
@ -92,7 +92,7 @@
|
||||
<string name="all">所有</string>
|
||||
<string name="playlists">播放列表</string>
|
||||
<string name="segment_skipped">跳过的片段</string>
|
||||
<string name="category_sponsor_description">有偿推广、有偿推荐和直接广告。不是自我宣传或无偿发自内心的赞美创造者、网站和产品。</string>
|
||||
<string name="category_sponsor_description">有偿推广、有偿推荐和直接广告。不是自我宣传或无偿发自内心的赞美动机、创造者、网站和产品。</string>
|
||||
<string name="category_selfpromo">无偿/自我推广</string>
|
||||
<string name="category_selfpromo_description">除了无偿或自我宣传,与 \"赞助商 \"类似。这包括有关商品、捐赠或与谁合作的信息。</string>
|
||||
<string name="sponsorblock">SponsorBlock</string>
|
||||
|
@ -635,6 +635,7 @@
|
||||
<item>1.25x</item>
|
||||
<item>1.5x</item>
|
||||
<item>2x</item>
|
||||
<item>4x</item>
|
||||
</string-array>
|
||||
<string-array name="playbackSpeedValues">
|
||||
<item>0.25F</item>
|
||||
@ -644,6 +645,7 @@
|
||||
<item>1.25F</item>
|
||||
<item>1.5F</item>
|
||||
<item>2F</item>
|
||||
<item>4F</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="downloadLocation">
|
||||
@ -660,6 +662,13 @@
|
||||
</string-array>
|
||||
|
||||
<string-array name="bufferingGoal">
|
||||
<item>50s</item>
|
||||
<item>100s</item>
|
||||
<item>200s</item>
|
||||
<item>300s</item>
|
||||
<item>450s</item>
|
||||
</string-array>
|
||||
<string-array name="bufferingGoalValues">
|
||||
<item>50</item>
|
||||
<item>100</item>
|
||||
<item>200</item>
|
||||
@ -672,4 +681,17 @@
|
||||
<item>MPEG_4</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="seekIncrement">
|
||||
<item>5s</item>
|
||||
<item>10s</item>
|
||||
<item>20s</item>
|
||||
<item>30s</item>
|
||||
</string-array>
|
||||
<string-array name="seekIncrementValues">
|
||||
<item>5</item>
|
||||
<item>10</item>
|
||||
<item>20</item>
|
||||
<item>30</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
@ -143,13 +143,13 @@
|
||||
<string name="no_update_available">You are running the latest version.</string>
|
||||
<string name="playback_speed">Default playback speed</string>
|
||||
<string name="advanced">Advanced</string>
|
||||
<string name="player">Player</string>
|
||||
<string name="player">Audio and video</string>
|
||||
<string name="appearance_summary">Adjust the app to your liking.</string>
|
||||
<string name="advanced_summary">Player, downloads, history</string>
|
||||
<string name="advanced_summary">Downloads, history</string>
|
||||
<string name="live">Live</string>
|
||||
<string name="no_replies">This comment has no replies.</string>
|
||||
<string name="authors">Authors</string>
|
||||
<string name="authors_summary">Get to know everyone.</string>
|
||||
<string name="authors_summary">Get to know everyone who is involved in developing and improving the app.</string>
|
||||
<string name="download_folder">Name</string>
|
||||
<string name="download_folder_summary">The name of the folder downloaded media is stored in.</string>
|
||||
<string name="internal_storage">Internal storage</string>
|
||||
@ -184,5 +184,21 @@
|
||||
<string name="buffering_goal">Preloading</string>
|
||||
<string name="buffering_goal_summary">Max. amount of seconds of video to buffer.</string>
|
||||
<string name="playerVideoFormat">Video format for player</string>
|
||||
<string name="no_audio">No audio</string>
|
||||
<string name="no_video">No video</string>
|
||||
<string name="audio">Audio</string>
|
||||
<string name="video">Video</string>
|
||||
<string name="downloading">Downloading</string>
|
||||
<string name="player_autoplay">Autoplay</string>
|
||||
<string name="hideTrendingPage">Hide trending page</string>
|
||||
<string name="instance_frontend_url">URL to instance frontend</string>
|
||||
<string name="quality">Quality</string>
|
||||
<string name="behavior">Behavior</string>
|
||||
<string name="player_summary">Quality and player behavior</string>
|
||||
<string name="seek_increment">Seek increment</string>
|
||||
<string name="piped_summary">Piped is an open-source alternative web-frontend for YouTube provides the API we use. Without Piped, LibreTube wouldn\'t exist. Huge thanks to their devs!</string>
|
||||
<string name="pauseOnScreenOff">Autopause</string>
|
||||
<string name="pauseOnScreenOff_summary">Pause the player when the screen is turned off.</string>
|
||||
<string name="autoplay_summary">Automatically play the next video when the current is finished.</string>
|
||||
<string name="clonePlaylist">Clone playlist</string>
|
||||
</resources>
|
||||
|
@ -23,4 +23,52 @@
|
||||
|
||||
</style>
|
||||
|
||||
<style name="AboutItem">
|
||||
|
||||
<item name="android:orientation">vertical</item>
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:paddingLeft">20dp</item>
|
||||
<item name="android:paddingRight">20dp</item>
|
||||
<item name="android:paddingTop">15dp</item>
|
||||
<item name="android:paddingBottom">15dp</item>
|
||||
<item name="android:background">?android:attr/selectableItemBackground</item>
|
||||
|
||||
</style>
|
||||
|
||||
<style name="HorizontalLine">
|
||||
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">0.8dp</item>
|
||||
<item name="android:background">@android:color/darker_gray</item>
|
||||
|
||||
</style>
|
||||
|
||||
<style name="CustomDialogButton">
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:layout_gravity">right</item>
|
||||
<item name="android:layout_marginRight">16dp</item>
|
||||
<item name="android:layout_marginBottom">8dp</item>
|
||||
<item name="android:padding">8dp</item>
|
||||
<item name="android:textSize">14sp</item>
|
||||
<item name="android:backgroundTint">@android:color/transparent</item>
|
||||
<item name="android:textColor">?attr/colorPrimary</item>
|
||||
</style>
|
||||
|
||||
<style name="CustomDialogTextInputLayout" parent="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="hintEnabled">false</item>
|
||||
<item name="android:layout_marginLeft">10dp</item>
|
||||
<item name="android:layout_marginRight">10dp</item>
|
||||
<item name="android:layout_marginTop">16dp</item>
|
||||
<item name="android:layout_marginBottom">4dp</item>
|
||||
|
||||
<item name="boxCornerRadiusBottomStart">15dp</item>
|
||||
<item name="boxCornerRadiusBottomEnd">15dp</item>
|
||||
<item name="boxCornerRadiusTopEnd">15dp</item>
|
||||
<item name="boxCornerRadiusTopStart">15dp</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -2,53 +2,6 @@
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<PreferenceCategory app:title="@string/player">
|
||||
|
||||
<ListPreference
|
||||
android:icon="@drawable/ic_hd"
|
||||
app:defaultValue=""
|
||||
app:entries="@array/defres"
|
||||
app:entryValues="@array/defresValue"
|
||||
app:key="default_res"
|
||||
app:title="@string/defres"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<ListPreference
|
||||
android:icon="@drawable/ic_hd"
|
||||
app:defaultValue="WEBM"
|
||||
app:entries="@array/playerVideoFormats"
|
||||
app:entryValues="@array/playerVideoFormats"
|
||||
app:key="player_video_format"
|
||||
app:title="@string/playerVideoFormat"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<ListPreference
|
||||
android:icon="@drawable/ic_play"
|
||||
app:defaultValue="1F"
|
||||
app:entries="@array/playbackSpeed"
|
||||
app:entryValues="@array/playbackSpeedValues"
|
||||
app:key="playback_speed"
|
||||
app:title="@string/playback_speed"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<ListPreference
|
||||
android:icon="@drawable/ic_timelapse"
|
||||
app:defaultValue="50"
|
||||
app:entries="@array/bufferingGoal"
|
||||
app:entryValues="@array/bufferingGoal"
|
||||
app:key="buffering_goal"
|
||||
app:summary="@string/buffering_goal_summary"
|
||||
app:title="@string/buffering_goal" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:icon="@drawable/ic_play"
|
||||
app:key="autoplay"
|
||||
app:title="@string/player_autoplay"
|
||||
android:summaryOff="@string/disabled"
|
||||
android:summaryOn="@string/enabled" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory app:title="@string/downloads">
|
||||
|
||||
<ListPreference
|
||||
@ -64,7 +17,7 @@
|
||||
android:defaultValue="downloads"
|
||||
android:entries="@array/downloadLocation"
|
||||
android:entryValues="@array/downloadLocationValues"
|
||||
app:icon="@drawable/ic_download"
|
||||
app:icon="@drawable/ic_download_filled"
|
||||
app:key="download_location"
|
||||
app:summary="@string/download_directory_summary"
|
||||
app:title="@string/download_directory" />
|
||||
@ -82,7 +35,7 @@
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:icon="@drawable/ic_history"
|
||||
android:icon="@drawable/ic_history_filled"
|
||||
app:key="search_history_toggle"
|
||||
app:title="@string/search_history" />
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
<ListPreference
|
||||
android:icon="@drawable/ic_color"
|
||||
app:defaultValue="red"
|
||||
app:defaultValue="purple"
|
||||
app:entries="@array/accents"
|
||||
app:entryValues="@array/accentsValue"
|
||||
app:key="accent_color"
|
||||
@ -44,6 +44,13 @@
|
||||
app:title="@string/defaultTab"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<SwitchPreference
|
||||
android:icon="@drawable/ic_trending"
|
||||
app:defaultValue="false"
|
||||
app:key="hide_trending_page"
|
||||
app:title="@string/hideTrendingPage"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<ListPreference
|
||||
android:icon="@drawable/ic_grid"
|
||||
app:defaultValue="@integer/grid_items"
|
||||
|
@ -24,7 +24,7 @@
|
||||
android:icon="@drawable/ic_trash" />
|
||||
|
||||
<Preference
|
||||
android:icon="@drawable/ic_login"
|
||||
android:icon="@drawable/ic_login_filled"
|
||||
android:summary="@string/notgmail"
|
||||
app:key="login_register"
|
||||
app:title="@string/login_register" />
|
||||
|
70
app/src/main/res/xml/player_settings.xml
Normal file
70
app/src/main/res/xml/player_settings.xml
Normal file
@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<PreferenceCategory app:title="@string/quality">
|
||||
|
||||
<ListPreference
|
||||
android:icon="@drawable/ic_hd"
|
||||
app:defaultValue=""
|
||||
app:entries="@array/defres"
|
||||
app:entryValues="@array/defresValue"
|
||||
app:key="default_res"
|
||||
app:title="@string/defres"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<ListPreference
|
||||
android:icon="@drawable/ic_video"
|
||||
app:defaultValue="WEBM"
|
||||
app:entries="@array/playerVideoFormats"
|
||||
app:entryValues="@array/playerVideoFormats"
|
||||
app:key="player_video_format"
|
||||
app:title="@string/playerVideoFormat"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory app:title="@string/behavior">
|
||||
|
||||
<ListPreference
|
||||
android:icon="@drawable/ic_speed"
|
||||
app:defaultValue="1F"
|
||||
app:entries="@array/playbackSpeed"
|
||||
app:entryValues="@array/playbackSpeedValues"
|
||||
app:key="playback_speed"
|
||||
app:title="@string/playback_speed"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<ListPreference
|
||||
android:icon="@drawable/ic_skip"
|
||||
app:defaultValue="5"
|
||||
app:entries="@array/seekIncrement"
|
||||
app:entryValues="@array/seekIncrementValues"
|
||||
app:key="seek_increment"
|
||||
app:title="@string/seek_increment"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<ListPreference
|
||||
android:icon="@drawable/ic_time"
|
||||
app:defaultValue="50"
|
||||
app:entries="@array/bufferingGoal"
|
||||
app:entryValues="@array/bufferingGoalValues"
|
||||
app:key="buffering_goal"
|
||||
app:summary="@string/buffering_goal_summary"
|
||||
app:title="@string/buffering_goal" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:icon="@drawable/ic_play_filled"
|
||||
app:key="autoplay"
|
||||
app:title="@string/player_autoplay"
|
||||
android:summary="@string/autoplay_summary" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:icon="@drawable/ic_pause_filled"
|
||||
app:key="pause_screen_off"
|
||||
app:title="@string/pauseOnScreenOff"
|
||||
android:summary="@string/pauseOnScreenOff_summary" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
</PreferenceScreen>
|
@ -44,6 +44,12 @@
|
||||
app:summary="@string/sponsorblock_summary"
|
||||
app:title="@string/sponsorblock" />
|
||||
|
||||
<Preference
|
||||
android:icon="@drawable/ic_video"
|
||||
app:key="player"
|
||||
app:summary="@string/player_summary"
|
||||
app:title="@string/player" />
|
||||
|
||||
<Preference
|
||||
android:icon="@drawable/ic_list"
|
||||
app:key="advanced"
|
||||
@ -54,18 +60,18 @@
|
||||
|
||||
<PreferenceCategory>
|
||||
|
||||
<Preference
|
||||
android:icon="@drawable/ic_info"
|
||||
app:key="about"
|
||||
app:summary="@string/about_summary"
|
||||
app:title="@string/about" />
|
||||
|
||||
<Preference
|
||||
android:icon="@drawable/ic_update"
|
||||
app:key="update"
|
||||
app:summary="@string/update_summary"
|
||||
app:title="App version" />
|
||||
|
||||
<Preference
|
||||
android:icon="@drawable/ic_info"
|
||||
app:key="about"
|
||||
app:summary="@string/about_summary"
|
||||
app:title="@string/about" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
</PreferenceScreen>
|
@ -6,20 +6,23 @@
|
||||
app:key="sb_enabled_key"
|
||||
app:title="@string/sponsorblock"
|
||||
android:summaryOff="@string/disabled"
|
||||
android:summaryOn="@string/enabled" />
|
||||
android:summaryOn="@string/enabled"
|
||||
app:defaultValue="true" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="sb_notifications_key"
|
||||
app:title="@string/sponsorblock_notifications"
|
||||
android:summaryOff="@string/disabled"
|
||||
android:summaryOn="@string/enabled" />
|
||||
android:summaryOn="@string/enabled"
|
||||
app:defaultValue="true" />
|
||||
|
||||
<PreferenceCategory app:title="@string/category_segments">
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="sponsors_category_key"
|
||||
app:title="@string/category_sponsor"
|
||||
app:summary="@string/category_sponsor_description" />
|
||||
app:summary="@string/category_sponsor_description"
|
||||
app:defaultValue="true" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="selfpromo_category_key"
|
||||
|
Loading…
Reference in New Issue
Block a user