diff --git a/app/build.gradle b/app/build.gradle index a0015296..586ec311 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,7 +14,7 @@ def versionBuild = 1 // bump for dogfood builds, public betas, etc. def versionExt = "" if (versionBuild > 0){ - versionExt = ".${versionBuild}" + versionExt = ".${versionBuild}-beta" } android { diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/TerminalActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/TerminalActivity.kt index ba35bbdf..f372dd3a 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/TerminalActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/TerminalActivity.kt @@ -5,7 +5,6 @@ import android.content.ClipboardManager import android.content.Context import android.content.Intent import android.content.SharedPreferences -import android.graphics.Color import android.os.Build import android.os.Bundle import android.os.FileObserver @@ -14,9 +13,10 @@ import android.util.Log import android.view.MenuItem import android.view.View import android.view.ViewGroup -import android.view.Window import android.view.inputmethod.InputMethodManager import android.widget.EditText +import android.widget.HorizontalScrollView +import android.widget.LinearLayout import android.widget.ScrollView import android.widget.TextView import android.widget.Toast @@ -40,20 +40,12 @@ import com.deniscerri.ytdlnis.util.UiUtil.enableTextHighlight import com.deniscerri.ytdlnis.work.TerminalDownloadWorker import com.google.android.material.appbar.MaterialToolbar import com.google.android.material.bottomappbar.BottomAppBar -import com.google.android.material.bottomsheet.BottomSheetDialog -import com.google.android.material.chip.Chip -import com.google.android.material.chip.ChipGroup import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton -import com.neo.highlight.core.Highlight -import com.neo.highlight.core.Scheme -import com.neo.highlight.util.listener.HighlightTextWatcher -import com.neo.highlight.util.scheme.ColorScheme import com.yausername.youtubedl_android.YoutubeDL import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.io.File -import java.util.regex.Pattern import kotlin.properties.Delegates @@ -146,12 +138,14 @@ class TerminalActivity : BaseActivity() { intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION) commandPathResultLauncher.launch(intent) } + } true } output = findViewById(R.id.custom_command_output) output!!.setTextIsSelectable(true) + output!!.setHorizontallyScrolling(true) input = findViewById(R.id.command_edittext) input!!.requestFocus() fab = findViewById(R.id.command_fab) @@ -235,10 +229,10 @@ class TerminalActivity : BaseActivity() { input?.enableTextHighlight() output?.enableTextHighlight() - input?.setText(savedInstanceState?.getString("input") ?: "yt-dlp ") + input?.setText(savedInstanceState?.getString("input") ?: input?.text) input!!.requestFocus() input!!.setSelection(input!!.text.length) - output?.text = savedInstanceState?.getString("output") ?: "" + output?.text = savedInstanceState?.getString("output") ?: output?.text if (savedInstanceState?.getBoolean("run") == true){ showCancelFab() } @@ -254,11 +248,33 @@ class TerminalActivity : BaseActivity() { private fun initMenu() { topAppBar?.setOnMenuItemClickListener { m: MenuItem -> - val itemId = m.itemId - if (itemId == R.id.export_clipboard) { - lifecycleScope.launch(Dispatchers.IO){ - val clipboard: ClipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager - clipboard.setText(output?.text) + when(m.itemId){ + R.id.wrap -> { + var scrollView = findViewById(R.id.horizontalscroll_output) + if(scrollView != null){ + val parent = (scrollView.parent as ViewGroup) + scrollView.removeAllViews() + parent.removeView(scrollView) + parent.addView(output, 0) + }else{ + val parent = output?.parent as ViewGroup + parent.removeView(output) + scrollView = HorizontalScrollView(this) + scrollView.layoutParams = LinearLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ) + scrollView.addView(output) + scrollView.id = R.id.horizontalscroll_output + parent.addView(scrollView, 0) + } + output?.setHorizontallyScrolling(output?.canScrollHorizontally(1) != true) + } + R.id.export_clipboard -> { + lifecycleScope.launch(Dispatchers.IO){ + val clipboard: ClipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager + clipboard.setText(output?.text) + } } } true diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/downloadLogs/DownloadLogFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/downloadLogs/DownloadLogFragment.kt index a95e7bf0..7b0890dd 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/downloadLogs/DownloadLogFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/downloadLogs/DownloadLogFragment.kt @@ -6,18 +6,23 @@ import android.graphics.Color import android.os.Bundle import android.os.FileObserver import android.view.LayoutInflater +import android.view.MenuItem import android.view.View import android.view.ViewGroup +import android.widget.HorizontalScrollView +import android.widget.LinearLayout import android.widget.ScrollView import android.widget.TextView import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope import androidx.lifecycle.map import com.deniscerri.ytdlnis.MainActivity import com.deniscerri.ytdlnis.R import com.deniscerri.ytdlnis.database.models.LogItem import com.deniscerri.ytdlnis.database.viewmodel.LogViewModel import com.google.android.material.appbar.MaterialToolbar +import com.google.android.material.bottomappbar.BottomAppBar import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton import com.google.android.material.snackbar.Snackbar import com.neo.highlight.core.Highlight @@ -63,12 +68,14 @@ class DownloadLogFragment : Fragment() { content.setTextIsSelectable(true) contentScrollView = view.findViewById(R.id.content_scrollview) + val bottomAppBar = view.findViewById(R.id.bottomAppBar) + copyLog = view.findViewById(R.id.copy_log) copyLog.setOnClickListener { val clipboard: ClipboardManager = mainActivity.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager clipboard.setText(content.text) - Snackbar.make(content, getString(R.string.copied_to_clipboard), Snackbar.LENGTH_LONG).show() + Snackbar.make(bottomAppBar, getString(R.string.copied_to_clipboard), Snackbar.LENGTH_LONG).show() } val id = arguments?.getLong("logID") @@ -112,6 +119,34 @@ class DownloadLogFragment : Fragment() { ) highlight.setSpan(content) content.addTextChangedListener(highlightWatcher) + content.setHorizontallyScrolling(false) + + bottomAppBar?.setOnMenuItemClickListener { m: MenuItem -> + when(m.itemId){ + R.id.wrap -> { + var scrollView = view.findViewById(R.id.horizontalscroll_output) + if(scrollView != null){ + val parent = (scrollView.parent as ViewGroup) + scrollView.removeAllViews() + parent.removeView(scrollView) + parent.addView(content, 0) + }else{ + val parent = content.parent as ViewGroup + parent.removeView(content) + scrollView = HorizontalScrollView(requireContext()) + scrollView.layoutParams = LinearLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ) + scrollView.addView(content) + scrollView.id = R.id.horizontalscroll_output + parent.addView(scrollView, 0) + } + content.setHorizontallyScrolling(!content.canScrollHorizontally(1)) + } + } + true + } } companion object { diff --git a/app/src/main/java/com/deniscerri/ytdlnis/util/UpdateUtil.kt b/app/src/main/java/com/deniscerri/ytdlnis/util/UpdateUtil.kt index 4d31ecaf..92ec1d0a 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/util/UpdateUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/util/UpdateUtil.kt @@ -58,7 +58,7 @@ class UpdateUtil(var context: Context) { if ( (useBeta && v == null) || - BuildConfig.VERSION_NAME == v!!.tag_name.removePrefix("v") + BuildConfig.VERSION_NAME == v!!.tag_name.removePrefix("v").removeSuffix("-beta") ){ result(context.getString(R.string.you_are_in_latest_version)) return diff --git a/app/src/main/res/drawable/baseline_wrap_text_24.xml b/app/src/main/res/drawable/baseline_wrap_text_24.xml new file mode 100644 index 00000000..aab0191e --- /dev/null +++ b/app/src/main/res/drawable/baseline_wrap_text_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/terminal_icon_foreground.xml b/app/src/main/res/drawable/terminal_icon_foreground.xml index 583d7739..3c025de7 100644 --- a/app/src/main/res/drawable/terminal_icon_foreground.xml +++ b/app/src/main/res/drawable/terminal_icon_foreground.xml @@ -3,7 +3,7 @@ android:height="108dp" android:viewportWidth="24" android:viewportHeight="24" - android:tint="#333333"> + android:tint="#fff"> diff --git a/app/src/main/res/layout/fragment_download_log.xml b/app/src/main/res/layout/fragment_download_log.xml index 684205c6..eb516163 100644 --- a/app/src/main/res/layout/fragment_download_log.xml +++ b/app/src/main/res/layout/fragment_download_log.xml @@ -37,39 +37,42 @@ android:paddingBottom="150dp" > - - - - - + + + + + - \ No newline at end of file diff --git a/app/src/main/res/menu/log_detail_menu.xml b/app/src/main/res/menu/log_detail_menu.xml new file mode 100644 index 00000000..c996f532 --- /dev/null +++ b/app/src/main/res/menu/log_detail_menu.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/app/src/main/res/menu/terminal_top_menu.xml b/app/src/main/res/menu/terminal_top_menu.xml index 660cf513..a1f4027d 100644 --- a/app/src/main/res/menu/terminal_top_menu.xml +++ b/app/src/main/res/menu/terminal_top_menu.xml @@ -1,6 +1,12 @@ + + + Arxa Planda Formatları Yenilə Yt-dlp-ni Avtomatik Yenilə SponsorBlock istifadə et + Planlaşdırma + Qalıq faylların daxili yaddaşa yüklə, sonra seçdiyiniz qovluğa köçürün. Birbaşa yaddaşa yaza bilmədiyinizdə bunu istifadə edin + Əvvəlcə Qalığı Yükləyir + Plan Üzrə Yükləmə \ No newline at end of file diff --git a/app/src/main/res/values-bn-rIN/strings.xml b/app/src/main/res/values-bn-rIN/strings.xml new file mode 100644 index 00000000..047f78b9 --- /dev/null +++ b/app/src/main/res/values-bn-rIN/strings.xml @@ -0,0 +1,192 @@ + + + টেমপ্লেট তৈরি করতে সাধারণত ব্যবহৃত কমান্ড ব্যবহার করুন + থাম্বনেইলটি ডাউনলোড ফোল্ডারে সংরক্ষণ করুন + ডিভাইস থেকে ফাইলটি মুছুন + কমান্ড ডাউনলোড + ভূমিকা + নতুন সংস্করণ ইনস্টল করা হচ্ছে + ফিল্টার + সদস্যতা রিমাইন্ডার + ডাউনলোড বাতিল করুন + লগ + কিউ তে আছে + অডিও মান + অধ্যায় দ্বারা বিভক্ত করুন + অডিও ফরম্যাট + শিরোনাম + অডিও সামঞ্জস্য করুন + এই পছন্দটি কার্যকর করার জন্য আপনাকে অ্যাপটি পুনরায় চালু করতে হবে এবং কোনও সক্রিয় ডাউনলোড নেই! + আবার জিজ্ঞাসা করবেন না + মিউজিক ফোল্ডার + সতর্কতা + একটি উপযুক্ত APK খুঁজে পাওয়া যায়নি। + নতুন সংস্করণ ডাউনলোড করা হচ্ছে + ডাউনলোডটি চলছে। পরে আবার চেষ্টা করুন + নতুন টেমপ্লেট + yt-dlp-এর অন্ধকার সংস্করণ + একটি yt-dlp কমান্ড ব্যবহার করে ডাউনলোডের অগ্রগতি দেখানো বিজ্ঞপ্তি + ভিডিওতে অধ্যায় + একই সময়ে চালানো ডাউনলোডের সংখ্যা + সাবটাইটেল এম্বেড করুন + পূর্বনির্ধারিত ডাউনলোডারের পরিবর্তে aria2c ব্যবহার করুন + এমটাইম সক্ষম করুন + API কী ব্যবহার করুন + ভিডিও সামঞ্জস্য করুন + প্রক্রিয়াকরণ চলছে + ক্র্যাশ/ত্রুটি/বাতিল করা ডাউনলোড থেকে ক্যাশে ফাইল মুছুন + ডিলেট মুছে ফেলুন + কমান্ড টেমপ্লেট + ডাউনলোড হচ্ছে + প্রস্তাবিত + সদৃশ অপসারণ + তৈরি করুন + অধ্যায় যোগ করুন + বাকি আইটেম(গুলি) + নন-মিউজিক এবং অফটপিক অংশ + থাম্বনেইল সংরক্ষণ করুন + স্পন্সর + SponsorBlock ফিল্টারিং নির্বাচন করুন + স্ব প্রচার + অস্থায়ী ফাইল সাফ করুন + থাম্বনেইল কভার + ইতিহাস থেকে অনুসন্ধান করুন + আপডেট ফরম্যাট + অডিও এবং ভিডিও ফাইল ডাউনলোডের অগ্রগতি দেখানোর বিজ্ঞপ্তি + পূর্বরূপ + ডাউনলোড করার জন্য বিকল্পগুলি দেখান + লগ কপি করুন + সম্পাদনা করুন + yt-dlp এর নতুন সংস্করণ ইনস্টল করুন + 0 (সেরা) 10 (সবচেয়ে খারাপ) + ফোল্ডারস + আপডেট করুন + ভিডিও মান + টেমপ্লেট + সর্বাধিক ডাউনলোড হার (বাইটে প্রতি সেকেন্ডে), যেমন 50K বা 4.2M + নিশ্চিত করুন + অনুসন্ধান করুন বা URL ইনসার্ট করুন + আপনার কপি করা লিঙ্ক + ডাউনলোডসমূহ + আপনার কমপক্ষে একটি কমান্ড টেমপ্লেট তৈরি করা দরকার! + ফরম্যাট নির্বাচন করুন + নতুন কুকি + সোর্স কোড + কুকি + ক্লিপবোর্ডে রপ্তানি করুন + সীমা হার + শেষ + টেমপ্লেট তৈরি করুন + মুক্ত স্থান + ফাইল খুলুন + শুরু + মুছে ফেলা হচ্ছে + ডিভাইসে ডাউনলোডগুলি সংরক্ষণ করতে এই অ্যাপটির ফাইল অনুমতি প্রয়োজন + সংস্করণ + একাধিক আইটেম মুছে ফেলা হচ্ছে + একযোগে ডাউনলোড করার জন্য একটি DASH/HLS নেটিভ ভিডিওর খণ্ডের সংখ্যা + নির্বাচন করা + পছন্দের ডাউনলোড টাইপ + ঠিক আছে + অ্যাপটি খোলা হলে এর নতুন সংস্করণ ঘোষণা করুন + URL + সমস্ত ডিরেক্টরিতে অ্যাক্সেসের অনুমতি দিন + অনুবাদে সহায়তা করুন + শ্রেণীবিভাজন + শেষ সংশোধিত সময় হিসাবে HTTP শেষ-সংশোধিত হেডার সেট করুন + ক্লিপবোর্ডে লিঙ্ক কপি করা হয়েছে + সেভ করার স্থান + সব মুছে ফেলুন + পূর্বনির্ধারিত + ভিডিও ফরম্যাট + ডিফল্ট যে ট্যাবে ডাউনলোড কার্ড খুলবে + পুনরায় ডাউনলোড করুন + ধারক + বাতিলগুলি সাফ করুন + ভিডিও ফোল্ডার + সব নির্বাচন করুন + ডাউনলোড + কমান্ড চালু করুন + টেমপ্লেট আপডেট করুন + সম্পর্কিত + সব ডাউনলোড করুন + আবার শুরু করুন + যে তারিখে যোগ করা হয়েছে + অপসারণ করুন + ফাইলের নাম টেমপ্লেট + শেষাংশ + সম্পূর্ণ ইতিহাস মুছে ফেলুন, স্থায়ীভাবে + আরও + ইতিহাস খালি + নির্বাচন করুন + আপডেট করা হচ্ছে + সমসাময়িক ডাউনলোড + নতুন কাট + লগ ডাউনলোড + টার্মিনাল + সমবর্তী টুকরা + হোম + বাতিল করুন + ফাইল ডাউনলোড + ডিভাইস থেকে ফাইলগুলো মুছুন + ডাউনলোডের অপেক্ষা + অনুগ্রহপূর্বক অপেক্ষা করুন + ফলাফল মুছুন + ডাউনলোড পুনরায় আরম্ভ করার চেষ্টায় ত্রুটি হয়েছে + Weblate ব্যবহার করে আপনার ভাষায় এই অ্যাপটি অনুবাদ করুন + অনুসন্ধানের ইতিহাস পরিষ্কার করুন + টেমপ্লেট অ্যাডজাস্ট করুন + সমস্ত ডাউনলোড বন্ধ করা হবে এবং অ্যাপটি জোর করে বন্ধ করা হবে + ত্রুটিপূর্ণ + আইটেম ডাউনলোড করার জন্য সেটিংস + ফাইল ডাউনলোড করা যায়নি। + বাতিল হয়েছে + নির্বাচনগুলো সম্পাদনা করুন + প্রতিটি ডাউনলোডের জন্য একটি লগ ফাইল তৈরি করুন + আপডেট এর জন্য অনুসন্ধান করুন + সমস্ত আইটেম নির্বাচিত + ভাষা + ডাউনলোড সূচি পুনঃনির্ধারিত হলো: + অনুসন্ধান করুন + ফাইলের সাইজ + ফাইলের নামগুলিকে শুধুমাত্র ASCII অক্ষরের মধ্যে সীমাবদ্ধ করুন এবং ফাইলের নামগুলিতে \"&\" এবং স্পেস এড়িয়ে চলুন + ডাউনলোড সামঞ্জস্য করুন + শর্টকাট + ভিডিও + কভার আর্ট হিসাবে থাম্বনেইল ব্যবহার করুন + নতুন সংস্করণ ডাউনলোড করা হচ্ছে + চলছে + ত্রুটিপূর্ণগুলো সাফ করুন + সেটিংস + কাস্টম কমান্ডের জন্য ফোল্ডার + সবচেয়ে খারাপ মানের + YouTube API থেকে প্রস্তাবিত ভিডিওগুলো + ফরম্যাট কার্ডে ক্লিক করার সময় স্বয়ংক্রিয়ভাবে অনুপস্থিত ফরম্যাটগুলির জন্য অনুসন্ধান করুন + অস্থায়ী ফাইল সাফ করা হয়েছে + ডাউনলোডগুলো বাতিল করুন + আপলোডার + কাটুন + শর্টকাট তৈরি করুন + yt-dlp সংস্করণ + ডাউনলোড করতে সমস্যা হলে সেক্ষেত্রে উপকারী + কমান্ড + ডিফল্টরূপে সীমাবদ্ধ ডিরেক্টরিগুলিতে অ্যাপটিকে ডাউনলোড করতে দিন + ফাইল নাম সীমাবদ্ধ করুন + শেয়ার করুন + ক্লিপবোর্ড থেকে আমদানি করুন + সর্বশেষ সংস্করণ ব্যবহার করছে + অ্যাপ থেকে প্রস্থান করুন + আইটেম আমদানি করা হয়েছে + ব্যাটারি অপ্টিমাইজেশান উপেক্ষা করুন + ফরম্যাট + অ্যাপ বন্ধ করুন + ইতিহাসে যোগ না করে ডাউনলোড করুন + অডিও + ফরম্যাট আপডেট করার সময় ত্রুটি! + ইউটিউব / স্পনসরব্লক বিভাগগুলিকে ভিডিওর অধ্যায় হিসাবে চিহ্নিত করুন + সম্পূর্ণ লগ তালিকা স্থায়ীভাবে মুছুন। + নতুন সংস্করণ ইনস্টল করা হয়েছে + কোন ফলাফল নেই + সবচেয়ে ভালো মানের + ভিডিওতে সাবটাইটেল যোগ করুন + \ No newline at end of file diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 7b002cee..1ed851ec 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -297,5 +297,5 @@ निर्धारण अनुसूची के अनुसार डाउनलोड करें पहले कैच डाउनलोड करे - पहले फोन की स्टोरेज मैं डाउनलोड किया जाएगा उसके बाद आपकी दर्ज की गई लोकेशन में , इसका उपयोग तब करे जब आपको सीधा इंटरनल स्टोरेज मैं स्थापित करने में परेशानी आ रही हो + कैश फाइल्स फोन की स्टोरेज में डाउनलोड हो कर उसके बाद आपकी दर्ज की गई लोकेशन में ट्रांसफर होती हैं। इसका उपयोग तब करें जब आपको सीधा इंटरनल स्टोरेज मैं स्थापित करने में परेशानी आ रही हो \ No newline at end of file diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index ac244d59..84af2f71 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -297,5 +297,5 @@ Singgahkan (Cache) Unduhan Dahulu Penjadwalan Unduh Sesuai Jadwal - Singgahkan (cache) berkas unduhan ke penyimpanan internal, kemudian pindahkan ke direktori pilihanmu. Gunakan ini apabila kamu tidak menulis berkasnya langsung ke penyimpanan + Singgahkan (cache) berkas unduhan ke penyimpanan internal, kemudian pindahkan ke direktori pilihanmu. Gunakan ini apabila kamu tidak bisa menulis berkasnya langsung ke penyimpanan \ No newline at end of file diff --git a/app/src/main/res/values-jv/strings.xml b/app/src/main/res/values-jv/strings.xml new file mode 100644 index 00000000..b33afb61 --- /dev/null +++ b/app/src/main/res/values-jv/strings.xml @@ -0,0 +1,145 @@ + + + Gunakake printah sing umum digunakake kanggo nggawe template + Mbusak file saka piranti + intro + Nginstal versi anyar + Pangisi + Pangeling Langganan + Rekam-Log + Di Antrean + Kapisah dening Undhang-undhang + Nyetel Audio + Sampeyan kudu miwiti maneh app lan ora duwe download aktif supaya pilihan iki ditrapake! + Aja takon maneh + Folder musik + Pènget + Ora bisa nemokake APK sing cocog. + Download versi anyar + Ngundhuh buruh lagi mlaku. Coba maneh mengko + Cithakan anyar + yt-dlp Versi Wengi + Jumlah download sing mlaku bebarengan + Aktifake wektu + Ngatur video + Mbusak file cache saka download tabrakan / kesalahan / batal + Cithakan printah + Kanggo + Tambah Bab + Bagian Non-Musik lan Off-Topik + Sponsor + Pilih SponsorBlock Screening + Promosi Diri + File sementara kosong + Telusuri saka Sejarah + Nganyari Format + Kabar sing nuduhake kemajuan download file audio lan video + Pratinjau + Tampilake Pilihan kanggo Download + Nyalin log + Sunting + Instal versi paling anyar saka yt-dlp + Folder + Nganyari + cithakan + Konfirmasi + Telusuri utawa Lebokake URL + Link sing disalin + Pilih Format + Kode sumber + Ekspor menyang clipboard + Akhir + Nggawe Cithakan + Ruang kosong penyimpanan + Buka berkas + Wiwitan + Aplikasi iki mbutuhake Idin File kanggo nyimpen download ing piranti + Versi + Mbusak sawetara item + Jumlah fragmen video DASH/HLS asli sing bakal diundhuh bebarengan + Milihi + Unduh Preferensi Jinis + Oke + Ngidini akses menyang kabeh direktori + Bantuan Terjemahan + Setel header HTTP Last Modified minangka wektu pungkasan sing diowahi + Direktori Panyimpenan + Resik kabeh + Asli + Tab kertu download bakal mbukak kanthi gawan + Unduh ulang + Wadhah + Mbusak Batal + Folder Video + Nganyari Cithakan + Babagan + Unduh kabeh + Baleni meneh + Tanggal ditambahake + ngresiki + Cithakan Jeneng berkas + Outro + Mbusak kabeh riwayat, kanthi permanen + Waca liyane + milih + Nganyari + Undhuhan bebarengan + Log Downloads + Terminal + Fragmen bebarengan + Kaca ngarep + Batal + Ngundhuh file + Mbusak file saka piranti + Download Antrian + Mangga ngenteni + asil cetha + Kesalahan nalika nyoba miwiti download maneh + Terjemahake aplikasi iki menyang basa sampeyan nggunakake Weblate + Mbusak Riwayat Browsing + Ngatur cithakan + Mungkasi kabeh undhuhan lan nutup aplikasi kanthi paksa + Kesalahan + Setelan carane ndownload item + Ora bisa ngundhuh file. + dibatalake + Suntingan sing dipilih + Nggawe file log kanggo saben download + Priksa Update + Kabeh butir dipilih + Basa + Download dijadwal maneh menyang: + Browse + Ukuran berkas + Batesi jeneng berkas kanggo karakter ASCII, lan supaya \"&\" lan spasi ing jeneng berkas + Trabasan + Video + Download versi anyar + Mlaku-mlaku + Mbusak Kasalahan + Setelan + Folder Command Custom + Kualitas Terburuk + Nelusuri format sing ilang kanthi otomatis nalika ngeklik kertu format + Berkas sementara dikosongkan + Potong + Nggawe Trabasan + Versi yt-dlp + Migunani yen sampeyan duwe masalah ngundhuh + dhawuh + Ngidini aplikasi ngundhuh ing direktori sing diwatesi kanthi gawan + Watesi Jeneng File + Impor saka clipboard + Versi paling anyar digunakake + Metu Saka Apk + Item sing diimpor + Nglirwakake Optimization Baterei + Format + Hentikan Aplikasi + Audio + Kesalahan nganyari format! + Mbusak kabeh dhaptar cathetan, permanen. + Versi anyar diinstal + Ora ana asil + Kualitas paling apik + \ No newline at end of file diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index d091c1d9..48df29a0 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -297,5 +297,5 @@ ਸ਼ਡਿਊਲ ਕਰਨਾ ਸ਼ਡਿਊਲ \'ਤੇ ਡਾਊਨਲੋਡ ਕਰੋ ਡਾਊਨਲੋਡਸ ਨੂੰ ਪਹਿਲਾਂ ਕੈਸ਼ ਵਿੱਚ ਭਰੋ - ਅੰਦਰੂਨੀ ਸਟੋਰੇਜ ਵਿੱਚ ਡਾਊਨਲੋਡ ਕਰੋ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਟ੍ਰਾਂਸਫਰ ਕਰੋ। ਇਸਦੀ ਵਰਤੋਂ ਉਦੋਂ ਕਰੋ ਜਦੋਂ ਤੁਸੀਂ ਸਟੋਰੇਜ \'ਤੇ ਸਿੱਧਾ ਨਹੀਂ ਭਰ ਸਕਦੇ + ਕੈਸ਼ ਫਾਈਲਾਂ ਅੰਦਰੂਨੀ ਸਟੋਰੇਜ ਵਿੱਚ ਡਾਊਨਲੋਡ ਹੋ ਕੇ ਫੇਰ ਤੁਹਾਡੀ ਚੁਣੀ ਥਾਂ ਤੇ ਟ੍ਰਾਂਸਫਰ ਹੁੰਦੀਆ ਹਨ। ਇਸਦੀ ਵਰਤੋਂ ਉਦੋਂ ਕਰੋ ਜਦੋਂ ਤੁਸੀਂ ਸਟੋਰੇਜ \'ਤੇ ਸਿੱਧਾ ਡਾਊਨਲੋਡ ਨਹੀਂ ਸਕਦੇ \ No newline at end of file diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index f4205ab3..319e7bf6 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -8,7 +8,7 @@ Pastas Atualização Útil se você tiver problemas ao baixar - Remover resultados + Limpar resultados Baixar todos Pasta de vídeos Sobre @@ -87,7 +87,7 @@ Cancelar download Verifica se há atualizações ao iniciar o aplicativo Ajustar download - Salvar miniatura na pasta de download + Salve a miniatura na pasta de download Formato de áudio URL Título @@ -111,7 +111,7 @@ Formato Selecionar formato Por favor, aguarde… - Remover histórico de buscas + Limpar histórico de pesquisa Habilitar mtime Atualizar formatos Registro de downloads @@ -145,15 +145,15 @@ Permitir acesso a todos os diretórios Permitir que o aplicativo faça downloads em diretórios restritos por padrão Aguardando - Remover downloads cancelados - Remover downloads com falhas + Limpar downloads cancelados + Limpar downloads com falhas Dividir por capítulos Itens importados Ajude a traduzir Traduza este aplicativo para o seu idioma usando o Weblate Reiniciar Tamanho do arquivo - Remover arquivos temporários + Limpar arquivos temporários Importar da área de transferência Exportar para a área de transferência Terminal @@ -188,9 +188,9 @@ Recomendações de vídeo Origem dos formatos Idiomas das legendas - Salve o arquivo de legenda na pasta de downloads + Salve o arquivo de legenda na pasta de download Inverter seleção - Downloads usando qualquer tipo de rede. Caso contrário, espera por uma rede ilimitada + Faça o download usando qualquer tipo de rede. Caso contrário, espera por uma rede ilimitada Download através de redes limitadas Excluir todos os cookies permanentemente Excluir todos os cookies @@ -235,14 +235,14 @@ Backup Downloads concluídos O download começará assim que você estiver conectado a uma rede ilimitada - Não remover arquivos temporários após concluir o download + Não exclua arquivos temporários após concluir o download Link que você copiou - Remove arquivos em cache de downloads com falhas/erros/cancelados + Exclua arquivos em cache de downloads com falhas/erros/cancelados ID do formato preferido Baixar novamente Cookies Pesquise automaticamente formatos ausentes ao clicar no cartão de formato - Começar + Início Versão do yt-dlp Fim Encerrar Aplicativo @@ -278,7 +278,7 @@ \n Ocultar miniaturas Salvou - Remover downloads salvos + Limpar downloads salvos Salvar download para mais tarde\? Adicionar comandos extras Para downloads de áudio/vídeo. Adicione comandos extras junto com a configuração da GUI @@ -288,7 +288,7 @@ Comando extra Salvar descrição Usar Cookies - Salve o arquivo de descrição na pasta de downloads + Salve o arquivo de descrição na pasta de download Incorporar metadados Incorpore metadados ao arquivo de vídeo. Também incorpore capítulos/infojson se presente Atualização automática do yt-dlp @@ -297,5 +297,5 @@ Downloads em cache primeiro Os arquivos de cache são baixados para o armazenamento interno e depois movidos para o diretório escolhido. Use isto quando você não puder gravar diretamente no armazenamento Agendamento - Baixar downloads agendado + Baixe no horário agendado \ No newline at end of file diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 9c43413d..264e545c 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -4,8 +4,8 @@ Não foi possível descarregar o ficheiro. A descarregar nova versão Vídeo - Transferências de ficheiros - Notificação que mostra o progresso da transferência de ficheiros de áudio e vídeo + Ficheiros descarregados + Notificação que mostra o progresso de descarga de ficheiros de áudio e vídeo Pesquisar no histórico A instalar nova versão Capas de miniaturas @@ -59,19 +59,19 @@ A descarregar nova versão Áudio Guardar miniatura - Guardar a miniatura na pasta de transferência - Cancelar transferência + Guardar a miniatura na pasta de descargas + Cancelar descarga Executar comando - Comando de transferências - Notificação que mostra o progresso da transferência usando um comando yt-dlp + Comando de descargas + Notificação que mostra o progresso de descarga usando um comando yt-dlp O histórico está vazio Eliminar URL Ligação copiada para a área de transferência Utilizar chave API - Cancelar transferências + Cancelar descargas Descarregar sem adicionar ao histórico - Ajustar transferência + Ajustar descarga Título Autor Qualidade de vídeo @@ -100,7 +100,7 @@ Erro Copiar registo Criar - Tipo de transferência preferido + Tipo de descarga preferida Em fila Limpar cancelado Tamanho do ficheiro @@ -108,15 +108,15 @@ Reiniciar Copiado para a área de transferência Claro - Não eliminar ficheiros temporários após a conclusão da transferência + Não eliminar ficheiros temporários após a conclusão da descarga Qualidade Sistema Monocromático Roxo Gestos Utilizar aria2c para descarregar vídeos - Taxa máxima da transferência (em bytes por segundo), por exemplo, 50K ou 4,2M - Número de fragmentos de um vídeo DASH/HLS para descarregar em simultâneo + Taxa máxima de descarga (em bytes por segundo), por exemplo, 50K ou 4,2M + Número de fragmentos de um vídeo nativo DASH/HLS a descarregar em simultâneo Fragmentos em simultâneo Patrocinadores Introdução @@ -126,16 +126,16 @@ Ajustar modelos Limpar histórico de pesquisas Atualizar formatos - Registo de transferências - Criar um ficheiro de registo para cada transferência - Fila de transferência + Registo de descargas + Criar um ficheiro de registo para cada descarga + Fila de descarga Em execução Comando Importar da área de transferência Utilizar os comandos mais utilizados para criar modelos Cancelado Criar atalho - Erro ao tentar reiniciar a transferência + Erro ao tentar reiniciar a descarga Atualizar Selecionar selecionado(s) @@ -158,32 +158,32 @@ Verde Amarelo "Descarregado: " - Transferências concluídas - Notificação de transferências concluídos ou defeituosos + Descargas concluídas + Notificação de descargas concluídas ou defeituosas Descarga rápida Não busque dados antecipadamente Remover áudio ID do formato preferido Descarregar agora - A transferência já existe + A descarga já existe Local preferido Pausa Retomar Manter cache - Cópia de segurança + Backup Restaurar Erro de rede Incógnito SponsorBlock Histórico de pesquisas Aparência - Cópia de segurança e restauro + Backup e Restauro Sugestões de pesquisa Obter sugestões de pesquisa do Google Diversos Geral - Número de transferências executadas ao mesmo tempo - Transferências simultâneas + Número de descargas executadas ao mesmo tempo + Descargas simultâneas Modelo Selecionar filtros de Anúncios Recipiente @@ -197,12 +197,12 @@ Restringir nomes de ficheiros Ligação que copiou Terminar aplicação - Eliminar ficheiros em cache de transferências bloqueadas/erradas/canceladas - Mover ficheiros em cache para a pasta de transferências + Eliminar ficheiros em cache de descargas com falhas/erros/canceladas + Mover ficheiros em cache para a pasta de descargas Obter vídeos recomendados do YouTube no ecrã inicial a partir da API PIPED Marcar segmentos do YouTube / SponsorBlock como capítulos do vídeo Eliminar vários itens - Esta aplicação necessita de permissões de ficheiro para guardar transferências no dispositivo + Esta aplicação necessita de permissões de ficheiro para guardar descargas no dispositivo Partes não relacionadas à música e off-topic Versão noturna do yt-dlp Ajustar áudio @@ -214,14 +214,14 @@ Selecione o formato Ativar mtime Definir o cabeçalho HTTP \"Last-Modified\" como a hora da última modificação - Separador predefinido no qual o cartão de transferência será aberto + Separador predefinido no qual o cartão de descarga será aberto Eliminar permanentemente toda a lista de registos. Permitir que a aplicação descarregue em directórios que são restritos por predefinição Espaço livre Restringir os nomes de ficheiros apenas a caracteres ASCII e evitar \"&\" e espaços nos nomes de ficheiros - Interrompe todas as transferências e força o encerramento da aplicação + Interrompe todas as descargas e força o encerramento da aplicação Não pergunte novamente - O trabalhador de transferência está em execução. Tente mais tarde + O trabalhador de descarga está em execução. Tente mais tarde Começar Pesquise automaticamente formatos ausentes ao clicar no cartão de formato Ignorar a otimização da bateria @@ -237,7 +237,7 @@ Eliminar todos os cookies, de forma permanente Descarregar em redes com contador Descarrega utilizando qualquer tipo de rede. Caso contrário, espera por uma rede não medida - A transferência será iniciada assim que estiver ligado a uma rede sem contador + A descarga será iniciada assim que estiver ligado a uma rede sem contador Inverter selecionado Salvar legendas Cookies @@ -253,14 +253,14 @@ ID do formato Taxa de amostragem de áudio Codec - Atualização dos dados do item de download + A atualizar os dados do item de descarga Não foi possível analisar o ficheiro Restauro da aplicação concluído. Os seguintes itens foram restaurados: - Selecione as categorias de backup - Ficheiro de cópia de segurança guardado na pasta de transferências + Selecionar categorias de backup + Backup guardado na pasta de descargas Utilizar o proxy HTTP/HTTPS/SOCKS especificado URL do proxy Socks5 - Selecionar o formato com este ID no cartão de transferência + Selecionar o formato com este ID no cartão de descarga Deslizar itens para determinadas acções Cortar miniatura Cortar a miniatura num quadrado para transferências de áudio @@ -277,12 +277,12 @@ Comando atual Guardado Limpar guardado - Para transferências de áudio/vídeo. Adicione comandos extra juntamente com a configuração GUI + Para descargas de áudio/vídeo. Adicione comandos extra juntamente com a configuração GUI Formato da legenda \n Ocultar miniaturas Processo mais lento, mas cortes mais precisos - Guardar a transferência para mais tarde\? + Guardar a descarga para mais tarde\? Forçar quadros-chave em cortes Mostrar o Terminal no menu Partilhar Guardar descrição @@ -294,8 +294,8 @@ Atualizar formatos em segundo plano Atualização automática do yt-dlp Utilizar SponsorBlock - Transferências em cache primeiro + Descargas em cache primeiro Programação Os ficheiros de cache são descarregados para o armazenamento interno e, em seguida, movidos para o diretório escolhido. Utilize esta opção quando não puder escrever diretamente para o armazenamento - Descarregar a agenda + Programar descargas \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index adf08751..5d0082ce 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -9,12 +9,12 @@ Найти или вставить URL Обновить yt-dlp Невозможно загрузить файл. - Файл загружается + Загрузка файлов Используется последняя версия Установлена новая версия Загрузка новой версии Удалить - Хорошо + OK Отмена Подтвердить Поиск в истории @@ -26,17 +26,17 @@ Загрузка новой версии Аудио Видео - Количество фрагментов оригинального видео DASH/HLS для одновременной загрузки + Количество фрагментов DASH/HLS в видео для одновременной загрузки Загрузка Ограничение скорости загрузки Обработка Добавить субтитры в видео Обложки миниатюр Главы в видео - Пометить сегменты YouTube / SponsorBlock как главы для видео + Отметить сегменты YouTube / SponsorBlock как главы для видео Сохранить обложку видео - Аудиоформат - Видеоформат + Формат аудио + Формат видео Качество аудио 0 (лучшее) 10 (худшее) Отменить загрузку @@ -46,7 +46,7 @@ URL Ссылка скопирована Использовать ключ API - Видеорекомендации от Youtube API + Рекомендации видео от Youtube API Загрузки Команда загружает Убрать удаленные @@ -63,27 +63,27 @@ Превью Напоминания о подписке Выберите фильтрацию SponsorBlock - Офтопик + Фильтры Немузыкальные части клипов Настройки Папка с видео Загрузить все Папки - Обновления - Полезно в случае проблем с загрузкой + Обновление + Полезно при проблемах с загрузкой Удалить всю историю навсегда Установка новой версии Папка кастомных команд - Сохраните обложку видео в папке загрузки + Сохранить обложку видео в папке загрузки Максимальная скорость загрузки (в байтах в секунду), например, 50К или 4.2М Параллельные фрагменты Использовать aria2c вместо стандартного загрузчика Используйте миниатюру в качестве обложки Уведомление, показывающее ход загрузки с помощью команды yt-dlp История пуста - Сообщать о новой версии приложения при его открытии + Сообщать о новой версии при открытии приложения Настроить загрузку - Загрузить, не отмечая в истории + Загрузки без добавления их в историю Качество видео Автор Загрузить @@ -100,8 +100,8 @@ Худшее качество Лучшее качество Ошибка обновления форматов! - Дать доступ ко всем каталогам - Разрешить приложению загружать контент в каталоги, которые по умолчанию ограничены + Дать доступ ко всем папкам + Разрешить приложению загружать файлы в папки, доступ к которым по умолчанию ограничен Загрузить заново В очереди Очистить отмененные @@ -133,16 +133,16 @@ Перезагрузить Загрузка отложена до: Размер файла - Удалить временные файлы + Удалить кэш Настройка видео Параллельные загрузки - Число одновременных загрузок + Количество одновременных загрузок По умолчанию - Сохранить в каталоге + Сохранить путь к папке Новый шаблон Настройка шаблонов Редактировать выбранное - Импортировать из буфера обмена + Импорт из буфера обмена Команда Дата добавления Помочь с переводом @@ -150,19 +150,19 @@ Логи Шаблоны команд Выбрать формат - Экспортировать в буфер обмена + Экспорт в буфер обмена Создать ярлык Импортированные элементы - Создать лог для каждого загружаемого файла + Создать лог для каждой загрузки Отменено Перевести приложение на другой язык через Weblate Включить mtime - Установить последнее время изменения как HTTP заголовок Last-Modified + Установить в заголовке HTTP Last-Modified время последнего изменения Ошибка при возобновлении загрузки - Вкладка по умолчанию, которую будет открывать карточка загрузки + Основная вкладка при открытии карточки загрузки Все выбранные элементы - Удалить файлы из отменённых/прерванных загрузок - Временные файлы удалены + Удалить кэш отменённых / прерванных загрузок + Кэш удален Загрузчик работает. Попробуйте позже Свободное место Скопированная ссылка @@ -171,17 +171,17 @@ Выбрать все Cookies Новый Cookie - Получить Cookie - Удалить все Cookie + Получить Cookies + Удалить все Cookies Сохранять логи загрузок Вырезать Новая вырезка Поделиться - Удалить все Cookie без возможности восстановления + Удалить все Cookies без возможности восстановления Ограничение имён файлов Ограничить имена файлов символами ASCII и избегать \"&\" и пробелов в именах Загрузка через сети с тарифным планом - Загрузка начнется при подключении к сети без тарификации + Загрузка начнется при подключении к безлимитной сети Завершить работу Останавливает все загрузки и закрывает приложение Больше не спрашивать @@ -192,35 +192,35 @@ Автоматически искать недостающие форматы при нажатии на карточку формата Игнорировать оптимизацию батареи Контейнер - Загрузка с использованием любой сети. В противном случае ожидание сети без тарифа + Загрузка с любого типа сети. В противном случае ожидать безлимитную сеть Инвертировать выбранное Используйте часто применяемые команды для создания шаблонов Восстановить SponsorBlock Не получать данные заранее - Сохранить кеш + Сохранить кэш Удалить аудио "Скачано: " Красный Источник форматов - Высокий контраст + Высокая контрастность Зеленый Завершенные загрузки Быстрая загрузка - Предпочтительный формат ID - Скачать сейчас + Предпочитаемый формат ID + Загрузить сейчас Продолжить - Получайте рекомендуемые видео YouTube на главном экране с помощью PIPED API + Получайте рекомендации YouTube на главном экране с помощью PIPED API Скопировано в буфер обмена Тема Темная Светлая Качество Системная - Обновление данных элемента загрузки + Обновление данных загружаемого контента Резервировать - Чистая черная / белая тема - Акцент + Тема AMOLED + Акценты Ошибка сети Выберите категории резервного копирования История поиска @@ -231,31 +231,31 @@ Сохранить субтитры Записать файл субтитров Языки субтитров - Используйте указанный HTTP/HTTPS/SOCKS прокси + Использовать указанный HTTP/HTTPS/SOCKS прокси Socks5 Прокси URL Поисковая система Поисковая система в приложении - Чтобы использовать эту опцию, все элементы должны быть одного типа + Для использования функции, все элементы должны быть одного типа Восстановление приложения завершено. Были восстановлены следующие объекты: Загрузка уже существует Пауза - Предпочтительный регион - Видеорекомендации + Предпочитаемый регион + Рекомендации видео Не удалось разобрать файл Не удалять временные файлы после завершения загрузки Файл резервной копии, сохраненный в папке загрузок - Материал + Material You Уведомление о завершенных или ошибочных загрузках Инкогнито - Предпочтительный главный экран + Предпочитаемый главный экран Отменить Формат ID - Кодек + Видеокодек Частота дискретизации аудио Желтый Монохромный Предложения по поиску - Получайте поисковые подсказки от Google + Получайте предложения от Google во время поиска Выберите формат с этим ID в карточке загрузки Обрежьте миниатюру в квадрат для загрузки аудио Этот элемент содержит только аудио форматы @@ -268,12 +268,12 @@ Перенесите кешированные файлы в папку загрузок Выбор качества аудио Piped сервер - Напишите сервер PIPED API, который приложение может использовать для запросов и форматов YouTube + Напишите сервер PIPED API, который будет использоваться для запросов и форматов YouTube Повторить попытку фрагмента Повторить попытку Порядок форматов - Вставить ключевые кадры - Более медленный процесс, но более точные разрезы + Использовать ключевые кадры при монтаже + Более медленный процесс, но более точный монтаж Добавьте свои дополнительные команды перед загрузкой аудио/видео Дополнительные команды Текущая команда @@ -288,14 +288,14 @@ Сохранить описание Запись файла описания Дополнительная команда - Использование файлов Cookie + Использование Cookies Вставьте метаданные в видеофайл. Также встраивает главы/infojson, если они есть Встроить метаданные Автообновление yt-dlp Обновлять форматы в фоновом режиме Использование SponsorBlock - Планирование + Планировщик Загрузить по расписанию Сначала кэшировать загрузки - Кэш-файлы загружаются во внутреннюю память, а затем переносятся в выбранную вами папку. Используется, когда нет возможности записывать файлы непосредственно в память + Кэш загружается во внутреннюю память и переносится в выбранную вами папку. Используйте при невозможности записывать файлы в память \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 9708ccf0..1fd281ce 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -143,7 +143,7 @@ 下载已重新添加到: 限制文件名 不再询问 - 结尾 + 结束 开始 音频采样率 蓝色 @@ -294,4 +294,8 @@ 在后台更新格式 自动更新 yt-dlp 使用 SponsorBlock + 定时任务 + 先将缓存文件下载到内部存储,然后移动到您选择的目录。当您无法直接写入存储时使用此选项 + 先缓存下载 + 按计划下载 \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 88f01753..91d4aacb 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -107,6 +107,7 @@ ar az bn + bn-IN bs de el @@ -118,6 +119,7 @@ in it ja + jv ko lv ms diff --git a/app/src/main/res/xml/locales_config.xml b/app/src/main/res/xml/locales_config.xml index b2867ef4..a8f4c0f4 100644 --- a/app/src/main/res/xml/locales_config.xml +++ b/app/src/main/res/xml/locales_config.xml @@ -4,6 +4,7 @@ + @@ -15,6 +16,7 @@ +