Merge remote-tracking branch 'origin/master'

This commit is contained in:
Blatzar 2023-01-07 14:57:50 +01:00
commit 0ebc12e29b
20 changed files with 549 additions and 30 deletions

View file

@ -15,14 +15,23 @@ jobs:
create: create:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Generate access token
id: generate_token
uses: tibdex/github-app-token@v1
with:
app_id: ${{ secrets.GH_APP_ID }}
private_key: ${{ secrets.GH_APP_KEY }}
repository: "recloudstream/cloudstream"
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
token: ${{ steps.generate_token.outputs.token }}
- name: Edit files - name: Edit files
run: | run: |
python3 .github/locales.py python3 .github/locales.py
- name: Commit to the repo - name: Commit to the repo
run: | run: |
git config user.name "GitHub Actions" git config --local user.email "111277985+recloudstream[bot]@users.noreply.github.com"
git config user.email "actions@github.com" git config --local user.name "recloudstream[bot]"
git add . git add .
# "echo" returns true so the build succeeds, even if no changed files # "echo" returns true so the build succeeds, even if no changed files
git commit -m 'update list of locales' || echo git commit -m 'update list of locales' || echo

View file

@ -18,6 +18,7 @@ import androidx.core.view.isGone
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.lifecycle.*
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
@ -48,6 +49,8 @@ import com.lagradost.cloudstream3.utils.AppUtils.addProgramsToContinueWatching
import com.lagradost.cloudstream3.utils.AppUtils.isRecyclerScrollable import com.lagradost.cloudstream3.utils.AppUtils.isRecyclerScrollable
import com.lagradost.cloudstream3.utils.AppUtils.loadResult import com.lagradost.cloudstream3.utils.AppUtils.loadResult
import com.lagradost.cloudstream3.utils.AppUtils.loadSearchResult import com.lagradost.cloudstream3.utils.AppUtils.loadSearchResult
import com.lagradost.cloudstream3.utils.AppUtils.ownHide
import com.lagradost.cloudstream3.utils.AppUtils.ownShow
import com.lagradost.cloudstream3.utils.Coroutines.ioSafe import com.lagradost.cloudstream3.utils.Coroutines.ioSafe
import com.lagradost.cloudstream3.utils.DataStore.getKey import com.lagradost.cloudstream3.utils.DataStore.getKey
import com.lagradost.cloudstream3.utils.DataStore.setKey import com.lagradost.cloudstream3.utils.DataStore.setKey
@ -104,26 +107,32 @@ class HomeFragment : Fragment() {
val errorProfilePic = errorProfilePics.random() val errorProfilePic = errorProfilePics.random()
fun Activity.loadHomepageList( //fun Activity.loadHomepageList(
item: HomePageList, // item: HomePageList,
deleteCallback: (() -> Unit)? = null, // deleteCallback: (() -> Unit)? = null,
) { //) {
loadHomepageList( // loadHomepageList(
expand = HomeViewModel.ExpandableHomepageList(item, 1, false), // expand = HomeViewModel.ExpandableHomepageList(item, 1, false),
deleteCallback = deleteCallback, // deleteCallback = deleteCallback,
expandCallback = null // expandCallback = null
) // )
} //}
// returns a BottomSheetDialog that will be hidden with OwnHidden upon hide, and must be saved to be able call ownShow in onCreateView
fun Activity.loadHomepageList( fun Activity.loadHomepageList(
expand: HomeViewModel.ExpandableHomepageList, expand: HomeViewModel.ExpandableHomepageList,
deleteCallback: (() -> Unit)? = null, deleteCallback: (() -> Unit)? = null,
expandCallback: (suspend (String) -> HomeViewModel.ExpandableHomepageList?)? = null expandCallback: (suspend (String) -> HomeViewModel.ExpandableHomepageList?)? = null,
) { dismissCallback : (() -> Unit),
): BottomSheetDialog {
val context = this val context = this
val bottomSheetDialogBuilder = BottomSheetDialog(context) val bottomSheetDialogBuilder = BottomSheetDialog(context)
bottomSheetDialogBuilder.setContentView(R.layout.home_episodes_expanded) bottomSheetDialogBuilder.setContentView(R.layout.home_episodes_expanded)
val title = bottomSheetDialogBuilder.findViewById<TextView>(R.id.home_expanded_text)!! val title = bottomSheetDialogBuilder.findViewById<TextView>(R.id.home_expanded_text)!!
//title.findViewTreeLifecycleOwner().lifecycle.addObserver()
val item = expand.list val item = expand.list
title.text = item.name title.text = item.name
val recycle = val recycle =
@ -131,6 +140,23 @@ class HomeFragment : Fragment() {
val titleHolder = val titleHolder =
bottomSheetDialogBuilder.findViewById<FrameLayout>(R.id.home_expanded_drag_down)!! bottomSheetDialogBuilder.findViewById<FrameLayout>(R.id.home_expanded_drag_down)!!
// main {
//(bottomSheetDialogBuilder.ownerActivity as androidx.fragment.app.FragmentActivity?)?.supportFragmentManager?.fragments?.lastOrNull()?.viewLifecycleOwner?.apply {
// println("GOT LIFE: lifecycle $this")
// this.lifecycle.addObserver(object : DefaultLifecycleObserver {
// override fun onResume(owner: LifecycleOwner) {
// super.onResume(owner)
// println("onResume!!!!")
// bottomSheetDialogBuilder?.ownShow()
// }
// override fun onStop(owner: LifecycleOwner) {
// super.onStop(owner)
// bottomSheetDialogBuilder?.ownHide()
// }
// })
//}
// }
val delete = bottomSheetDialogBuilder.home_expanded_delete val delete = bottomSheetDialogBuilder.home_expanded_delete
delete.isGone = deleteCallback == null delete.isGone = deleteCallback == null
if (deleteCallback != null) { if (deleteCallback != null) {
@ -175,7 +201,8 @@ class HomeFragment : Fragment() {
recycle.adapter = SearchAdapter(item.list.toMutableList(), recycle) { callback -> recycle.adapter = SearchAdapter(item.list.toMutableList(), recycle) { callback ->
handleSearchClickCallback(this, callback) handleSearchClickCallback(this, callback)
if (callback.action == SEARCH_ACTION_LOAD || callback.action == SEARCH_ACTION_PLAY_FILE) { if (callback.action == SEARCH_ACTION_LOAD || callback.action == SEARCH_ACTION_PLAY_FILE) {
bottomSheetDialogBuilder.dismissSafe(this) bottomSheetDialogBuilder.ownHide() // we hide here because we want to resume it later
//bottomSheetDialogBuilder.dismissSafe(this)
} }
}.apply { }.apply {
hasNext = expand.hasNext hasNext = expand.hasNext
@ -216,12 +243,14 @@ class HomeFragment : Fragment() {
configEvent += spanListener configEvent += spanListener
bottomSheetDialogBuilder.setOnDismissListener { bottomSheetDialogBuilder.setOnDismissListener {
dismissCallback.invoke()
configEvent -= spanListener configEvent -= spanListener
} }
//(recycle.adapter as SearchAdapter).notifyDataSetChanged() //(recycle.adapter as SearchAdapter).notifyDataSetChanged()
bottomSheetDialogBuilder.show() bottomSheetDialogBuilder.show()
return bottomSheetDialogBuilder
} }
fun getPairList( fun getPairList(
@ -399,6 +428,7 @@ class HomeFragment : Fragment() {
): View? { ): View? {
//homeViewModel = //homeViewModel =
// ViewModelProvider(this).get(HomeViewModel::class.java) // ViewModelProvider(this).get(HomeViewModel::class.java)
bottomSheetDialog?.ownShow()
val layout = val layout =
if (isTvSettings()) R.layout.fragment_home_tv else R.layout.fragment_home if (isTvSettings()) R.layout.fragment_home_tv else R.layout.fragment_home
return inflater.inflate(layout, container, false) return inflater.inflate(layout, container, false)
@ -480,6 +510,8 @@ class HomeFragment : Fragment() {
private var currentApiName: String? = null private var currentApiName: String? = null
private var toggleRandomButton = false private var toggleRandomButton = false
private var bottomSheetDialog: BottomSheetDialog? = null
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -626,8 +658,10 @@ class HomeFragment : Fragment() {
HomeParentItemAdapterPreview(mutableListOf(), { callback -> HomeParentItemAdapterPreview(mutableListOf(), { callback ->
homeHandleSearch(callback) homeHandleSearch(callback)
}, { item -> }, { item ->
activity?.loadHomepageList(item, expandCallback = { bottomSheetDialog = activity?.loadHomepageList(item, expandCallback = {
homeViewModel.expandAndReturn(it) homeViewModel.expandAndReturn(it)
}, dismissCallback = {
bottomSheetDialog = null
}) })
}, { name -> }, { name ->
homeViewModel.expand(name) homeViewModel.expand(name)

View file

@ -15,6 +15,7 @@ import androidx.core.view.isVisible
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.lagradost.cloudstream3.APIHolder.filterProviderByPreferredMedia import com.lagradost.cloudstream3.APIHolder.filterProviderByPreferredMedia
import com.lagradost.cloudstream3.APIHolder.filterSearchResultByFilmQuality import com.lagradost.cloudstream3.APIHolder.filterSearchResultByFilmQuality
import com.lagradost.cloudstream3.APIHolder.getApiFromNameNull import com.lagradost.cloudstream3.APIHolder.getApiFromNameNull
@ -30,6 +31,7 @@ import com.lagradost.cloudstream3.ui.search.SearchAdapter
import com.lagradost.cloudstream3.ui.search.SearchClickCallback import com.lagradost.cloudstream3.ui.search.SearchClickCallback
import com.lagradost.cloudstream3.ui.search.SearchHelper import com.lagradost.cloudstream3.ui.search.SearchHelper
import com.lagradost.cloudstream3.ui.search.SearchViewModel import com.lagradost.cloudstream3.ui.search.SearchViewModel
import com.lagradost.cloudstream3.utils.AppUtils.ownShow
import com.lagradost.cloudstream3.utils.UIHelper import com.lagradost.cloudstream3.utils.UIHelper
import com.lagradost.cloudstream3.utils.UIHelper.fixPaddingStatusbar import com.lagradost.cloudstream3.utils.UIHelper.fixPaddingStatusbar
import com.lagradost.cloudstream3.utils.UIHelper.getSpanCount import com.lagradost.cloudstream3.utils.UIHelper.getSpanCount
@ -71,6 +73,8 @@ class QuickSearchFragment : Fragment() {
private var providers: Set<String>? = null private var providers: Set<String>? = null
private lateinit var searchViewModel: SearchViewModel private lateinit var searchViewModel: SearchViewModel
private var bottomSheetDialog: BottomSheetDialog? = null
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup?, container: ViewGroup?,
@ -80,7 +84,7 @@ class QuickSearchFragment : Fragment() {
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
) )
searchViewModel = ViewModelProvider(this)[SearchViewModel::class.java] searchViewModel = ViewModelProvider(this)[SearchViewModel::class.java]
bottomSheetDialog?.ownShow()
return inflater.inflate(R.layout.quick_search, container, false) return inflater.inflate(R.layout.quick_search, container, false)
} }
@ -156,7 +160,9 @@ class QuickSearchFragment : Fragment() {
// else -> SearchHelper.handleSearchClickCallback(activity, callback) // else -> SearchHelper.handleSearchClickCallback(activity, callback)
//} //}
}, { item -> }, { item ->
activity?.loadHomepageList(item) bottomSheetDialog = activity?.loadHomepageList(item, dismissCallback = {
bottomSheetDialog = null
})
}) })
quick_search_master_recycler?.layoutManager = GridLayoutManager(context, 1) quick_search_master_recycler?.layoutManager = GridLayoutManager(context, 1)
} }

View file

@ -45,6 +45,7 @@ import com.lagradost.cloudstream3.ui.home.HomeFragment.Companion.updateChips
import com.lagradost.cloudstream3.ui.home.ParentItemAdapter import com.lagradost.cloudstream3.ui.home.ParentItemAdapter
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTrueTvSettings import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTrueTvSettings
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
import com.lagradost.cloudstream3.utils.AppUtils.ownShow
import com.lagradost.cloudstream3.utils.Coroutines.main import com.lagradost.cloudstream3.utils.Coroutines.main
import com.lagradost.cloudstream3.utils.DataStore.getKey import com.lagradost.cloudstream3.utils.DataStore.getKey
import com.lagradost.cloudstream3.utils.DataStore.setKey import com.lagradost.cloudstream3.utils.DataStore.setKey
@ -85,6 +86,7 @@ class SearchFragment : Fragment() {
} }
private val searchViewModel: SearchViewModel by activityViewModels() private val searchViewModel: SearchViewModel by activityViewModels()
private var bottomSheetDialog: BottomSheetDialog? = null
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
@ -94,6 +96,7 @@ class SearchFragment : Fragment() {
activity?.window?.setSoftInputMode( activity?.window?.setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
) )
bottomSheetDialog?.ownShow()
return inflater.inflate( return inflater.inflate(
if (isTvSettings()) R.layout.fragment_search_tv else R.layout.fragment_search, if (isTvSettings()) R.layout.fragment_search_tv else R.layout.fragment_search,
container, container,
@ -473,7 +476,9 @@ class SearchFragment : Fragment() {
ParentItemAdapter(mutableListOf(), { callback -> ParentItemAdapter(mutableListOf(), { callback ->
SearchHelper.handleSearchClickCallback(activity, callback) SearchHelper.handleSearchClickCallback(activity, callback)
}, { item -> }, { item ->
activity?.loadHomepageList(item) bottomSheetDialog = activity?.loadHomepageList(item, dismissCallback = {
bottomSheetDialog = null
})
}) })
val historyAdapter = SearchHistoryAdaptor(mutableListOf()) { click -> val historyAdapter = SearchHistoryAdaptor(mutableListOf()) { click ->

View file

@ -64,7 +64,9 @@ val appLanguages = arrayListOf(
Triple("", "German", "de"), Triple("", "German", "de"),
Triple("", "Greek", "el"), Triple("", "Greek", "el"),
Triple("", "English", "en"), Triple("", "English", "en"),
Triple("", "Esperanto", "eo"),
Triple("", "Spanish", "es"), Triple("", "Spanish", "es"),
Triple("", "Farsi", "fa"),
Triple("", "French", "fr"), Triple("", "French", "fr"),
Triple("", "Hindi", "hi"), Triple("", "Hindi", "hi"),
Triple("", "Croatian", "hr"), Triple("", "Croatian", "hr"),

View file

@ -13,9 +13,7 @@ import android.media.tv.TvContract.Channels.COLUMN_INTERNAL_PROVIDER_ID
import android.net.ConnectivityManager import android.net.ConnectivityManager
import android.net.NetworkCapabilities import android.net.NetworkCapabilities
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.*
import android.os.Environment
import android.os.ParcelFileDescriptor
import android.provider.MediaStore import android.provider.MediaStore
import android.text.Spanned import android.text.Spanned
import android.util.Log import android.util.Log
@ -40,6 +38,7 @@ import com.google.android.gms.cast.framework.CastState
import com.google.android.gms.common.ConnectionResult import com.google.android.gms.common.ConnectionResult
import com.google.android.gms.common.GoogleApiAvailability import com.google.android.gms.common.GoogleApiAvailability
import com.google.android.gms.common.wrappers.Wrappers import com.google.android.gms.common.wrappers.Wrappers
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.lagradost.cloudstream3.* import com.lagradost.cloudstream3.*
import com.lagradost.cloudstream3.CommonActivity.showToast import com.lagradost.cloudstream3.CommonActivity.showToast
import com.lagradost.cloudstream3.MainActivity.Companion.afterRepositoryLoadedEvent import com.lagradost.cloudstream3.MainActivity.Companion.afterRepositoryLoadedEvent
@ -79,6 +78,19 @@ object AppUtils {
return if (layoutManager == null || adapter == null) false else layoutManager.findLastCompletelyVisibleItemPosition() < adapter.itemCount - 7 // bit more than 1 to make it more seamless return if (layoutManager == null || adapter == null) false else layoutManager.findLastCompletelyVisibleItemPosition() < adapter.itemCount - 7 // bit more than 1 to make it more seamless
} }
fun BottomSheetDialog?.ownHide() {
this?.hide()
}
fun BottomSheetDialog?.ownShow() {
// the reason for this is because show has a shitty animation we don't want
this?.window?.setWindowAnimations(-1)
this?.show()
Handler(Looper.getMainLooper()).postDelayed({
this?.window?.setWindowAnimations(R.style.Animation_Design_BottomSheetDialog)
},200)
}
//fun Context.deleteFavorite(data: SearchResponse) { //fun Context.deleteFavorite(data: SearchResponse) {
// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return // if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return
// normalSafeApiCall { // normalSafeApiCall {

View file

@ -530,4 +530,6 @@
<string name="pref_category_ui_features">المميزات</string> <string name="pref_category_ui_features">المميزات</string>
<string name="pref_category_looks">المظهر</string> <string name="pref_category_looks">المظهر</string>
<string name="play_trailer_button">تشغيل المقطع الدعائي</string> <string name="play_trailer_button">تشغيل المقطع الدعائي</string>
<string name="delayed_update_notice">سيتم تحديث التطبيق عند الخروج</string>
<string name="update_started">بدأ التحديث</string>
</resources> </resources>

View file

@ -410,7 +410,7 @@
<string name="delete_repository">Repository löschen</string> <string name="delete_repository">Repository löschen</string>
<string name="setup_extensions_subtext">Lade eine Liste der Websiten herunter, welche du verwenden möchtest</string> <string name="setup_extensions_subtext">Lade eine Liste der Websiten herunter, welche du verwenden möchtest</string>
<string name="plugins_downloaded" formatted="true">Heruntergeladen: %d</string> <string name="plugins_downloaded" formatted="true">Heruntergeladen: %d</string>
<string name="plugins_disabled" formatted="true">Heruntergeladen: %d</string> <string name="plugins_disabled" formatted="true">Deaktiviert: %d</string>
<string name="plugins_not_downloaded" formatted="true">Nicht heruntergeladen: %d</string> <string name="plugins_not_downloaded" formatted="true">Nicht heruntergeladen: %d</string>
<string name="blank_repo_message">CloudStream hat standardmäßig keine Websites installiert. Websites müssen aus Repositories installiert werden. <string name="blank_repo_message">CloudStream hat standardmäßig keine Websites installiert. Websites müssen aus Repositories installiert werden.
\n \n
@ -427,7 +427,7 @@
<string name="video_tracks">Videospuren</string> <string name="video_tracks">Videospuren</string>
<string name="apply_on_restart">Bei Neustart anwenden</string> <string name="apply_on_restart">Bei Neustart anwenden</string>
<string name="safe_mode_title">Abgesicherter Modus aktiviert</string> <string name="safe_mode_title">Abgesicherter Modus aktiviert</string>
<string name="safe_mode_description">Ein nicht behebbarer Absturz ist aufgetreten, und wir haben automatisch alle Erweiterungen deaktiviert, damit du die Erweiterung finden und entfernen kannst, die das Problem verursacht.</string> <string name="safe_mode_description">Alle Erweiterungen wurden aufgrund eines Absturzes deaktiviert, damit Sie diejenige finden können, die Probleme verursacht.</string>
<string name="safe_mode_crash_info">Absturzinfo ansehen</string> <string name="safe_mode_crash_info">Absturzinfo ansehen</string>
<string name="extension_rating" formatted="true">Bewertung: %s</string> <string name="extension_rating" formatted="true">Bewertung: %s</string>
<string name="extension_description">Beschreibung</string> <string name="extension_description">Beschreibung</string>
@ -476,7 +476,7 @@
<string name="pref_category_looks">Aussehen</string> <string name="pref_category_looks">Aussehen</string>
<string name="pref_category_ui_features">Funktionen</string> <string name="pref_category_ui_features">Funktionen</string>
<string name="plugins_updated" formatted="true">%d Plugins aktualisiert</string> <string name="plugins_updated" formatted="true">%d Plugins aktualisiert</string>
<string name="action_mark_as_watched">Als beobachtet markieren</string> <string name="action_mark_as_watched">Als gesehen markieren</string>
<string name="confirm_exit_dialog">Sind Sie sicher, dass Sie die App beenden möchten\?</string> <string name="confirm_exit_dialog">Sind Sie sicher, dass Sie die App beenden möchten\?</string>
<string name="yes">Ja</string> <string name="yes">Ja</string>
<string name="no">Nein</string> <string name="no">Nein</string>
@ -485,4 +485,6 @@
<string name="update_notification_failed">Konnte die neue Version der App nicht installieren</string> <string name="update_notification_failed">Konnte die neue Version der App nicht installieren</string>
<string name="apk_installer_legacy">Legacy</string> <string name="apk_installer_legacy">Legacy</string>
<string name="apk_installer_package_installer">PackageInstaller</string> <string name="apk_installer_package_installer">PackageInstaller</string>
<string name="update_started">Aktualisierung gestartet</string>
<string name="delayed_update_notice">Die Anwendung wird beim Beenden aktualisiert</string>
</resources> </resources>

View file

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="go_back_img_des">Reen</string>
<string name="title_home">Hejmo</string>
<string name="title_downloads">Elŝutoj</string>
<string name="go_back">Reen</string>
<string name="pick_source">Fontoj</string>
<string name="sort_apply">Efektivigi</string>
<string name="sort_save">Konservi</string>
<string name="subs_font_size">Tipara grando</string>
<string name="action_remove_watching">Forigi</string>
<string name="episodes">Epizodoj</string>
<string name="episode_short">E</string>
<string name="go_forward_30">+30</string>
<string name="year">Jaro</string>
<string name="sync_score_format" formatted="true">%d / 10</string>
<string name="sync_total_episodes_none">/\?\?</string>
<string name="sync_total_episodes_some" formatted="true">/%d</string>
<string name="extension_language">Lingvo</string>
<string name="extension_size">Grando</string>
<string name="extension_authors">Aŭtoroj</string>
<string name="extension_description">Priskribo</string>
<string name="extension_version">Versio</string>
<string name="extension_status">Stato</string>
<string name="sort_cancel">Nuligi</string>
<string name="sort_clear">Forviŝi</string>
<string name="yes">Jes</string>
<string name="no">Ne</string>
<string name="history">Historio</string>
<string name="title_search">Serĉi</string>
<string name="result_poster_img_des">Afiŝo</string>
<string name="play_movie_button">Spekti filmon</string>
<string name="home_play">Spekti</string>
<string name="home_info">Informoj</string>
<string name="sort_copy">Kopii</string>
<string name="sort_close">Fermi</string>
<string name="subs_font">Tiparo</string>
<string name="subs_download_languages">Elŝuti lingvojn</string>
<string name="subs_auto_select_language">Aŭtomate elekti lingvon</string>
<string name="subs_text_color">Teksta koloro</string>
<string name="action_remove_from_bookmarks">Forigi</string>
<string name="settings_info">Informoj</string>
<string name="season_short">S</string>
<string name="status">Stato</string>
<string name="source_error">Fonta eraro</string>
<string name="login">Saluti</string>
<string name="account">konto</string>
<string name="subs_window_color">Fenestra koloro</string>
<string name="title_settings">Agordoj</string>
<string name="result_tags">Ĝenroj</string>
<string name="all_languages_preference">Ĉiuj lingvoj</string>
<string name="search">Serĉi</string>
<string name="category_account">Kontoj</string>
<string name="github">GitHub</string>
<string name="season">Sezono</string>
<string name="episode">Epizodo</string>
<string name="asian_drama_singular">Azia dramo</string>
<string name="asian_drama">Aziaj dramoj</string>
<string name="tv_series_singular">Serio</string>
<string name="tv_series">Televidaj serioj</string>
<string name="go_back_30">30</string>
<string name="movies_singular">Filmo</string>
<string name="movies">Filmoj</string>
<string name="others">Aliaj</string>
<string name="quality_blueray">Blu-radia</string>
<string name="title">Titolo</string>
<string name="none">Nenio</string>
<string name="logout">Adiaŭi</string>
<string name="show_title">Titolo</string>
<string name="video_source">Fonto</string>
<string name="example_lang_name">Lingvokodo (eo)</string>
<string name="example_password">pasvorto123</string>
<string name="example_username">MiaSalutNomo</string>
<string name="example_email">saluton@mondo.com</string>
<string name="example_ip">127.0.0.1</string>
<string name="example_site_name">MiaRetejo</string>
<string name="example_site_url">ekzemplo.com</string>
<string name="player_speed_text_format" formatted="true">Rapido (%.2fx)</string>
<string name="search_hint">Serĉi…</string>
<string name="download">Elŝuti</string>
</resources>

View file

@ -485,4 +485,6 @@
<string name="skip_type_intro">Intro</string> <string name="skip_type_intro">Intro</string>
<string name="enable_skip_op_from_database_des">Muestrar botones emergentes para saltar apertura/finalización del video</string> <string name="enable_skip_op_from_database_des">Muestrar botones emergentes para saltar apertura/finalización del video</string>
<string name="yes">Si</string> <string name="yes">Si</string>
<string name="delayed_update_notice">La aplicación se actualizará al salir</string>
<string name="update_started">Actualización iniciada</string>
</resources> </resources>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="delete">حذف</string>
<string name="pause">مکث</string>
<string name="queued">در صف</string>
<string name="download">بارگیری</string>
<string name="download_failed">بارگیری ناموفق بود</string>
<string name="search">جست‌وجو</string>
<string name="resize_fit">اندازه‌کردن</string>
<string name="resize_fill">پر کردن</string>
<string name="resize_zoom">بزرگ‌نمایی</string>
<string name="all">همه</string>
<string name="tracks">قطعه‌ها</string>
<string name="status">وضعیت</string>
<string name="loading">درحال بارگیری…</string>
<string name="show_title">عنوان منبع</string>
<string name="logout">خروج</string>
<string name="login">ورود</string>
<string name="none">هیچ‌کدام</string>
<string name="title">عنوان</string>
<string name="history">تاریخچه</string>
</resources>

View file

@ -526,4 +526,6 @@
<string name="skip_type_op">Otvaranje</string> <string name="skip_type_op">Otvaranje</string>
<string name="apk_installer_package_installer">PackageInstaller</string> <string name="apk_installer_package_installer">PackageInstaller</string>
<string name="season_format">%s %d%s</string> <string name="season_format">%s %d%s</string>
<string name="update_started">Aktualiziranje započeto</string>
<string name="delayed_update_notice">Program če se aktualizirati tijekom zatvaranja programa</string>
</resources> </resources>

View file

@ -27,5 +27,238 @@
<string name="resize_zoom">Nagyítás</string> <string name="resize_zoom">Nagyítás</string>
<string name="all">Összes</string> <string name="all">Összes</string>
<string name="tracks">Zeneszámok</string> <string name="tracks">Zeneszámok</string>
<string name="home_next_random_img_des">Következő random</string> <string name="home_next_random_img_des">Következő véletlenszerű</string>
<string name="logout">Kijelentkezés</string>
<string name="login">Bejelentkezés</string>
<string name="none">Semmi</string>
<string name="title">Cím</string>
<string name="loading">Betöltés…</string>
<string name="status">Állapot</string>
<string name="show_title">Forrás címe</string>
<string name="history">Előzmények</string>
<string name="eigengraumode_settings">Eigengravy mód</string>
<string name="subs_subtitle_elevation">Felirat magassága</string>
<string name="download_started">Letöltés elkezdve</string>
<string name="normal_no_plot">Nem található cselekmény</string>
<string name="continue_watching">Lejátszás folytatása</string>
<string name="filler" formatted="true">Filler</string>
<string name="play_with_app_name">Lejátszás CloudStreamel</string>
<string name="title_home">Kezdőlap</string>
<string name="title_search">Keresés</string>
<string name="title_downloads">Letöltések</string>
<string name="title_settings">Beállítások</string>
<string name="search_hint">Keresés…</string>
<string name="search_hint_site" formatted="true">Keresés %s…</string>
<string name="no_data">Nincs adat</string>
<string name="episode_more_options_des">Több opció</string>
<string name="next_episode">Következő epizód</string>
<string name="result_tags">Műfajok</string>
<string name="result_share">Megosztás</string>
<string name="result_open_in_browser">Megnyitás böngészőben</string>
<string name="skip_loading">Betöltés kihagyása</string>
<string name="result_poster_img_des">Poster</string>
<string name="search_poster_img_des">\@string/result_poster_img_des</string>
<string name="type_watching">Nézés</string>
<string name="type_completed">Befejezve</string>
<string name="type_plan_to_watch">Később megnézés</string>
<string name="type_none">Nincs</string>
<string name="type_re_watching">Újranézés</string>
<string name="play_movie_button">Film lejátszása</string>
<string name="play_trailer_button">Előzetes lejátszása</string>
<string name="play_livestream_button">Élőadás lejátszása</string>
<string name="play_torrent_button">Torrent streamelése</string>
<string name="pick_source">Források</string>
<string name="pick_subtitle">Feliratok</string>
<string name="go_back">Vissza</string>
<string name="download_done">Letöltés kész</string>
<string name="stream">Stream</string>
<string name="error_loading_links_toast">Hiba a linkek betöltésekor</string>
<string name="download_storage_text">Belső tárhely</string>
<string name="app_dubbed_text">Dub</string>
<string name="app_subbed_text">Sub</string>
<string name="popup_delete_file">Fájl törlése</string>
<string name="popup_play_file">Fájl lejátszása</string>
<string name="popup_resume_download">Letöltés folytatása</string>
<string name="popup_pause_download">Letöltés szüneteltetése</string>
<string name="pref_disable_acra">Automatikus hibajelentés kikapcsolása</string>
<string name="home_more_info">Több információ</string>
<string name="home_expanded_hide">Elrejtés</string>
<string name="home_play">Lejátszás</string>
<string name="home_info">Információ</string>
<string name="filter_bookmarks">Könyvjelző szűrése</string>
<string name="error_bookmarks_text">Könyvjelzők</string>
<string name="action_remove_from_bookmarks">Eltávolítás</string>
<string name="action_add_to_bookmarks">Megtekintés állapotának beállítása</string>
<string name="sort_apply">Alkalmazás</string>
<string name="sort_cancel">Mégse</string>
<string name="sort_copy">Másolás</string>
<string name="sort_close">Bezárás</string>
<string name="sort_clear">Törlés</string>
<string name="sort_save">Mentés</string>
<string name="player_speed">Lejátszás sebessége</string>
<string name="subtitles_settings">Felirat beállítások</string>
<string name="subs_text_color">Szövegszín</string>
<string name="subs_outline_color">Körvonal szín</string>
<string name="subs_background_color">Háttér szín</string>
<string name="subs_window_color">Ablak szín</string>
<string name="subs_edge_type">Edge típus</string>
<string name="subs_font">Betűtípus</string>
<string name="search_provider_text_types">Keresés típusok szerint</string>
<string name="search_provider_text_providers">Keresés szolgáltatók szerint</string>
<string name="benene_count_text">%d Banán a fejlesztőknek</string>
<string name="subs_download_languages">Nyelvek letöltése</string>
<string name="subs_hold_to_reset_to_default">Tartsa lenyomva az alapértelmezett érték visszaállításához</string>
<string name="subs_import_text" formatted="true">Betűtípusok importálása %s</string>
<string name="action_remove_watching">Eltávolítás</string>
<string name="action_open_watching">Több információ</string>
<string name="action_open_play">\@string/home_play</string>
<string name="vpn_might_be_needed">VPN szükséges lehet ehhez a szolgáltató megfelelő működéséhez</string>
<string name="vpn_torrent">Ez a szolgáltató torrent, VPN ajánlott</string>
<string name="torrent_plot">Leírás</string>
<string name="torrent_no_plot">Nem található leírás</string>
<string name="show_log_cat">Logcat megjelenítése 🐈</string>
<string name="picture_in_picture">Kép-a-képben</string>
<string name="picture_in_picture_des">Folytatja a lejátszást egy miniatűr lejátszóban, más alkalmazások mellett</string>
<string name="player_size_settings">Lejátszó átméretezése gomb</string>
<string name="player_size_settings_des">Fekete szegélyek eltávolítása</string>
<string name="player_subtitles_settings">Feliratok</string>
<string name="player_subtitles_settings_des">Lejátszó feliratok beállításai</string>
<string name="chromecast_subtitles_settings">Chromecast Feliratok</string>
<string name="chromecast_subtitles_settings_des">Chromecast feliratok beállításai</string>
<string name="eigengraumode_settings_des">Sebességbeállítást ad hozzá a lejátszóhoz</string>
<string name="play_episode">Epizód lejátszása</string>
<string name="downloaded">Letöltve</string>
<string name="download_paused">Letöltés szüneteltetve</string>
<string name="download_canceled">Letöltés megszakítva</string>
<string name="downloading">Letöltés</string>
<string name="subs_font_size">Betűtípus mérete</string>
<string name="subs_subtitle_languages">Felirat nyelve</string>
<string name="provider_info_meta">A metaadatokat a webhely nem biztosítja, a videó betöltése sikertelen lesz, ha nem létezik a webhelyen.</string>
<string name="subs_auto_select_language">Nyelv automatikus kiválasztása</string>
<string name="category_updates">Frissítések és biztonsági mentés</string>
<string name="advanced_search">Speciális keresés</string>
<string name="show_fillers_settings">Filler epizódok mutatása animéknél</string>
<string name="show_trailers_settings">Előzetesek megjelenítése</string>
<string name="redo_setup_process">Telepítési folyamat megismétlése</string>
<string name="anim">Anime applikáció ugyanazoktól a fejlesztőktől</string>
<string name="lightnovel">Light novel applikáció ugyanazoktól a fejlesztőktől</string>
<string name="app_language">Alkalmazás nyelve</string>
<string name="episode">Epizód</string>
<string name="episodes">Epizódok</string>
<string name="season_short">Év</string>
<string name="movies_singular">Film</string>
<string name="episodes_range">%d-%d</string>
<string name="episode_format" formatted="true">%d %s</string>
<string name="episode_short">Ep</string>
<string name="no_episodes_found">Nem található epizód</string>
<string name="delete_file">Fájl törlése</string>
<string name="resume_time_left" formatted="true">%dp
\nhátra</string>
<string name="duration">Időtartam</string>
<string name="free_storage">Elérhető</string>
<string name="used_storage">Használatban</string>
<string name="app_storage">Alkalmazás</string>
<string name="status_completed">Befejezve</string>
<string name="rating">Értékelés</string>
<string name="cartoons">Rajzfilmek</string>
<string name="livestreams">Élőadások</string>
<string name="default_subtitles">Alapértelmezett</string>
<string name="movies">Filmek</string>
<string name="tv_series">TV sorozat</string>
<string name="anime">Anime</string>
<string name="torrent">Torrentek</string>
<string name="asian_drama">Ázsiai drámák</string>
<string name="documentaries">Dokumentumfilmek</string>
<string name="ova">OVA</string>
<string name="others">Egyebek</string>
<string name="tv_series_singular">Sorozat</string>
<string name="anime_singular">\@string/anime</string>
<string name="source_error">Forráshiba</string>
<string name="nsfw">NSFW</string>
<string name="cartoons_singular">Rajzfilm</string>
<string name="ova_singular">\@string/ova</string>
<string name="live_singular">Élőadás</string>
<string name="nsfw_singular">NSFW</string>
<string name="other_singular">Videó</string>
<string name="torrent_singular">Torrent</string>
<string name="documentaries_singular">Dokumentumfilm</string>
<string name="asian_drama_singular">Ázsiai dráma</string>
<string name="episode_action_reload_links">Linkek újratöltése</string>
<string name="episode_action_copy_link">Link másolás</string>
<string name="episode_action_download_mirror">Link letöltés</string>
<string name="episode_action_auto_download">Automatikus letöltés</string>
<string name="backup_success">Adatok eltárolva</string>
<string name="backup_failed_error_format">Hiba a biztonsági mentés során %s</string>
<string name="category_account">Fiókok</string>
<string name="advanced_search_des">Szolgáltatás szerinti keresés eredmények</string>
<string name="bug_report_settings_on">Nem küld adatokat</string>
<string name="kitsu_settings">Poszterek megjelenítése Kitsu-ról</string>
<string name="pref_filter_search_quality">Kiválasztott videóminőségek elrejtése keresési eredményekbe</string>
<string name="automatic_plugin_updates">Automatikus bővítményfrissítések</string>
<string name="automatic_plugin_download">Bővítmények automatikus letöltése</string>
<string name="automatic_plugin_download_summary">Automatikusan telepíti az összes még nem telepített bővítményt a hozzáadott tárolókból.</string>
<string name="updates_settings">Alkalmazás frissítések megjelenítése</string>
<string name="updates_settings_des">Automatikusan keressen új frissítéseket indításkor</string>
<string name="uprereleases_settings">Frissítés az előzetes kiadásokhoz (prerelease)</string>
<string name="uprereleases_settings_des">Csak előzetesen kiadott frissítések (prerelease) keresése a teljes kiadások helyett</string>
<string name="github">Github</string>
<string name="discord">Csatlakozz a Discordhoz</string>
<string name="benene">Adj Banánt a fejlesztőknek</string>
<string name="no_chromecast_support_toast">Ez a szolgáltató nem támogatja a Chromecast-ot</string>
<string name="no_links_found_toast">Nem található link</string>
<string name="copy_link_toast">A link vágólapra másolva</string>
<string name="play_episode_toast">Epizód lejátszása</string>
<string name="subs_default_reset_toast">Alapértelmezett értékre visszaállítása</string>
<string name="acra_report_toast">Az alkalmazás összeomlott. Egy névtelen hibabejelentés küldünk a fejlesztőknek</string>
<string name="season">Évad</string>
<string name="season_format">%s %d%s</string>
<string name="no_season">Nincs évad</string>
<string name="go_forward_30">+30</string>
<string name="delete_message" formatted="true">Ezzel véglegesen törli a %s
\nBiztosan törli\?</string>
<string name="status_ongoing">Folyamatban levő</string>
<string name="year">Év</string>
<string name="site">Webhely</string>
<string name="synopsis">Szinopszis</string>
<string name="no_subtitles">Nincsenek feliratok</string>
<string name="remote_error">Távoli hiba</string>
<string name="render_error">Render hiba</string>
<string name="unexpected_error">Váratlan lejátszó hiba</string>
<string name="storage_error">Letöltés hiba, ellenőrízze a tárolási engedélyeket</string>
<string name="episode_action_chromecast_episode">Chromecast epizód</string>
<string name="episode_action_chromecast_mirror">Chromecast link</string>
<string name="episode_action_play_in_app">Lejátszás az alkalmazásban</string>
<string name="episode_action_play_in_format">Lejátszás %s</string>
<string name="episode_action_play_in_browser">Lejátszás böngészőben</string>
<string name="episode_action_download_subtitle">Feliratok letöltése</string>
<string name="reload_error">Újracsatlakozás…</string>
<string name="swipe_to_seek_settings_des">Swipe balra vagy jobbra a videólejátszóban az idő vezérléséhez</string>
<string name="swipe_to_change_settings">Csúsztassa ujját a beállítások módosításához</string>
<string name="swipe_to_change_settings_des">Csúsztassa az újját bal vagy jobb oldalon a fényerő vagy hangerő megváltoztatásához</string>
<string name="backup_settings">Biztonsági mentés</string>
<string name="benene_count_text_none">0 Banán a fejlesztőknek</string>
<string name="swipe_to_seek_settings">Swipe to seek</string>
<string name="autoplay_next_settings">Következő epizód automatikus lejátszása</string>
<string name="autoplay_next_settings_des">Következő epizód lejátszása amikor az aktuális epizód véget ér</string>
<string name="double_tap_to_seek_settings">Dupla koppintás to seek</string>
<string name="double_tap_to_pause_settings">Dupla koppintás a szüneteltetéshez</string>
<string name="double_tap_to_seek_amount_settings">Player seek amount</string>
<string name="double_tap_to_seek_settings_des">Koppintson kétszer a jobb vagy bal oldalra az előre vagy hátra ugráshoz</string>
<string name="double_tap_to_pause_settings_des">Koppintson középre a szüneteltetéshez</string>
<string name="use_system_brightness_settings">Rendszer fényerejének használata</string>
<string name="use_system_brightness_settings_des">Rendszer fényerejének használata az appban a sötét átfedés helyett</string>
<string name="episode_sync_settings">Előrehaladás frissítése</string>
<string name="episode_sync_settings_des">Automatikusan szinkronizálja az aktuális epizód előrehaladását</string>
<string name="restore_settings">Adatok visszaállítása a biztonsági mentésből</string>
<string name="restore_success">Biztonsági mentés betöltve</string>
<string name="settings_info">Információ</string>
<string name="resume">Folytatás</string>
<string name="go_back_30">-30</string>
<string name="update_started">Frissítés elkezdődött</string>
<string name="restore_failed_format" formatted="true">Nem sikerült visszaállítani az adatok a fájlból %s</string>
<string name="backup_failed">Tárolási engedélyek hiányoznak. Kérjük próbálja újra.</string>
<string name="bug_report_settings_off">Csak összeomlásokról küld adatokat</string>
<string name="apk_installer_settings">APK Telepítő</string>
<string name="apk_installer_settings_des">Egyes telefonok nem támogatják az új csomag telepítőt. Ha a frissítések nem települnek, próbálja meg a régi opciót.</string>
<string name="benene_des">Banán adva</string>
</resources> </resources>

View file

@ -504,4 +504,6 @@
<string name="pref_category_defaults">Predefiniti</string> <string name="pref_category_defaults">Predefiniti</string>
<string name="pref_category_looks">Aspetto</string> <string name="pref_category_looks">Aspetto</string>
<string name="pref_category_ui_features">Funzionalità</string> <string name="pref_category_ui_features">Funzionalità</string>
<string name="delayed_update_notice">L\'app verrà aggiornata all\'uscita</string>
<string name="update_started">Aggiornamento avviato</string>
</resources> </resources>

View file

@ -122,4 +122,11 @@
<string name="no">לא</string> <string name="no">לא</string>
<string name="yes">כן</string> <string name="yes">כן</string>
<string name="action_mark_as_watched">סימון כנצפה</string> <string name="action_mark_as_watched">סימון כנצפה</string>
<string name="status">סטטוס</string>
<string name="logout">התנתק</string>
<string name="login">התחברות</string>
<string name="show_title">כותרת</string>
<string name="none">אין</string>
<string name="all">הכל</string>
<string name="title">כותרת</string>
</resources> </resources>

View file

@ -294,7 +294,7 @@
<string name="login_format" formatted="true">%s %s</string> <string name="login_format" formatted="true">%s %s</string>
<string name="account">konto</string> <string name="account">konto</string>
<string name="logout">Wyloguj się</string> <string name="logout">Wyloguj się</string>
<string name="login">Logowanie</string> <string name="login">Zaloguj się</string>
<string name="switch_account">Przełącz konto</string> <string name="switch_account">Przełącz konto</string>
<string name="add_account">Dodaj konto</string> <string name="add_account">Dodaj konto</string>
<string name="create_account">Utwórz konto</string> <string name="create_account">Utwórz konto</string>
@ -308,7 +308,7 @@
<!-- ============ --> <!-- ============ -->
<string name="none">Brak</string> <string name="none">Brak</string>
<string name="normal">Normalne</string> <string name="normal">Normalne</string>
<string name="all">Wszystkie</string> <string name="all">Wszystko</string>
<string name="max">Maks</string> <string name="max">Maks</string>
<string name="min">Min</string> <string name="min">Min</string>
<string name="subtitles_outline">Kontur</string> <string name="subtitles_outline">Kontur</string>
@ -485,4 +485,6 @@
<string name="pref_category_player_layout">Układ</string> <string name="pref_category_player_layout">Układ</string>
<string name="pref_category_looks">Wygląd</string> <string name="pref_category_looks">Wygląd</string>
<string name="play_trailer_button">Odtwórz zwiastun</string> <string name="play_trailer_button">Odtwórz zwiastun</string>
<string name="delayed_update_notice">Aplikacja zostanie zaktualizowana po wyjściu</string>
<string name="update_started">Aktualizacja rozpoczęta</string>
</resources> </resources>

View file

@ -14,4 +14,12 @@
<string name="delete">Удалить</string> <string name="delete">Удалить</string>
<string name="all">Всё</string> <string name="all">Всё</string>
<string name="pause">Пауза</string> <string name="pause">Пауза</string>
<string name="cast_format" formatted="true">В ролях: %s</string>
<string name="show_title">Название источника</string>
<string name="login">Вход</string>
<string name="none">Нет</string>
<string name="title">Название</string>
<string name="loading">Загрузка…</string>
<string name="status">Статус</string>
<string name="logout">Выйти</string>
</resources> </resources>

View file

@ -281,4 +281,89 @@
<string name="limit_title_rez">Videospelarens upplösning</string> <string name="limit_title_rez">Videospelarens upplösning</string>
<string name="history">Historik</string> <string name="history">Historik</string>
<string name="action_mark_as_watched">Markera som sedd</string> <string name="action_mark_as_watched">Markera som sedd</string>
<string name="chromecast_subtitles_settings_des">Inställningar för Chromecast-undertexter</string>
<string name="tv_layout">TV-layout</string>
<string name="create_account">Skapa konto</string>
<string name="sync_score_format" formatted="true">%d / 10</string>
<string name="sync_total_episodes_none">/\?\?</string>
<string name="sync_total_episodes_some" formatted="true">/%d</string>
<string name="subtitle_offset_extra_hint_later_format">Använd detta om undertexterna visas %d ms för tidigt</string>
<string name="quality_hd">HD</string>
<string name="quality_sd">SD</string>
<string name="quality_uhd">UHD</string>
<string name="resolution_and_title">Upplösning och titel</string>
<string name="error">Fel</string>
<string name="referer">Referer</string>
<string name="next">Nästa</string>
<string name="subtitle_offset_hint">1000 ms</string>
<string name="add_site_summary">Lägga till en klon av en befintlig webbplats med en annan webbadress.</string>
<string name="error_invalid_id">Ogiltigt ID</string>
<string name="error_invalid_url">Ogiltig webbadress</string>
<string name="video_ram_description">Orsakar krascher om inställningen är för hög på enheter med lågt minne, t.ex. Android TV.</string>
<string name="video_disk_description">Orsakar problem om inställningen är för hög på enheter med lågt lagringsutrymme, t.ex. Android TV.</string>
<string name="remove_site_pref">Ta bort webbplats</string>
<string name="add_site_pref">Klona webbplats</string>
<string name="phone_layout">Telefonlayout</string>
<string name="primary_color_settings">Primärfärg</string>
<string name="example_username">Användarnamn</string>
<string name="example_email">namn@email.se</string>
<string name="example_ip">127.0.0.1</string>
<string name="home_source">Källa</string>
<string name="home_random">Slumpmässig</string>
<string name="coming_soon">Kommer snart…</string>
<string name="subtitles_filter_lang">Filtrera efter föredraget språk</string>
<string name="crash_reporting_title">Kraschrapportering</string>
<string name="authenticated_user_fail" formatted="true">Kunde inte logga in på %s</string>
<string name="pref_category_looks">Utseende</string>
<string name="category_ui">Layout</string>
<string name="quality_4k">4K</string>
<string name="app_layout_subtext">Ändra appens utseende så att den passar din enhet</string>
<string name="cast_format" formatted="true">Skådespelare: %s</string>
<string name="play_livestream_button">Spela Livestream</string>
<string name="login_format" formatted="true">%s %s</string>
<string name="subtitle_offset_extra_hint_none_format">Ingen undertextfördröjning</string>
<string name="pref_category_player_features">Spelarfunktioner</string>
<string name="trailer">Trailer</string>
<string name="app_layout">Applayout</string>
<string name="pref_category_ui_features">Funktioner</string>
<string name="example_site_url">exempel.se</string>
<string name="example_lang_name">Språkkod (en)</string>
<string name="video_buffer_disk_settings">Videocache på disken</string>
<string name="video_buffer_clear_settings">Rensa video- och bildcache</string>
<string name="pref_category_links">Länkar</string>
<string name="pref_category_app_updates">Appuppdateringar</string>
<string name="pref_category_player_layout">Layout</string>
<string name="title">Titel</string>
<string name="skip_setup">Hoppa över installationen</string>
<string name="setup_done">Klar</string>
<string name="extensions">Tillägg</string>
<string name="sort_clear">Rensa</string>
<string name="live_singular">Direktsändning</string>
<string name="limit_title">Max tecken i videospelartiteln</string>
<string name="video_buffer_size_settings">Videobuffertstorlek</string>
<string name="video_buffer_length_settings">Videobuffertlängd</string>
<string name="legal_notice">Ansvarsfriskrivning</string>
<string name="pref_category_extensions">Tillägg</string>
<string name="pref_category_cache">Cache</string>
<string name="pref_category_backup">Säkerhetskopiering</string>
<string name="pref_category_subtitles">Undertexter</string>
<string name="enable_nsfw_on_providers">Aktivera NSFW på sidor som stöds</string>
<string name="subtitles_encoding">Undertextkodning</string>
<string name="example_password">lösenord123</string>
<string name="subtitle_offset_title">Fördröjning av undertexter</string>
<string name="subtitle_offset_extra_hint_before_format">Använd detta om undertexterna visas %d ms för sent</string>
<string name="player_load_subtitles">Importera från fil</string>
<string name="player_load_subtitles_online">Importera från Internet</string>
<string name="downloaded_file">Nedladdad fil</string>
<string name="quality_ts">TS</string>
<string name="quality_tc">TC</string>
<string name="quality_dvd">DVD</string>
<string name="quality_hdr">HDR</string>
<string name="quality_sdr">SDR</string>
<string name="resolution">Upplösning</string>
<string name="error_invalid_data">Ogiltig data</string>
<string name="subtitles_remove_captions">Ta bort dold textning från undertexter</string>
<string name="provider_languages_tip">Titta på videor på dessa språk</string>
<string name="previous">Föregående</string>
<string name="tracks">Spår</string>
</resources> </resources>

View file

@ -549,4 +549,6 @@
<string name="pref_category_player_features">播放器功能</string> <string name="pref_category_player_features">播放器功能</string>
<string name="pref_category_actions">行为</string> <string name="pref_category_actions">行为</string>
<string name="pref_category_looks">外观</string> <string name="pref_category_looks">外观</string>
<string name="update_started">更新开始</string>
<string name="delayed_update_notice">应用退出后将会更新</string>
</resources> </resources>

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!--https://newbedev.com/concatenate-multiple-strings-in-xml--><resources> <!--https://newbedev.com/concatenate-multiple-strings-in-xml-->
<resources>
<!-- KEYS DON'T TRANSLATE --> <!-- KEYS DON'T TRANSLATE -->
<string name="search_providers_list_key" translatable="false">search_providers_list</string> <string name="search_providers_list_key" translatable="false">search_providers_list</string>
<string name="locale_key" translatable="false">app_locale</string> <string name="locale_key" translatable="false">app_locale</string>