mehrdad85
دوشنبه 13 آذر 1396, 10:04 صبح
سلام
دوستان برای این که به کاربر بتونم این امکان را بدم که بتونه داخل خود برنامه زبان برنامه را عوض کنه اینطور عمل کردم ولی متاسفانه جواب نمیده ممنونم میشم راهنمایی بفرمایید.
اول اینکه فایل های string.xml را به نحو مقتضی درست کردم و فولدر های value را نیز ست کردم و از کد زیر هم استفاده کردم.
package com.example.site.multilingual;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.Button;
import java.util.Locale;
import java.util.prefs.Preferences;
public class MainActivity extends AppCompatActivity {
SharedPreferences preferences;
String currentLang;
Button btn_changeLang;
@Override
protected void onCreate(Bundle savedInstanceState) {
preferences= PreferenceManager.getDefaultSharedPreferences(this );
currentLang=preferences.getString("LANG","en");
setLocale(currentLang);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialization();
//listener for changing language button
btn_changeLang.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(currentLang.equals("en")){
currentLang="fa";
preferences.edit().putString("LANG",currentLang).commit();
}else {
currentLang="en";
preferences.edit().putString("LANG",currentLang).commit();
}
}
});
}
//initialization of all widgets in layout
public void initialization(){
btn_changeLang=(Button)findViewById(R.id.btn_chang eLang);
}
//changing the application language
public void setLocale(String lang){
Locale myLocale=new Locale(lang);
Resources res=getResources();
DisplayMetrics dm=res.getDisplayMetrics();
Configuration conf=res.getConfiguration();
conf.locale=myLocale;
res.updateConfiguration(conf,dm);
}
}
یه مشکل دیگه هم این که من از توابع depricate شده استفاده کردم آیا از این نظر نگرانی ای وجود نخواهد داشت؟ چون میخوام که این کد با API پایین اجرا بشه.
پیشاپیش از محبت و راهنمایی همه دوستان سپاسگزارم.
دوستان برای این که به کاربر بتونم این امکان را بدم که بتونه داخل خود برنامه زبان برنامه را عوض کنه اینطور عمل کردم ولی متاسفانه جواب نمیده ممنونم میشم راهنمایی بفرمایید.
اول اینکه فایل های string.xml را به نحو مقتضی درست کردم و فولدر های value را نیز ست کردم و از کد زیر هم استفاده کردم.
package com.example.site.multilingual;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.Button;
import java.util.Locale;
import java.util.prefs.Preferences;
public class MainActivity extends AppCompatActivity {
SharedPreferences preferences;
String currentLang;
Button btn_changeLang;
@Override
protected void onCreate(Bundle savedInstanceState) {
preferences= PreferenceManager.getDefaultSharedPreferences(this );
currentLang=preferences.getString("LANG","en");
setLocale(currentLang);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialization();
//listener for changing language button
btn_changeLang.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(currentLang.equals("en")){
currentLang="fa";
preferences.edit().putString("LANG",currentLang).commit();
}else {
currentLang="en";
preferences.edit().putString("LANG",currentLang).commit();
}
}
});
}
//initialization of all widgets in layout
public void initialization(){
btn_changeLang=(Button)findViewById(R.id.btn_chang eLang);
}
//changing the application language
public void setLocale(String lang){
Locale myLocale=new Locale(lang);
Resources res=getResources();
DisplayMetrics dm=res.getDisplayMetrics();
Configuration conf=res.getConfiguration();
conf.locale=myLocale;
res.updateConfiguration(conf,dm);
}
}
یه مشکل دیگه هم این که من از توابع depricate شده استفاده کردم آیا از این نظر نگرانی ای وجود نخواهد داشت؟ چون میخوام که این کد با API پایین اجرا بشه.
پیشاپیش از محبت و راهنمایی همه دوستان سپاسگزارم.