2011-09-11 4 views
1

私はより多くの巧妙な何かをしたいと思いますjavaとDateの利点は、基本的にはループを実行する必要があります:ユーザー言語のすべての週の日のラベルを取得する

for (i= 0 to 6) 
    DateFormat formatter = new SimpleDateFormat("E"); 
    Date date = (Date) formatter.parse(new Date()+i); 
    System.out.println(date); 

これは本当に良いでしょう。 java.Dateを使用すると自動的にすべての翻訳が自動的に表示されます。もちろん私は車輪を再発明したくありません!

しかし、このループは時間とプロセッサーを無駄にしているようですが、これを実現するにはより良い方法があります。

アドバイスをいただきありがとうございます。

答えて

5

間にフォーマッタを使用せずに、必要な言語のday names from the Localeを取得するだけです。あなたは、フレームワークで既に行われているあなたのアプリの翻訳者には働かせてはいけません。

String[] days = new DateFormatSymbols(Locale.getDefault()).getWeekdays(); 
+0

上記のアプローチはこれを返します: 、 日曜日月曜日火曜日水曜日の木曜日金曜日土曜日]。つまり、日数は8日です。どうしてそうですか? – Prateek

+0

のため、http://stackoverflow.com/questions/8924231/dateformatsymbols-getshortweekdays-returning-weekdays-count-as-8 – Bananeweizen

1

Androidは複数の言語でこれを解決する良い方法です。 String ResourcesProviding Resourcesをご覧ください。 これにより、言語依存ファイルをさまざまなXMLリソースに指定できます。 Androidはユーザーの端末のロケールに応じて自動的に正しいものを選択します。

あなたのメイン/フォールバック言語については、res/values/strings.xml<string-array />にこれらの日を書くことができます。翻訳を提供するには、代わりのリソースを作成するだけです。例えば。フランス語の場合は、values-frというフォルダを作成し、フレンチstrings.xmlres/values-fr/strings.xmlに保存します。ここで

は、リソースファイルのサンプル配列である:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="week_days"> 
     <item>Monday</item> 
     <item>Tuesday</item> 
     <!-- and so on --> 
    </string-array> 
</resources> 

あなたは

String[] days = getResources().getStringArray(R.array.week_days); 

経由のコードでこの配列を受け取ることができます(week_daysは、この例では、文字列配列名です)

+0

私は質問を編集しました。もちろん、私は知っています:res/values-fr/strings.xml。しかし、私がしたいことはjavaとDateのメリットを得ることなので、すべての文字列を自分で書く必要はありません。それは私が怠け者ではないが、私は車輪を再発明したくない! –

+0

ああ、お元気です。とにかく他の文字列を指定しなければならないのですか?さもなければ、あなたのアプリケーションに混在言語で終わって、それは通常、素晴らしいimhoのように見えません(私は現在英語/ドイツの混合メニューで私のLinuxのミントボックスにある - かなりではない)。 –

+0

mhhh、はい、あなたは正しいです...非常に興味があり、私の質問に対する答えを見たいのですが、私があなたに感謝できる唯一の方法はあなたの答えに投票することです.. –

関連する問題