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;
|
2021-04-11 21:25:15 +02:00
|
|
|
import android.os.Build;
|
|
|
|
|
2020-09-11 12:54:25 +02:00
|
|
|
import androidx.appcompat.app.AppCompatActivity;
|
2021-04-11 21:25:15 +02:00
|
|
|
|
|
|
|
import com.darkweb.genesissearchengine.appManager.activityContextManager;
|
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-04-11 21:25:15 +02:00
|
|
|
import java.util.Objects;
|
|
|
|
|
|
|
|
import static com.darkweb.genesissearchengine.constants.status.mSystemLocale;
|
2020-09-11 12:54:25 +02:00
|
|
|
|
2021-01-28 11:22:41 +01:00
|
|
|
class langManager {
|
|
|
|
|
2020-09-11 12:54:25 +02:00
|
|
|
/*Private Variables*/
|
|
|
|
|
|
|
|
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.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-04-11 21:25:15 +02:00
|
|
|
private boolean initLocale(){
|
|
|
|
if(!status.mThemeApplying){
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
|
|
|
Locale mSystemLocale = Resources.getSystem().getConfiguration().getLocales().get(0);
|
|
|
|
if(mSystemLocale!=status.mSystemLocale || !mSystemLocale.getLanguage().equals(mLanguage.getLanguage()) ){
|
|
|
|
status.mSystemLocale = mSystemLocale;
|
|
|
|
/*if(activityContextManager.getInstance().getHomeController()!=null && status.sSettingLanguage.equals("default")){
|
|
|
|
return true;
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
Locale mSystemLocale = Resources.getSystem().getConfiguration().locale;
|
|
|
|
if(mSystemLocale!=status.mSystemLocale || !mSystemLocale.getLanguage().equals(mLanguage.getLanguage())){
|
|
|
|
status.mSystemLocale = mSystemLocale;
|
|
|
|
activityContextManager.getInstance().getCurrentActivity().recreate();
|
|
|
|
/*if(activityContextManager.getInstance().getHomeController()!=null && status.sSettingLanguage.equals("default")){
|
|
|
|
return true;
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2021-01-28 11:22:41 +01:00
|
|
|
private void onInitLanguage(AppCompatActivity pAppContext) {
|
|
|
|
if(status.sSettingLanguage.equals("default")){
|
2021-04-11 21:25:15 +02:00
|
|
|
if(!mLanguage.getLanguage().equals(Resources.getSystem().getConfiguration().locale.getLanguage()) || !mLanguage.getCountry().equals(Resources.getSystem().getConfiguration().locale.getCountry()))
|
2021-01-28 11:22:41 +01:00
|
|
|
{
|
2021-04-11 21:25:15 +02:00
|
|
|
if(mSystemLocale==null){
|
|
|
|
initLocale();
|
|
|
|
}
|
2021-01-28 11:22:41 +01:00
|
|
|
String mSystemLangugage = mSystemLocale.toString();
|
2021-04-11 21:25:15 +02:00
|
|
|
if(mSystemLangugage.equals("en_US") || mSystemLangugage.equals("de_DE") || mSystemLangugage.equals("ur_UR") || mSystemLangugage.equals("ur_PK") || 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")){
|
|
|
|
if(mSystemLangugage.equals("ur_PK")){
|
|
|
|
mLanguage = new Locale("ur", "Ur");
|
|
|
|
} else if(mSystemLangugage.equals("vi_VN")){
|
|
|
|
mLanguage = new Locale("ch", "Cz");
|
|
|
|
} else {
|
|
|
|
mLanguage = new Locale(mSystemLocale.getLanguage(), mSystemLocale.getCountry());
|
|
|
|
}
|
2021-01-28 11:22:41 +01:00
|
|
|
}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();
|
2021-04-11 21:25:15 +02:00
|
|
|
|
|
|
|
if(mSystemLangugage.equals("cs_CZ") || mSystemLangugage.equals("ur_PK") || 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")){
|
2021-01-28 11:22:41 +01:00
|
|
|
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))
|
|
|
|
{
|
2021-04-11 21:25:15 +02:00
|
|
|
boolean mStatus = initLocale();
|
2021-01-28 11:22:41 +01:00
|
|
|
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
|
|
|
}
|