2016-09-22 13 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

は、それが最終的に働きました。 ...私は

<?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の方法で取得されました:RES /値/アレイで:

@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を持っており、任意のActivityクラスは自動的に翻訳を得ることができますこれで:

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の中で自分のid(activity1)を定義しましたが、これはまだ動作しません!助言がありますか。どうもありがとうございました! –

+0

投稿したコードでは、アクティビティのタイトル(activity1)を取得しますが、何もしません。 setTitle(activity1)を使用するか、xmlで設定する必要があります。http://stackoverflow.com/questions/2198410/how-to-change-title-of-activity-in-android – SuigetsuSake

+0

@ SuigetsuSakeあなたの忍耐力に感謝します。提案したように、私は自分自身でTitleを設定しようとしましたが、次にsetTitle(getResources()。getText(R.string.activity1))を試しました。それは動作しませんでした!文字列を転送する方法はありますか?String displayNames [] = {"Report Odor(Reportar Un Olor)"、 "Info(Información)"、 "Contact Us(Contáctenos)"、};私はそれを翻訳することができますようにres/values/strings.xmlに?もう一度おねがいし、私の基本的知識の欠如を許してください。 –

関連する問題