Skip to content
Snippets Groups Projects
Commit 0373d71a authored by Nicolas Pomepuy's avatar Nicolas Pomepuy Committed by Duncan McNamara
Browse files

Migrate subtitles languages

parent 3ead1656
No related branches found
No related tags found
1 merge request!2017use new OpenSubtitles API
......@@ -165,6 +165,142 @@
<item>ze</item>
</string-array>
<string-array name="old_language_entries">
<item>Albanian</item>
<item>Arabic</item>
<item>Armenian</item>
<item>Basque</item>
<item>Bengali</item>
<item>Bosnian</item>
<item>Breton</item>
<item>Bulgarian</item>
<item>Burmese</item>
<item>Catalan</item>
<item>Chinese (simplified)</item>
<item>Croatian</item>
<item>Czech</item>
<item>Danish</item>
<item>Dutch</item>
<item>English</item>
<item>Esperanto</item>
<item>Estonian</item>
<item>Finnish</item>
<item>French</item>
<item>Galician</item>
<item>Georgian</item>
<item>German</item>
<item>Greek</item>
<item>Hebrew</item>
<item>Hindi</item>
<item>Hungarian</item>
<item>Icelandic</item>
<item>Indonesian</item>
<item>Italian</item>
<item>Japanese</item>
<item>Kazakh</item>
<item>Khmer</item>
<item>Korean</item>
<item>Latvian</item>
<item>Lithuanian</item>
<item>Luxembourgish</item>
<item>Macedonian</item>
<item>Malay</item>
<item>Malayalam</item>
<item>Mongolian</item>
<item>Norwegian</item>
<item>Occitan</item>
<item>Persian</item>
<item>Polish</item>
<item>Portuguese</item>
<item>Brazilian Portuguese</item>
<item>Romanian</item>
<item>Russian</item>
<item>Serbian</item>
<item>Sinhalese</item>
<item>Slovak</item>
<item>Slovenian</item>
<item>Spanish</item>
<item>Swahili</item>
<item>Swedish</item>
<item>Syriac</item>
<item>Tagalog</item>
<item>Tamil</item>
<item>Telugu</item>
<item>Thai</item>
<item>Turkish</item>
<item>Ukrainian</item>
<item>Urdu</item>
<item>Vietnamese</item>
</string-array>
<string-array name="old_language_values">
<item>alb</item>
<item>ara</item>
<item>arm</item>
<item>baq</item>
<item>ben</item>
<item>bos</item>
<item>bre</item>
<item>bul</item>
<item>bur</item>
<item>cat</item>
<item>chi</item>
<item>hrv</item>
<item>cze</item>
<item>dan</item>
<item>dut</item>
<item>eng</item>
<item>epo</item>
<item>est</item>
<item>fin</item>
<item>fre</item>
<item>glg</item>
<item>geo</item>
<item>ger</item>
<item>ell</item>
<item>heb</item>
<item>hin</item>
<item>hun</item>
<item>ice</item>
<item>ind</item>
<item>ita</item>
<item>jpn</item>
<item>kaz</item>
<item>khm</item>
<item>kor</item>
<item>lav</item>
<item>lit</item>
<item>ltz</item>
<item>mac</item>
<item>may</item>
<item>mal</item>
<item>mon</item>
<item>nor</item>
<item>oci</item>
<item>per</item>
<item>pol</item>
<item>por</item>
<item>pob</item>
<item>rum</item>
<item>rus</item>
<item>scc</item>
<item>sin</item>
<item>slo</item>
<item>slv</item>
<item>spa</item>
<item>swa</item>
<item>swe</item>
<item>syr</item>
<item>tgl</item>
<item>tam</item>
<item>tel</item>
<item>tha</item>
<item>tur</item>
<item>ukr</item>
<item>urd</item>
<item>vie</item>
</string-array>
<string-array name="subtitles_size_entries">
<item>@string/subtitles_size_small</item>
<item>@string/subtitles_size_normal</item>
......
......@@ -8,7 +8,10 @@ import java.util.*
import kotlin.collections.ArrayList
object LocaleUtils {
fun getLocalesUsedInProject(projectLocales: Array<String>, defaultLocaleText: String): LocalePair {
fun getLocalesUsedInProject(
projectLocales: Array<String>,
defaultLocaleText: String
): LocalePair {
val localesEntry = arrayOfNulls<String>(projectLocales.size)
for (i in projectLocales.indices) {
......@@ -22,7 +25,8 @@ object LocaleUtils {
if (displayCountry.isEmpty()) {
localesEntry[i] = displayLanguage.firstLetterUppercase()
} else {
localesEntry[i] = "${displayLanguage.firstLetterUppercase()} - ${displayCountry.firstLetterUppercase()}"
localesEntry[i] =
"${displayLanguage.firstLetterUppercase()} - ${displayCountry.firstLetterUppercase()}"
}
}
......@@ -32,7 +36,8 @@ object LocaleUtils {
localeTreeMap[localesEntry[i]!!] = projectLocales[i]
}
val finalLocaleEntries = ArrayList<String>(localeTreeMap.size + 1).apply { add(0, defaultLocaleText) }
val finalLocaleEntries =
ArrayList<String>(localeTreeMap.size + 1).apply { add(0, defaultLocaleText) }
val finalLocaleEntryValues = ArrayList<String>(localeTreeMap.size + 1).apply { add(0, "") }
var i = 1
......@@ -61,7 +66,8 @@ object LocaleUtils {
for (separator in separators) {
//see if there is a language and a country
if (string.contains(separator)) {
val splittedLocale = string.split(separator.toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
val splittedLocale =
string.split(separator.toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
if (splittedLocale.size == 2) {
return Locale(splittedLocale[0], splittedLocale[1])
}
......
......@@ -21,6 +21,7 @@ import org.videolan.resources.opensubtitles.OpenSubtitleRepository
import org.videolan.resources.util.NoConnectivityException
import org.videolan.tools.CoroutineContextProvider
import org.videolan.tools.FileUtils
import org.videolan.tools.LocaleUtils
import org.videolan.tools.Settings
import org.videolan.tools.putSingle
import org.videolan.vlc.BuildConfig
......@@ -47,6 +48,22 @@ class SubtitlesModel(private val context: Context, private val mediaUri: Uri, pr
val observableMessage = ObservableField<String>()
val observableError = ObservableField<Boolean>()
val observableResultDescription = ObservableField<Spanned>()
val oldLanguagesMigration by lazy {
val newLangCodes = context.resources.getStringArray(R.array.language_values)
val oldLangCodes = context.resources.getStringArray(R.array.old_language_values)
val newLangEntries = context.resources.getStringArray(R.array.language_entries)
val oldLangEntries = context.resources.getStringArray(R.array.old_language_entries)
val mapping = HashMap<String, String>()
for (i in oldLangCodes.indices) {
for (j in newLangCodes.indices) {
if (newLangEntries[j] == oldLangEntries[i]) {
mapping[oldLangCodes[i]] = newLangCodes[j]
break
}
}
}
mapping
}
private val apiResultLiveData: MutableLiveData<List<Data>> = MutableLiveData()
private val downloadedLiveData = ExternalSubRepository.getInstance(context).getDownloadedSubtitles(mediaUri).map { list ->
......@@ -197,11 +214,15 @@ class SubtitlesModel(private val context: Context, private val mediaUri: Uri, pr
fun getLastUsedLanguage(): List<String> {
val language = try {
Locale.getDefault().isO3Language
Locale.getDefault().language
} catch (e: MissingResourceException) {
"eng"
"en"
}
return Settings.getInstance(context).getStringSet(LAST_USED_LANGUAGES, setOf(language))?.map { it.getCompliantLanguageID() } ?: emptyList()
return Settings.getInstance(context).getStringSet(LAST_USED_LANGUAGES, setOf(language))?.map { if (it.length > 2) migrateFromOld(it) ?: it else it } ?: emptyList()
}
private fun migrateFromOld(it: String?): String? {
return oldLanguagesMigration[it]
}
fun saveLastUsedLanguage(lastUsedLanguages: List<String>) = Settings.getInstance(context).putSingle(LAST_USED_LANGUAGES, lastUsedLanguages)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment