Skip to content
This repository was archived by the owner on Mar 24, 2023. It is now read-only.

Commit a70fe8b

Browse files
Added language switch
Signed-off-by: sunilpaulmathew <sunil.kde@gmail.com>
1 parent d1297d3 commit a70fe8b

6 files changed

Lines changed: 91 additions & 3 deletions

File tree

app/src/main/java/com/smartpack/kernelprofiler/MainActivity.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
6363
Utils.initializeAppTheme(this);
6464
Utils.initializeGoogleAds(this);
6565
super.onCreate(savedInstanceState);
66+
// Set App Language
67+
Utils.setLanguage(this);
6668
setContentView(R.layout.activity_main);
6769

6870
mForegroundCard = findViewById(R.id.foreground_card);
@@ -168,6 +170,15 @@ private void settingsMenu() {
168170
if (KP.supported()) {
169171
tools.add(Menu.NONE, 6, Menu.NONE, getString(R.string.edit_config));
170172
}
173+
SubMenu language = menu.addSubMenu(Menu.NONE, 0, Menu.NONE, getString(R.string.language, Utils.getLanguage(this)));
174+
language.add(Menu.NONE, 16, Menu.NONE, getString(R.string.language_default)).setCheckable(true)
175+
.setChecked(Utils.languageDefault(this));
176+
language.add(Menu.NONE, 17, Menu.NONE, getString(R.string.language_en)).setCheckable(true)
177+
.setChecked(Prefs.getBoolean("use_en", false, this));
178+
language.add(Menu.NONE, 18, Menu.NONE, getString(R.string.language_pt)).setCheckable(true)
179+
.setChecked(Prefs.getBoolean("use_pt", false, this));
180+
language.add(Menu.NONE, 19, Menu.NONE, getString(R.string.language_el)).setCheckable(true)
181+
.setChecked(Prefs.getBoolean("use_el", false, this));
171182
SubMenu app = menu.addSubMenu(Menu.NONE, 0, Menu.NONE, getString(R.string.app_about));
172183
app.add(Menu.NONE, 7, Menu.NONE, getString(R.string.share));
173184
app.add(Menu.NONE, 8, Menu.NONE, getString(R.string.support));
@@ -251,6 +262,33 @@ private void settingsMenu() {
251262
case 15:
252263
aboutDialogue(this);
253264
break;
265+
case 16:
266+
if (!Utils.languageDefault(this)) {
267+
Utils.setDefaultLanguage(this);
268+
restartApp();
269+
}
270+
break;
271+
case 17:
272+
if (!Prefs.getBoolean("use_en", false, this)) {
273+
Utils.setDefaultLanguage(this);
274+
Prefs.saveBoolean("use_en", true, this);
275+
restartApp();
276+
}
277+
break;
278+
case 18:
279+
if (!Prefs.getBoolean("use_pt", false, this)) {
280+
Utils.setDefaultLanguage(this);
281+
Prefs.saveBoolean("use_pt", true, this);
282+
restartApp();
283+
}
284+
break;
285+
case 19:
286+
if (!Prefs.getBoolean("use_el", false, this)) {
287+
Utils.setDefaultLanguage(this);
288+
Prefs.saveBoolean("use_el", true, this);
289+
restartApp();
290+
}
291+
break;
254292
}
255293
return false;
256294
});

app/src/main/java/com/smartpack/kernelprofiler/utils/Utils.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
import android.content.Intent;
77
import android.content.pm.PackageManager;
88
import android.content.res.Configuration;
9+
import android.content.res.Resources;
910
import android.graphics.drawable.Drawable;
1011
import android.net.ConnectivityManager;
1112
import android.net.Uri;
1213
import android.os.Build;
14+
import android.util.DisplayMetrics;
1315
import android.view.View;
1416

1517
import androidx.appcompat.app.AppCompatDelegate;
@@ -29,6 +31,7 @@
2931
import java.io.IOException;
3032
import java.io.InputStream;
3133
import java.io.InputStreamReader;
34+
import java.util.Locale;
3235
import java.util.Objects;
3336

