diff --git a/app/src/main/java/com/prodev/muslimq/presentation/MainActivity.kt b/app/src/main/java/com/prodev/muslimq/presentation/MainActivity.kt index 9ff37e6..6791825 100644 --- a/app/src/main/java/com/prodev/muslimq/presentation/MainActivity.kt +++ b/app/src/main/java/com/prodev/muslimq/presentation/MainActivity.kt @@ -20,11 +20,16 @@ import androidx.navigation.ui.setupWithNavController import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.snackbar.Snackbar import com.prodev.muslimq.R +import com.prodev.muslimq.core.data.preference.DataStorePreference import com.prodev.muslimq.core.utils.UITheme import com.prodev.muslimq.databinding.ActivityMainBinding import com.prodev.muslimq.presentation.viewmodel.DataStoreViewModel import com.prodev.muslimq.presentation.viewmodel.SplashViewModel import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.runBlocking +import java.util.Locale +import javax.inject.Inject @AndroidEntryPoint class MainActivity : AppCompatActivity() { @@ -43,6 +48,19 @@ class MainActivity : AppCompatActivity() { WindowInsetsControllerCompat(window, binding.root) } + override fun attachBaseContext(newBase: Context) { + val dataStorePref = com.prodev.muslimq.core.data.preference.DataStorePreference(newBase) + val language = runBlocking { dataStorePref.getAppLanguage.first() } + val locale = when (language) { + "in" -> Locale("in", "ID") + else -> Locale(language) + } + val config = newBase.resources.configuration + config.setLocale(locale) + val context = newBase.createConfigurationContext(config) + super.attachBaseContext(context) + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) installSplashScreen().setKeepOnScreenCondition { splashViewModel.isLoading.value } @@ -53,6 +71,8 @@ class MainActivity : AppCompatActivity() { setDarkMode() } + + private fun setNavController(navController: NavController) { val exceptFragment = setOf( R.id.quranFragment, diff --git a/app/src/main/java/com/prodev/muslimq/presentation/adapter/OthersAdapter.kt b/app/src/main/java/com/prodev/muslimq/presentation/adapter/OthersAdapter.kt index 8c04206..75b94dd 100644 --- a/app/src/main/java/com/prodev/muslimq/presentation/adapter/OthersAdapter.kt +++ b/app/src/main/java/com/prodev/muslimq/presentation/adapter/OthersAdapter.kt @@ -5,6 +5,7 @@ import android.view.View import android.view.ViewGroup import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView +import com.prodev.muslimq.R import com.prodev.muslimq.core.utils.UITheme import com.prodev.muslimq.databinding.ItemListOtherBinding import com.prodev.muslimq.presentation.view.others.Others @@ -49,7 +50,7 @@ class OthersAdapter : RecyclerView.Adapter() { ) : RecyclerView.ViewHolder(binding.root) { fun bind(others: Others) { with(binding) { - tvMenuOther.text = others.title + tvMenuOther.text = binding.root.context.getString(others.title) ivMenuOther.setImageResource(others.image) vDivider.isVisible = adapterPosition != listOthers.size - 1 @@ -57,7 +58,9 @@ class OthersAdapter : RecyclerView.Adapter() { swDarkMode.apply { // Set visibility of switch - swDarkMode.visibility = if (others.title.contains("Gelap")) { + swDarkMode.visibility = if (context.getString(others.title).contains(context.getString( + R.string.menu_dark_mode + ))) { View.VISIBLE } else { View.INVISIBLE diff --git a/app/src/main/java/com/prodev/muslimq/presentation/view/others/OthersFragment.kt b/app/src/main/java/com/prodev/muslimq/presentation/view/others/OthersFragment.kt index 56e6c74..b9a24e8 100644 --- a/app/src/main/java/com/prodev/muslimq/presentation/view/others/OthersFragment.kt +++ b/app/src/main/java/com/prodev/muslimq/presentation/view/others/OthersFragment.kt @@ -1,7 +1,10 @@ package com.prodev.muslimq.presentation.view.others import android.app.AlertDialog +import android.content.Intent import android.os.Bundle +import android.os.Handler +import android.os.Looper import android.view.View import androidx.core.view.isVisible import androidx.fragment.app.viewModels @@ -9,6 +12,7 @@ import androidx.lifecycle.lifecycleScope import androidx.navigation.NavDirections import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager +import kotlinx.coroutines.runBlocking import com.prodev.muslimq.R import com.prodev.muslimq.core.utils.UITheme import com.prodev.muslimq.databinding.DialogSettingNotificationBinding @@ -69,7 +73,7 @@ class OthersFragment : BaseFragment(FragmentOthersBinding } } - onClick = { navigateBasedOnTitle(it.title) } + onClick = { navigateBasedOnTitle(binding.root.context.getString(it.title)) } } } @@ -101,6 +105,10 @@ class OthersFragment : BaseFragment(FragmentOthersBinding } } + title.contains("Languages") || title.contains("Bahasa") || title.contains("ভাষাসমূহ") || title.contains("اللغات") -> { + showLanguageDialog() + } + title.contains("Info") -> { navigate(OthersFragmentDirections.actionOthersFragmentToAboutAppFragment()) } @@ -149,6 +157,37 @@ class OthersFragment : BaseFragment(FragmentOthersBinding ) } + private fun showLanguageDialog() { + val languages = arrayOf("English", "বাংলা", "العربية", "Bahasa Indonesia") + val languageCodes = arrayOf("en", "bn", "ar", "in") + val currentLang = runBlocking { dataStoreViewModel.getCurrentLanguage() } + var selectedIndex = languageCodes.indexOf(currentLang).takeIf { it >= 0 } ?: 0 + + curvedDialog.setTitle("Select Language") + curvedDialog.setSingleChoiceItems(languages, selectedIndex) { _, which -> + selectedIndex = which + } + curvedDialog.setPositiveButton("OK") { _, _ -> + val selectedLang = languageCodes[selectedIndex] + runBlocking { dataStoreViewModel.saveAppLanguage(selectedLang) } + (activity as MainActivity).customSnackbar( + state = true, + message = "Language changed. Restarting app...", + context = requireContext(), + view = binding.root + ) + // Restart app + Handler(Looper.getMainLooper()).postDelayed({ + val intent = Intent(requireActivity(), MainActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + requireActivity().finish() + startActivity(intent) + }, 1500) + } + curvedDialog.setNegativeButton("Cancel", null) + curvedDialog.show() + } + private fun showBottomSheet(muadzinRegular: String, muadzinShubuh: String) { val listMuadzinRegular = listOf( "Ali Ahmad Mullah", "Hafiz Mustafa Özcan", "Mishary Rashid Alafasy" diff --git a/app/src/main/java/com/prodev/muslimq/presentation/view/others/OthersObject.kt b/app/src/main/java/com/prodev/muslimq/presentation/view/others/OthersObject.kt index 9c8f099..2434fa0 100644 --- a/app/src/main/java/com/prodev/muslimq/presentation/view/others/OthersObject.kt +++ b/app/src/main/java/com/prodev/muslimq/presentation/view/others/OthersObject.kt @@ -11,17 +11,19 @@ object OthersObject { R.drawable.ic_tasbih, R.drawable.ic_notif_setting, R.drawable.ic_hearing, - R.drawable.ic_about + R.drawable.ic_about, + R.drawable.ic_settings ) private val menuTitle = listOf( - "Baca Nanti", - "Mode Gelap", - "Asmaul Husna", - "Tasbih Digital", - "Pengaturan Notifikasi", - "Pilih Muadzin", - "Info Aplikasi" + R.string.menu_read_later, + R.string.menu_dark_mode, + R.string.menu_asmaul_husna, + R.string.menu_digital_tasbih, + R.string.menu_notification_settings, + R.string.menu_choose_muezzin, + R.string.menu_app_info, + R.string.menu_languages, ) val listData: ArrayList @@ -38,6 +40,6 @@ object OthersObject { } data class Others( - var title: String = "", + var title: Int = 0, var image: Int = 0 ) \ No newline at end of file diff --git a/app/src/main/java/com/prodev/muslimq/presentation/viewmodel/DataStoreViewModel.kt b/app/src/main/java/com/prodev/muslimq/presentation/viewmodel/DataStoreViewModel.kt index 48cc371..8d00d4c 100644 --- a/app/src/main/java/com/prodev/muslimq/presentation/viewmodel/DataStoreViewModel.kt +++ b/app/src/main/java/com/prodev/muslimq/presentation/viewmodel/DataStoreViewModel.kt @@ -11,6 +11,7 @@ import com.prodev.muslimq.core.utils.UITheme import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch import javax.inject.Inject @@ -91,6 +92,16 @@ class DataStoreViewModel @Inject constructor( } } + suspend fun saveAppLanguage(language: String) { + dataStorePref.saveAppLanguage(language) + // Clear city and country when language changes to force re-selection + dataStorePref.saveCityAndCountryData("", "") + } + + suspend fun getCurrentLanguage(): String { + return dataStorePref.getAppLanguage.first() + } + private val getSurah = dataStorePref.getSurah private val getDetailSurahAyah = dataStorePref.getDetailSurahAyah @@ -123,6 +134,8 @@ class DataStoreViewModel @Inject constructor( val getMuadzin = dataStorePref.getMuadzin + val getAppLanguage = dataStorePref.getAppLanguage.asLiveData() + data class CombineLastRead( val detailSurah: Pair, val surah: Pair diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml new file mode 100644 index 0000000..ba35f49 --- /dev/null +++ b/app/src/main/res/values-ar/strings.xml @@ -0,0 +1,124 @@ + + + آخر قراءة + دعاء + الصلاة + أخرى + معلومات التطبيق + اتصال + القرآن + أخرى + يبدو أن هناك مشكلة، اسحب للأسفل لإعادة التحميل + بِسْمِ اللّٰهِ الرَّحْمٰنِ الرَّحِيْمِ + أيقونة الموقع + أيقونة المسجد + وقت الصلاة القادمة : + اختر المقاطعة + اختر مدينة في %s + الموقع غير موجود، ابحث عن موقع آخر + "لم يتم تحديد أي سورة" + الفجر + الظهر + العصر + المغرب + العشاء + صغير + متوسط + كبير + كبير جدًا + ابحث عن اتجاه القبلة + تم العثور على اتجاه القبلة + ش + ج + شـر + غ + ضبط حجم الآية + حفظ + الأدعية اليومية + منبه + اقرأ لاحقًا + لا توجد سور محفوظة + %1$s • %2$d آية + حذف الكل + هل أنت متأكد أنك تريد الحذف؟ + حذف + إلغاء + إذا اخترت الحذف، سيتم حذف بيانات السور المحفوظة مسبقًا. + موقعك + - + تشغيل + إيقاف + ابحث عن سورة + ابحث عن آية + %s/MuslimQ/%s.mp3 + سورة %s + ابحث عن الموقع + لم يتم تنزيل تلاوة سورة %s بعد، يتطلب هذا الاتصال بالإنترنت. هل تريد تنزيله الآن؟ + سيتم استخدام GPS لتحديد موقعك الحالي. + تحميل + موافق + تشغيل عبر الإنترنت + اختر يدويًا + MuslimQ - سورة %s + يتم تحميل تلاوة سورة %s + "الرجاء الانتظار حتى يكتمل التحميل…" + حول السورة + حذف التلاوة + وضع علامة + ca-app-pub-5351128060428013~4196500302 + ca-app-pub-5351128060428013/8076907702 + ca-app-pub-5351128060428013/9948941311 + لم يتم العثور على نتائج + إغلاق + وضع علامة & عودة + هل تريد وضع علامة على هذه الآية كآخر آية تمت قراءتها؟ + وضع علامة على آية؟ + عرض + أدخل رقم الآية + الإصدار %s + متابعة القراءة + حقوق النشر © 2023 + الترخيص + MIT License\n\nCopyright © 2023 Muslim Q\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + تم + معلومات + عرض القبلة > + مسبحة رقمية + الأذكار + اختر نوع الذكر + + + أدخل الذكر + أدخل الحد الأقصى للذكر + إعادة تعيين + الحد الأقصى للذكر + - + + الإشعارات فقط + إعدادات الإشعارات + لا يوجد أذكار مخصصة محفوظة + + عام + أذكار الصباح + أذكار المساء + أذكار بعد الصلاة + مخصص + + / %1$s + اختر المؤذن + الأذان العادي + أذان الفجر + >]]> + + مرحبا بالمكون الفارغ + أسماء الله الحسنى + اقرأ لاحقًا + الوضع الداكن + أسماء الله الحسنى + مسبحة رقمية + إعدادات الإشعارات + اختر المؤذن + معلومات التطبيق + اللغات + + حان وقت صلاة %1$s لمنطقة %2$s + diff --git a/app/src/main/res/values-bn-rBD/strings.xml b/app/src/main/res/values-bn-rBD/strings.xml new file mode 100644 index 0000000..d0adc8a --- /dev/null +++ b/app/src/main/res/values-bn-rBD/strings.xml @@ -0,0 +1,124 @@ + + সর্বশেষ পড়া + দোয়া + নামাজ + অন্যান্য + অ্যাপ সম্পর্কিত তথ্য + যোগাযোগ + কুরআন + অন্যান্য + মনে হচ্ছে ইন্টারনেটে সমস্যা হয়েছে, রিফ্রেশ করতে নিচে টানুন + بِسْمِ اللّٰهِ الرَّحْمٰنِ الرَّحِيْمِ + অবস্থান আইকন + মসজিদ আইকন + পরবর্তী নামাজের সময়: + প্রদেশ নির্বাচন করুন + %s-এ শহর নির্বাচন করুন + অবস্থান পাওয়া যায়নি, অন্য অবস্থান খুঁজুন + এখনও কোনো সূরা চিহ্নিত হয়নি + ফজর + জোহর + আসর + মাগরিব + এশা + ছোট + মাঝারি + বড় + খুব বড় + কিবলার দিক নির্ধারণ করুন + কিবলার দিক পাওয়া গেছে + উত্তর + দক্ষিণ + পূর্ব + পশ্চিম + আয়াতের ফন্ট সাইজ নির্ধারণ করুন + সংরক্ষণ + দৈনিক দোয়া + অ্যালার্ম + পরে পড়ুন + কোনো সূরা সংরক্ষণ করা হয়নি + %1$s • %2$d আয়াত + সব মুছে ফেলুন + আপনি কি নিশ্চিত মুছে ফেলতে চান? + মুছে ফেলুন + বাতিল + যদি মুছে ফেলেন, তাহলে পূর্বে সংরক্ষিত সূরার তথ্য মুছে যাবে। + আপনার অবস্থান + - + চালু + বন্ধ + সূরা খুঁজুন + আয়াত খুঁজুন + %s/MuslimQ/%s.mp3 + সূরা %s + অবস্থান খুঁজুন + সূরা %s এর অডিও এখনও ডাউনলোড হয়নি। এটি ডাউনলোড করতে ইন্টারনেট প্রয়োজন। আপনি কি এখনই ডাউনলোড করতে চান? + আপনার বর্তমান অবস্থান নির্ধারণ করতে GPS ব্যবহার করা হবে। + ডাউনলোড করুন + ঠিক আছে + অনলাইনে চালান + ম্যানুয়ালি নির্বাচন করুন + MuslimQ - সূরা %s + সূরা %s অডিও ডাউনলোড হচ্ছে + "অনুগ্রহ করে ডাউনলোড সম্পূর্ণ হওয়া পর্যন্ত অপেক্ষা করুন…" + সূরা সম্পর্কে + অডিও মুছে ফেলুন + চিহ্নিত করুন + ca-app-pub-5351128060428013~4196500302 + ca-app-pub-5351128060428013/8076907702 + ca-app-pub-5351128060428013/9948941311 + কোনো ফলাফল পাওয়া যায়নি + বন্ধ করুন + চিহ্নিত করুন ও ফিরে যান + আপনি কি এই আয়াতকে সর্বশেষ পড়া আয়াত হিসেবে চিহ্নিত করতে চান? + আয়াত চিহ্নিত করবেন? + দেখান + আয়াত নম্বর লিখুন + সংস্করণ %s + পড়া চালিয়ে যান + কপিরাইট © ২০২৩ + Lisensi + লাইসেন্স (MIT License টেক্সট একই রাখা হয়েছে) + সম্পন্ন + তথ্য + কিবলা দেখুন > + ডিজিটাল তসবিহ + যিকির + যিকিরের ধরন নির্বাচন করুন + + + যিকির লিখুন + সর্বোচ্চ যিকির সংখ্যা লিখুন + রিসেট + সর্বোচ্চ যিকির সংখ্যা + - + আজান ও নোটিফিকেশন + শুধু নোটিফিকেশন + নোটিফিকেশন সেটিংস + কোনো কাস্টম যিকির সংরক্ষণ করা হয়নি + + সাধারণ + সকালের যিকির + সন্ধ্যার যিকির + নামাজ পরবর্তী যিকির + কাস্টম + + / %1$s + মুয়াজ্জিন নির্বাচন করুন + সাধারণ আজান + ফজরের আজান + >]]> + + Hello blank fragment + আল্লাহর ৯৯ নাম (আসমাউল হুসনা) + পরে পড়ুন + ডার্ক মোড + আসমাউল হুসনা + ডিজিটাল তসবিহ + নোটিফিকেশন সেটিংস + মুয়াজ্জিন নির্বাচন করুন + অ্যাপ সম্পর্কিত তথ্য + ভাষাসমূহ + + এখন %1$s নামাজ আদায় করার সময়, এলাকা: %2$s + + diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml new file mode 100644 index 0000000..b7cd49f --- /dev/null +++ b/app/src/main/res/values-in-rID/strings.xml @@ -0,0 +1,124 @@ + + + Terakhir dibaca + Doa + Shalat + Lainnya + Info Aplikasi + Kontak + Quran + Lainnya + Sepertinya ada masalah, tarik ke bawah untuk memuat ulang + بِسْمِ اللّٰهِ الرَّحْمٰنِ الرَّحِيْمِ + ikon lokasi + ikon masjid + Waktu Shalat Berikutnya : + Pilih Provinsi + Pilih Kota di %s + Lokasi tidak ditemukan, cari lokasi lain + "Belum ada surah yang ditandai" + Shubuh + Dzuhur + Ashar + Maghrib + Isya + Kecil + Sedang + Besar + Sangat Besar + Temukan Arah Kiblat + Arah Kiblat Ditemukan + U + S + T + B + Atur Ukuran Ayat + Simpan + Doa Sehari-hari + alarm + Baca Nanti + Tidak ada surah yang disimpan + %1$s • %2$d ayat + Hapus Semua + Apakah Anda yakin ingin menghapus? + Hapus + Batal + Jika memilih hapus, maka data surah yang sudah Anda simpan sebelumnya akan terhapus. + Lokasi Anda + - + ON + OFF + Cari Surah + Cari Ayat + %s/MuslimQ/%s.mp3 + Surah %s + Cari Lokasi + Audio surah %s belum diunduh, audio ini membutuhkan koneksi internet untuk mengunduhnya. Apakah anda ingin mengunduhnya sekarang? + GPS akan digunakan untuk menentukan lokasi Anda saat ini. + Unduh + Oke + Putar Online + Pilih Manual + MuslimQ - Surah %s + Mengunduh Audio Surah %s + "Mohon tunggu selama proses unduh berlangsung…" + Tentang Surah + Hapus Audio + Tandai + ca-app-pub-5351128060428013~4196500302 + ca-app-pub-5351128060428013/8076907702 + ca-app-pub-5351128060428013/9948941311 + Pencarian tidak ditemukan + Tutup + Tandai & Kembali + Apakah Anda ingin menandai ayat ini sebagai ayat yang terakhir dibaca? + Tandai Ayat? + Tampilkan + Masukkan Nomor Ayat + Versi %s + Lanjut Baca + Hak Cipta © 2023 + Lisensi + MIT License\n\nCopyright © 2023 Muslim Q\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + Selesai + Info + Lihat Kiblat > + Tasbih Digital + Dzikir + Pilih Jenis Dzikir + + + Masukkan Dzikir + Masukkan Batas Maksimal Dzikir + Reset + Batas Maksimal Dzikir + - + + Hanya Notifikasi + Pengaturan Notifikasi + Tidak ada dzikir kustom yang disimpan + + Umum + Dzikir Pagi + Dzikir Sore + Dzikir Setelah Shalat + Kustomisasi + + / %1$s + Pilih Muadzin + Adzan Reguler + Adzan Shubuh + >]]> + + Hello blank fragment + Asmaul Husna + Baca Nanti + Mode Gelap + Asmaul Husna + Tasbih Digital + Pengaturan Notifikasi + Pilih Muadzin + Info Aplikasi + Bahasa + + Waktunya Menunaikan Shalat %1$s untuk wilayah %2$s + \ No newline at end of file diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index b2a9b97..d158e59 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -21,7 +21,7 @@ #3E3F41 #EAEAEA #171717 - #4D8B8B8B + #171717 #8F8F91 #809A9A9A #CA0000 diff --git a/app/src/main/res/values-night/style.xml b/app/src/main/res/values-night/style.xml new file mode 100644 index 0000000..74503ad --- /dev/null +++ b/app/src/main/res/values-night/style.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 628393f..ec8236c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,113 +1,126 @@ + - Terakhir dibaca - Doa - Shalat - Lainnya - Info Aplikasi - Kontak - Qur\'an - Lainnya - Sepertinya ada masalah, tarik ke bawah untuk memuat ulang + Last Read + Prayer + Prayer Schedule + Others + App Info + Contact + Quran + Others + It seems there is a problem, pull down to reload بِسْمِ اللّٰهِ الرَّحْمٰنِ الرَّحِيْمِ - ikon lokasi - ikon masjid - Waktu Shalat Berikutnya : - Pilih Provinsi - Pilih Kota di %s - Lokasi tidak ditemukan, cari lokasi lain - "Belum ada surah yang ditandai" - Shubuh - Dzuhur - Ashar + location icon + mosque icon + Next Prayer Time : + Choose Province + Choose City in %s + Location not found, search another location + "No surah marked yet" + Fajr + Dhuhr + Asr Maghrib - Isya - Kecil - Sedang - Besar - Sangat Besar - Temukan Arah Kiblat - Arah Kiblat Ditemukan - U + Isha + Small + Medium + Large + Very Large + Find Qibla Direction + Qibla Direction Found + N S - T - B - Atur Ukuran Ayat - Simpan - Doa Sehari-hari - alarm - Baca Nanti - Tidak ada surah yang disimpan - %1$s • %2$d ayat - Hapus Semua - Apakah Anda yakin ingin menghapus? - Hapus - Batal - Jika memilih hapus, maka data surah yang sudah Anda simpan sebelumnya akan terhapus. - Lokasi Anda + E + W + Set Verse Size + Save + Daily Prayers + Alarm + Read Later + No surah saved + %1$s • %2$d verses + Delete All + Are you sure you want to delete? + Delete + Cancel + If you choose delete, the surah data you previously saved will be removed. + Your Location - ON OFF - Cari Surah - Cari Ayat + Search Surah + Search Verse %s/MuslimQ/%s.mp3 Surah %s - Cari Lokasi - Audio surah %s belum diunduh, audio ini membutuhkan koneksi internet untuk mengunduhnya. Apakah anda ingin mengunduhnya sekarang? - GPS akan digunakan untuk menentukan lokasi Anda saat ini. - Unduh - Oke - Putar Online - Pilih Manual + Search Location + The audio of surah %s has not been downloaded yet, this requires an internet connection. Do you want to download it now? + GPS will be used to determine your current location. + Download + OK + Play Online + Choose Manually MuslimQ - Surah %s - Mengunduh Audio Surah %s - "Mohon tunggu selama proses unduh berlangsung…" - Tentang Surah - Hapus Audio - Tandai + Downloading Surah %s Audio + "Please wait while the download is in progress…" + About Surah + Delete Audio + Mark ca-app-pub-5351128060428013~4196500302 ca-app-pub-5351128060428013/8076907702 ca-app-pub-5351128060428013/9948941311 - Pencarian tidak ditemukan - Tutup - Tandai & Kembali - Apakah Anda ingin menandai ayat ini sebagai ayat yang terakhir dibaca? - Tandai Ayat? - Tampilkan - Masukkan Nomor Ayat - Versi %s - Lanjut Baca - Hak Cipta © 2023 - Lisensi + No search results found + Close + Mark & Back + Do you want to mark this verse as the last read verse? + Mark Verse? + Show + Enter Verse Number + Version %s + Continue Reading + Copyright © 2023 + License MIT License\n\nCopyright © 2023 Muslim Q\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - Selesai + Done Info - Lihat Kiblat > - Tasbih Digital - Dzikir - Pilih Jenis Dzikir + See Qibla > + Digital Tasbih + Dhikr + Choose Dhikr Type + - Masukkan Dzikir - Masukkan Batas Maksimal Dzikir + Enter Dhikr + Enter Maximum Dhikr Count Reset - Batas Maksimal Dzikir + Maximum Dhikr Count - - - Hanya Notifikasi - Pengaturan Notifikasi - Tidak ada dzikir kustom yang disimpan + + Notifications Only + Notification Settings + No custom dhikr saved - Umum - Dzikir Pagi - Dzikir Sore - Dzikir Setelah Shalat - Kustomisasi + General + Morning Dhikr + Evening Dhikr + Dhikr After Prayer + Custom / %1$s - Pilih Muadzin - Adzan Reguler - Adzan Shubuh - >]]> + Choose Muezzin + Regular Adhan + Fajr Adhan + >]]> Hello blank fragment Asmaul Husna - \ No newline at end of file + Read Later + Dark Mode + Asmaul Husna + Digital Tasbih + Notification Settings + Choose Muezzin + App Info + Languages + + + It is time to perform %1$s prayer for the region %2$s + + diff --git a/app/src/main/res/values/style.xml b/app/src/main/res/values/style.xml index d7c498e..a90400d 100644 --- a/app/src/main/res/values/style.xml +++ b/app/src/main/res/values/style.xml @@ -42,7 +42,7 @@ @color/black -