翻译Java类

时间:2016-09-22 20:26:31

标签: java android string translation

我正在将我的应用翻译成西班牙语和阿拉伯语。我将值文件中的所有英文字符串转换为所需的语言,并且效果非常好。

我的问题是活动名称仍然是默认语言!如下所示,我用过             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

2 个答案:

答案 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的指导和指示。