2020-09-11 12:54:25 +02:00
|
|
|
package com.darkweb.genesissearchengine.pluginManager;
|
|
|
|
|
|
|
|
import android.app.Activity;
|
|
|
|
import android.content.res.Configuration;
|
2021-01-28 11:22:41 +01:00
|
|
|
import android.content.res.Resources;
|
2020-09-11 12:54:25 +02:00
|
|
|
import androidx.appcompat.app.AppCompatActivity;
|
2021-01-28 11:22:41 +01:00
|
|
|
import com.darkweb.genesissearchengine.constants.status;
|
2020-09-11 12:54:25 +02:00
|
|
|
import com.darkweb.genesissearchengine.helperManager.eventObserver;
|
2021-01-28 11:22:41 +01:00
|
|
|
import java.util.List;
|
2020-09-11 12:54:25 +02:00
|
|
|
import java.util.Locale;
|
|
|
|
|
2021-01-28 11:22:41 +01:00
|
|
|
class langManager {
|
|
|
|
|
2020-09-11 12:54:25 +02:00
|
|
|
/*Private Variables*/
|
|
|
|
|
|
|
|
private AppCompatActivity mAppContext;
|
|
|
|
private eventObserver.eventListener mEvent;
|
2021-01-28 11:22:41 +01:00
|
|
|
private Locale mLanguage;
|
2020-09-11 12:54:25 +02:00
|
|
|
|
|
|
|
/*Initializations*/
|
|
|
|
|
2021-01-28 11:22:41 +01:00
|
|
|
langManager(AppCompatActivity pAppContext, eventObserver.eventListener pEvent, Locale pLanguage) {
|
|
|
|
this.mAppContext = pAppContext;
|
|
|
|
this.mEvent = pEvent;
|
|
|
|
this.mLanguage = pLanguage;
|
2020-09-11 12:54:25 +02:00
|
|
|
|
2021-01-28 11:22:41 +01:00
|
|
|
onInitLanguage(pAppContext);
|
2020-09-11 12:54:25 +02:00
|
|
|
}
|
|
|
|
|
2021-01-28 11:22:41 +01:00
|
|
|
private void onInitLanguage(AppCompatActivity pAppContext) {
|
|
|
|
if(status.sSettingLanguage.equals("default")){
|
|
|
|
if(mLanguage==null || !mLanguage.getLanguage().equals(Resources.getSystem().getConfiguration().locale.getLanguage()) || !mLanguage.getCountry().equals(Resources.getSystem().getConfiguration().locale.getCountry()))
|
|
|
|
{
|
|
|
|
Locale mSystemLocale = Resources.getSystem().getConfiguration().locale;
|
|
|
|
String mSystemLangugage = mSystemLocale.toString();
|
2021-02-07 18:40:35 +01:00
|
|
|
if(mSystemLangugage.equals("en_US") || mSystemLangugage.equals("de_DE") || mSystemLangugage.equals("ur_UR") || mSystemLangugage.equals("ca_ES") || mSystemLangugage.equals("zh_CN") || mSystemLangugage.equals("ch_CZ") || mSystemLangugage.equals("nl_NL") || mSystemLangugage.equals("fr_FR") || mSystemLangugage.equals("el_GR") || mSystemLangugage.equals("hu_HU") || mSystemLangugage.equals("in_ID") || mSystemLangugage.equals("it_IT") || mSystemLangugage.equals("ja_JP") || mSystemLangugage.equals("ko_KR") || mSystemLangugage.equals("pt_PT") || mSystemLangugage.equals("ro_RO") || mSystemLangugage.equals("ru_RU") || mSystemLangugage.equals("th_TH") || mSystemLangugage.equals("tr_TR") || mSystemLangugage.equals("uk_UA") || mSystemLangugage.equals("vi_VN")){
|
2021-01-28 11:22:41 +01:00
|
|
|
mLanguage = new Locale(mSystemLocale.getLanguage(), mSystemLocale.getCountry());
|
|
|
|
}else {
|
|
|
|
mLanguage = new Locale("en", "Us");
|
|
|
|
}
|
|
|
|
}else {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}else {
|
|
|
|
mLanguage = new Locale(status.sSettingLanguage, status.sSettingLanguageRegion);
|
|
|
|
}
|
|
|
|
|
|
|
|
Locale.setDefault(mLanguage);
|
|
|
|
Resources resources = pAppContext.getResources();
|
|
|
|
Configuration config = resources.getConfiguration();
|
|
|
|
config.setLocale(mLanguage);
|
|
|
|
resources.updateConfiguration(config, resources.getDisplayMetrics());
|
2020-09-11 12:54:25 +02:00
|
|
|
}
|
|
|
|
|
2021-01-28 11:22:41 +01:00
|
|
|
/*Helper Methods*/
|
|
|
|
|
|
|
|
private void onCreate(AppCompatActivity pActivity) {
|
|
|
|
onInitLanguage(pActivity);
|
2020-09-11 12:54:25 +02:00
|
|
|
}
|
|
|
|
|
2021-01-28 11:22:41 +01:00
|
|
|
private void onResume(AppCompatActivity pActivity) {
|
|
|
|
onInitLanguage(pActivity);
|
|
|
|
}
|
2020-09-11 12:54:25 +02:00
|
|
|
|
2021-01-28 11:22:41 +01:00
|
|
|
private String getSupportedSystemLanguageInfo() {
|
|
|
|
if(status.sSettingLanguage.equals("default")){
|
|
|
|
Locale mSystemLocale = Resources.getSystem().getConfiguration().locale;
|
|
|
|
String mSystemLangugage = mSystemLocale.toString();
|
|
|
|
if(mSystemLangugage.equals("en_US") || mSystemLangugage.equals("de_DE") || mSystemLangugage.equals("ca_ES") || mSystemLangugage.equals("zh_CN") || mSystemLangugage.equals("ch_CZ") || mSystemLangugage.equals("nl_NL") || mSystemLangugage.equals("fr_FR") || mSystemLangugage.equals("el_GR") || mSystemLangugage.equals("hu_HU") || mSystemLangugage.equals("in_ID") || mSystemLangugage.equals("it_IT") || mSystemLangugage.equals("ja_JP") || mSystemLangugage.equals("ko_KR") || mSystemLangugage.equals("pt_PT") || mSystemLangugage.equals("ro_RO") || mSystemLangugage.equals("ru_RU") || mSystemLangugage.equals("th_TH") || mSystemLangugage.equals("tr_TR") || mSystemLangugage.equals("uk_UA") || mSystemLangugage.equals("vi_VN")){
|
|
|
|
return "Default | " + mSystemLocale.getDisplayName();
|
|
|
|
}else {
|
|
|
|
return mSystemLocale.getDisplayName() + " | is unsupported";
|
|
|
|
}
|
|
|
|
}else {
|
|
|
|
return mLanguage.getDisplayName();
|
|
|
|
}
|
2020-09-11 12:54:25 +02:00
|
|
|
}
|
|
|
|
|
2021-01-28 11:22:41 +01:00
|
|
|
/*External Triggers*/
|
|
|
|
|
|
|
|
Object onTrigger(List<Object> pData, pluginEnums.eLangManager pEventType) {
|
|
|
|
if(pEventType.equals(pluginEnums.eLangManager.M_ACTIVITY_CREATED))
|
|
|
|
{
|
|
|
|
onCreate((AppCompatActivity) pData.get(0));
|
|
|
|
}
|
|
|
|
else if(pEventType.equals(pluginEnums.eLangManager.M_RESUME))
|
|
|
|
{
|
|
|
|
onResume((AppCompatActivity) pData.get(0));
|
|
|
|
}
|
|
|
|
else if(pEventType.equals(pluginEnums.eLangManager.M_SET_LANGUAGE))
|
|
|
|
{
|
|
|
|
onInitLanguage((AppCompatActivity) pData.get(0));
|
|
|
|
}
|
|
|
|
else if(pEventType.equals(pluginEnums.eLangManager.M_SUPPORTED_SYSTEM_LANGUAGE_INFO))
|
|
|
|
{
|
|
|
|
return getSupportedSystemLanguageInfo();
|
|
|
|
}
|
|
|
|
return null;
|
2020-09-11 12:54:25 +02:00
|
|
|
}
|
|
|
|
|
2021-01-28 11:22:41 +01:00
|
|
|
}
|