我正在将我的应用翻译成西班牙语和阿拉伯语。我将值文件中的所有英文字符串转换为所需的语言,并且效果非常好。
我的问题是活动名称仍然是默认语言!如下所示,我用过 String activity1 = getResources()。getString(R.string.activity1); 我在values文件中定义了3个活动名称(res / values-es / string.xml)。例如,我的第一个活动有id(activity1)。由于某种原因,这仍然不起作用!任何建议或/和其他阅读材料!
package com.reportodor.mohamed;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class Menu extends ListActivity{
String displayNames[] = { "Report Odor","Info","Contact Us",};
Class activities[] = {Report.class, Study.class, Contact.class};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1, displayNames));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
String cheese = displayNames[position];
Class ourClass = activities[position];
Intent ourIntent = new Intent(Menu.this, ourClass);
startActivity(ourIntent);
//String activity1 = getResources().getString(R.string.activity1);
setTitle(getResources().getText(R.string.activity1));
setTitle("activity1 title"); //
}
}
我阅读了以下内容,他们非常乐于助人: Accessing Resources Localizing with Resources
答案 0 :(得分:0)
如果您已在值文件中定义了字符串,则它具有id,并且任何Activity类都可以自动获取转换:
String mystring = getResources().getString(R.string.mystring);
具有getResources().getStringArray(R.string.mystringarray)
有关详细信息,请参阅此处:Accessing Resources
编辑:
我看到实际上你的问题是什么,setTitle方法完美无缺,但你从未看到标题发生变化。
那是因为当你执行startActivity(ourIntent)时,当前活动被添加到后台堆栈并创建新的活动。
在这种情况下,您必须从每个相应的活动中调用setTitle:Report,Study和Contact,并使用setTitle(R.string.report_title)等。
答案 1 :(得分:0)
终于成功了。在res / values / arrays中:我创建了
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array
name="listMenu1">
<item>@string/activity1</item>
<item>@string/activity2</item>
<item>@string/activity3</item>
</string-array>
</resources>
在res / values-es / strings中称为西班牙语翻译......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="activity1"> Reportar Un Olor </string>
<string name="activity2"> Información </string>
<string name="activity3"> Contáctenos </string>
</resources>
然后在OnCreate方法中检索数组,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
String[] listM = getResources().getStringArray(R.array.listMenu1);
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1, listM));
}
我非常感谢SuigetsuSake和sidgate的指导和指示。