2016-09-22 77 views
0

我正在翻譯我的應用程序爲西班牙語和阿拉伯語。我將值文件中的所有英文字符串轉換爲所需的語言,並且效果很好。Java類翻譯菜單

我的問題是,活動名稱仍然是默認語言!如下所示,我使用了 String activity1 = getResources()。getString(R.string.activity1); 我在值文件(res/values-es/string.xml)中定義了3個活動名稱。例如,我的第一個活動有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

+1

檢查[ResourceBundle](https://docs.oracle.com/javase/7/docs/api/java/util/ResourceBundle.html) – sidgate

+0

非常感謝! –

回答

0

它終於研究出了。在res /值/數組:我創建

<?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 /值-ES /串稱爲西班牙語翻譯...

<?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的指導和指導。

0

如果你在一個價值觀文件中定義的字符串,它有一個ID,任何活動類可以自動獲得翻譯與此:

String mystring = getResources().getString(R.string.mystring);

也是一樣的陣列,getResources().getStringArray(R.string.mystringarray)

更多信息請參閱本:Accessing Resources

編輯:

我看到的是什麼,其實你的問題,該方法的setTitle完美的作品,但你永遠不會看到標題改變。

這是因爲當您執行startActivity(ourIntent)時,當前活動被添加到回棧中並創建新活動。

在這種情況下,你必須從每一個相應的活動調用的setTitle:報告,研究和聯繫人,並使用的setTitle(R.string.report_title)等。

+0

非常感謝SuigetsuSake爲您解答!自從我知道我應該去哪裏以後,我非常樂於助人。正如我在上面的編輯中提到的,我在string.xml中(在values-es下)定義了我的id(activity1),但這仍然不起作用!有什麼建議麼。非常感謝你! –

+0

在您發佈的代碼中,您將檢索活動標題(activity1),但您對此無能爲力。你必須使用setTitle(activity1),或者你可以在xml中設置它。參見http://stackoverflow.com/questions/2198410/how-to-change-title-of-activity-in-android – SuigetsuSake

+0

@ SuigetsuSake謝謝你的耐心等待。正如所建議的,我嘗試了自己設置標題,然後我嘗試了setTitle(getResources()。getText(R.string.activity1));但它不起作用!有什麼方法可以傳輸字符串:String displayNames [] = {「Report Odor(Reportar Un Olor)」,「Info(Información)」,「Contact Us(Contáctenos)」,}; res/values/strings.xml這種方式我可以翻譯它?再次感謝並原諒我缺乏基本知識。 –