私はJava=の新人で、実際にゲームアプリを開発しています。ゲームの言語を変更できる機能を追加したかったのです。
もう2個作りましたstrings.xml
。 1つはデフォルト(英語)、もう1つは翻訳バージョン(ファイル)です。
これが私のコードです
import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.widget.Button;
import Android.widget.Toast;
public class LanguageActivity extends Activity {
private static Button button_fil;
private static Button button_eng;
public void onButtonClickListener() {
button_fil = (Button) findViewById(R.id.btnFilipino);
button_fil.setOnClickListener(
new View.OnClickListener() {@
Override
public void onClick(View v) {
Toast.makeText(LanguageActivity.this, "Filipino Language", Toast.LENGTH_SHORT).show();
}
}
);
button_eng = (Button) findViewById(R.id.btnEnglish);
button_eng.setOnClickListener(
new View.OnClickListener() {@
Override
public void onClick(View v) {
Toast.makeText(LanguageActivity.this, "English Language", Toast.LENGTH_SHORT).show();
}
}
);
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.language);
onButtonClickListener();
}
どうもありがとう!
この例を試してください。多分それはあなたを助けるでしょう。ここでは、スピナーを使用して言語を選択しました。
あなたの行動で
import Java.util.Locale;
import Android.os.Bundle;
import Android.app.Activity;
import Android.content.Intent;
import Android.content.res.Configuration;
import Android.content.res.Resources;
import Android.util.DisplayMetrics;
import Android.view.View;
import Android.widget.AdapterView;
import Android.widget.Button;
import Android.widget.Spinner;
import Android.widget.Toast;
import Android.widget.AdapterView.OnItemSelectedListener;
public class AndroidLocalize extends Activity {
Spinner spinnerctrl;
Button btn;
Locale myLocale;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
spinnerctrl = (Spinner) findViewById(R.id.spinner1);
spinnerctrl.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
if (pos == 1) {
Toast.makeText(parent.getContext(),
"You have selected Tamil", Toast.LENGTH_SHORT)
.show();
setLocale("ta");
} else if (pos == 2) {
Toast.makeText(parent.getContext(),
"You have selected Hindi", Toast.LENGTH_SHORT)
.show();
setLocale("hi");
} else if (pos == 3) {
Toast.makeText(parent.getContext(),
"You have selected English", Toast.LENGTH_SHORT)
.show();
setLocale("en");
}
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
public void setLocale(String lang) {
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, AndroidLocalize.class);
startActivity(refresh);
}
}
あなたのXMLで
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical" >
<TextView
Android:id="@+id/greet"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="@string/greet"
Android:textSize="25sp" Android:gravity="center" Android:paddingTop="25sp" />
<TextView
Android:id="@+id/textView1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="@string/langselection"
Android:textAppearance="?android:attr/textAppearanceMedium" Android:gravity="center" Android:paddingTop="25sp"/>
<Spinner
Android:id="@+id/spinner1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:entries="@array/languages"
Android:gravity="center" Android:paddingTop="25sp" />
</LinearLayout>
次に、あなたの言語のstrings.xmlを追加します
<resources>
<string name="app_name">Androidlocalization</string>
<string name="hello_world">Hello world!</string>
<string name="title_activity_Android_localize">AndroidLocalize</string>
<string name="greet">बधाई सचिन !!</string>
<string name="langselection">जिस भाषा में आप सचिन को नमस्कार करना चाहते हैं का चयन करें!!!!</string>
<string name="chooselang">Choose the language</string>
<string-array name="languages">
<item>Select language</item>
<item>தமிழ்</item>
<item>हिंदी</item>
<item>English</item>
</string-array>
</resources>
マニフェストも更新してください。問題が解決することを願っています。
このように更新します。
<application
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name=".AndroidLocalize"
Android:label="@string/title_activity_Android_localize"
Android:configChanges="locale|orientation|keyboardHidden"
Android:noHistory="true">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
これはmethod私が書いて私にとって完璧に機能していますアプリから言語を変更するため(そしてデバイス全体ではなく単一のアプリのため):
_private void setLanguageForApp(String languageToLoad){
Locale locale;
if(languageToLoad.equals("not-set")){ //use any value for default
locale = Locale.getDefault();
}
else {
locale = new Locale(languageToLoad);
}
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
}
_
注:アプリが開かれるたびに、最初のアクティビティのsetContentView()
でonCreate()
の前にこのメソッドを呼び出します。
_@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setLanguageForApp("en"); //hard-coded here - get from whereever you stored
setContentView(R.layout.activity_category_list);
...
...
...
_
選択したロケールコードを共有設定に保存し、取得してパラメーターとして渡します。
言語選択ダイアログの方法:(注:言語の変更後にアプリをリロードして、言語の変更を有効にします)
_private void showLanguageChangePopup() {
CharSequence languages[] = new CharSequence[] {
"English",
"हिंदी (Hindi)",
"Français (French)",
"Italiano (Italian)",
"Deutsch (German)",
"Español (Spanish)",
"日本語 (Japanese)",
"í•œêµì–´ (Korean)",
"Nederlands (Dutch)",
"Português (Portuguese)",
"руÑÑкий (Russian)",
"ä¸æ–‡ (Chinese)",
"العربية (Arabic)"
};
final String codes[] = new String[] {
"en",
"hi",
"fr",
"it",
"de",
"es",
"ja",
"ko",
"nl",
"pt",
"ru",
"zh",
"ar"
};
int currentLangIndex = Prefs.getUserPreferenceIntValue(Prefs.Key.SELECTED_LANGUAGE_INDEX, getBaseContext());
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.text_select_language);
builder.setSingleChoiceItems(languages, currentLangIndex, null);
builder.setNegativeButton(R.string.text_translate_cancel, null);
builder.setPositiveButton(R.string.action_change_language, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
int selectedIndex = ((AlertDialog) dialog).getListView().getCheckedItemPosition();
Prefs.setUserPreferenceStringValue(Prefs.Key.LANGUAGE, codes[selectedIndex], getBaseContext());
Prefs.setUserPreferenceIntValue(Prefs.Key.SELECTED_LANGUAGE_INDEX, selectedIndex, getBaseContext());
Intent i = new Intent(CategoryListActivity.this, CategoryListActivity.class);
startActivity(i);
finish();
}
});
builder.show();
}
_
複数の言語をサポートしている場合は、たとえばvalues-frのような個別の値フォルダーを作成し、このフォルダー内にstings.xmlファイルを配置する必要があります。うまくいくはずです。お役に立てれば!
<resources>
<string name="app_name">Androidlocalization</string>
<string name="hello_world">Hello world!</string>
<string name="title_activity_Android_localize">AndroidLocalize</string>
<string name="greet">बधाई सचिन !!</string>
<string name="langselection">जिस भाषा में आप सचिन को नमस्कार करना चाहते हैं का चयन करें!!!!</string>
<string name="chooselang">Choose the language</string>
<string-array name="languages">
<item>Select language</item>
<item>தமிழ்</item>
<item>हिंदी</item>
<item>English</item>
</string-array>
</resources>
各コードは異なる言語の同じフォルダーにあり、異なる値のフォルダーを追加します
たとえば、ヒンディー語の値フォルダはvalue-hiの中にあります