3437
/**
@@ -221,4 +224,37 @@ static String getExtension(String string) {
221224
return android.webkit.MimeTypeMap.getFileExtensionFromUrl(string);
222225
}
223226

227+
public static void setDefaultLanguage(Context context) {
228+
Prefs.saveBoolean("use_en", false, context);
229+
Prefs.saveBoolean("use_el", false, context);
230+
Prefs.saveBoolean("use_pt", false, context);
231+
}
232+
233+
public static boolean languageDefault(Context context) {
234+
return !Prefs.getBoolean("use_en", false, context)
235+
&& !Prefs.getBoolean("use_el", false, context)
236+
&& !Prefs.getBoolean("use_pt", false, context);
237+
}
238+
239+
public static String getLanguage(Context context) {
240+
if (Prefs.getBoolean("use_en", false, context)) {
241+
return "en_US";
242+
} else if (Prefs.getBoolean("use_el", false, context)) {
243+
return "el";
244+
} else if (Prefs.getBoolean("use_pt", false, context)) {
245+
return "pt";
246+
} else {
247+
return java.util.Locale.getDefault().getLanguage();
248+
}
249+
}
250+
251+
public static void setLanguage(Context context) {
252+
Locale myLocale = new Locale(getLanguage(context));
253+
Resources res = context.getResources();
254+
DisplayMetrics dm = res.getDisplayMetrics();
255+
Configuration conf = res.getConfiguration();
256+
conf.locale = myLocale;
257+
res.updateConfiguration(conf, dm);
258+
}
259+
224260
}

app/src/main/res/layout/activity_main.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<LinearLayout
99
android:layout_width="match_parent"
10-
android:layout_height="100dp"
10+
android:layout_height="115dp"
1111
android:background="@color/black"
1212
android:orientation="horizontal">
1313

@@ -114,7 +114,7 @@
114114
<androidx.viewpager.widget.ViewPager
115115
android:layout_width="match_parent"
116116
android:layout_height="match_parent"
117-
android:layout_marginTop="100dp"
117+
android:layout_marginTop="115dp"
118118
android:layout_marginBottom="50dp"
119119
android:id="@+id/viewPagerID" />
120120
</RelativeLayout>

app/src/main/res/values-el/strings.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@
3434
<string name="kernel_about">Σχετικά με το Kernel</string>
3535
<string name="kernel_support">Πώς να προσθέσετε υποστήριξη στο kernel</string>
3636
<string name="kernel_support_summary">Το Kernel Profiler προϋποθέτει ένα αρχείο διαχείρισης ρυθμίσεων (<b><i>kernelprofiler.json</i></b>) κι ένα ή περισσότερα \'<b><i>προφίλ</i></b>\' (βασικά σενάρια shell) σε μια συγκεκριμένη ειδική δομή τοποθετημένα μέσα στο <b>\'<i>/data/kernel_profiler</i>\'</b>. Παρακαλώ ελέγξτε \'<b>Ρυθμίσεις -> Εργαλεία Προγραμματιστή</b>\' για περισσότερες πληροφορίες.</string>
37+
<string name="language">Γλώσσα (%s)</string>
38+
<string name="language_el">Ελληνικά</string>
39+
<string name="language_en">Αγγλικά</string>
40+
<string name="language_default">Προεπιλογή</string>
41+
<string name="language_pt">Πορτογαλικά</string>
3742
<string name="more">Περισσότερα</string>
3843
<string name="more_apps">Περισσότερα από τον Προγραμματιστή</string>
3944
<string name="name_empty">Το όνομα του Προφίλ δεν πρέπει να είναι κενό! Διακοπή.</string>

app/src/main/res/values-pt-rBR/strings.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525
<string name="kernel_about">Sobre o Kernel</string>
2626
<string name="kernel_support">Como adicionar suporte ao kernel</string>
2727
<string name="kernel_support_summary">O Kernel Profiler espera um arquivo de configuração (<b><i>kernelprofiler.json</i></b>) e um ou mais \'<b><i>perfis</i></b>\' (basicamente scripts shell) em uma determinada estrutura específica colocada em <b>\'<i>/data/kernel_profiler</i>\'</b>. Por favor, dê uma olhada em \'<b>Configurações -> Ferramentas do Desenvolvedor</b>\' para mais informações.</string>
28+
<string name="language">Idioma (%s)</string>
29+
<string name="language_el">Grego</string>
30+
<string name="language_en">Inglês</string>
31+
<string name="language_default">Padrão</string>
2832
<string name="more">Mais</string>
2933
<string name="more_apps">Mais do desenvolvedor</string>
3034
<string name="name_empty">O nome do perfil não deve estar vazio! Abortando.</string>

app/src/main/res/values/strings.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<string name="create_profile">Create a Profile</string>
1414
<string name="create_profile_message">\'%s\' is created at</string>
1515
<string name="credits">Credits</string>
16-
<string name="credits_summary"><b><i>Grarak</i></b>: KernelAdiutor (Code base)\n<b><i>topjohnwu</i></b>: libsu\n<b><i>Lennoard Silva</i></b>: Code Contributions, App Icon, &amp; Portuguese (Brazilian) Translation</string>
16+
<string name="credits_summary"><b><i>Grarak</i></b>: KernelAdiutor (Code base)\n<b><i>topjohnwu</i></b>: libsu\n<b><i>Lennoard Silva</i></b>: Code Contributions, App Icon, &amp; Portuguese (Brazilian) Translation\n<b><i>tsiflimagas</i></b>: Greek translations</string>
1717
<string name="dark_theme">Dark Theme</string>
1818
<string name="data_lose_warning">The changes you made on this page will be lost! Are you sure?</string>
1919
<string name="description">Description</string>
@@ -34,6 +34,11 @@
3434
<string name="kernel_about">About Kernel</string>
3535
<string name="kernel_support">How to add support in kernel</string>
3636
<string name="kernel_support_summary">Kernel Profiler expects a configuration file (<b><i>kernelprofiler.json</i></b>) and one or more \'<b><i>profiles</i></b>\' (basically shell scripts) in certain specific structure placed inside <b>\'<i>/data/kernel_profiler</i>\'</b>. Please check \'<b>Settings -> Developer Tools</b>\' for more information.</string>
37+
<string name="language">Language (%s)</string>
38+
<string name="language_el">Greek</string>
39+
<string name="language_en">English</string>
40+
<string name="language_default">Default</string>
41+
<string name="language_pt">Portuguese</string>
3742
<string name="more">More</string>
3843
<string name="more_apps">More from Developer</string>
3944
<string name="name_empty">Profile name shouldn\'t be empty! Aborting.</string>

0 commit comments

Comments
 (0)