Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. package com.example.shiburagi.language;
  2.  
  3. import android.content.Intent;
  4. import android.content.SharedPreferences;
  5. import android.content.res.Configuration;
  6. import android.os.Bundle;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.view.View;
  9.  
  10. import java.util.Locale;
  11.  
  12.  
  13. public class MainActivity extends AppCompatActivity {
  14.  
  15.     private final String prefs_key = "language_prefs";
  16.     private final String locale_key = "locale";
  17.     private static Locale defaultLocale;
  18.  
  19.     @Override
  20.     protected void onCreate(Bundle savedInstanceState) {
  21.         if (MainActivity.defaultLocale == null)
  22.             MainActivity.defaultLocale = Locale.getDefault();
  23.  
  24.         String localeCode = getSharedPreferences(prefs_key, MODE_PRIVATE).getString(locale_key, null);
  25.         setLocale(localeCode);
  26.  
  27.         super.onCreate(savedInstanceState);
  28.         setContentView(R.layout.activity_main);
  29.     }
  30.  
  31.     public void japaneseLanguage(View view) {
  32.         SharedPreferences.Editor editor = getSharedPreferences(prefs_key, MODE_PRIVATE).edit();
  33.         editor.putString(locale_key, "ja");
  34.         editor.apply();
  35.  
  36.         restart();
  37.     }
  38.  
  39.     public void defaultLanguage(View view) {
  40.         SharedPreferences.Editor editor = getSharedPreferences(prefs_key, MODE_PRIVATE).edit();
  41.         editor.remove(locale_key);
  42.         editor.apply();
  43.  
  44.         restart();
  45.     }
  46.  
  47.     private void restart(){
  48.         startActivity(new Intent(this, MainActivity.class));
  49.         finish();
  50.     }
  51.  
  52.     private void setLocale(String code) {
  53.         Locale locale;
  54.  
  55.  
  56.         if (code != null)
  57.             locale = new Locale(code);
  58.         else
  59.             locale = MainActivity.defaultLocale;
  60.  
  61.         Locale.setDefault(locale);
  62.  
  63.         Configuration configuration = new Configuration();
  64.         configuration.locale = locale;
  65.  
  66.         getBaseContext().getResources().updateConfiguration(
  67.                 configuration,
  68.                 getBaseContext().getResources().getDisplayMetrics()
  69.         );
  70.     }
  71. }