ユーザーごとに国コードをアプリ内の通貨に変換する必要があります。
地理位置情報ライブラリに基づいて、ユーザーが米国 (US)、ドイツ (DE)、スイス (CH)、日本 (JPY) などにいるかどうかがわかります。次に、国コードから対応する通貨に変換する必要があります。 :
US -> USD ($)
DE -> EURO (€)
CH -> CHF (CHF)
JP -> YEN (JPY)
Javaでこれを行うにはどうすればよいですか?
ユーザーごとに国コードをアプリ内の通貨に変換する必要があります。
地理位置情報ライブラリに基づいて、ユーザーが米国 (US)、ドイツ (DE)、スイス (CH)、日本 (JPY) などにいるかどうかがわかります。次に、国コードから対応する通貨に変換する必要があります。 :
US -> USD ($)
DE -> EURO (€)
CH -> CHF (CHF)
JP -> YEN (JPY)
Javaでこれを行うにはどうすればよいですか?
はい。標準の JDK は、主要な外貨をサポートしています。
System.out.println(DecimalFormat.getCurrencyInstance(Locale.US).format(12.34));
System.out.println(DecimalFormat.getCurrencyInstance(Locale.FRANCE).format(12.34));
出力:
$12.34
12,34 €
これが役に立てば幸いです。
このページを解析して、データベースに保存する必要があります。
アプリのニーズに適した優れたデータベースをインターネット ソースから構築するのは困難ですが、それだけの価値はあります。HTML を解析するには、regexp を試すことをお勧めします。複雑すぎる場合は、apache jerichoを使用するか、soup をタグ付けしてください。
これはどうですか?ハックですが、問題なく動作するようです。
/**
*
*/
package lt;
import java.util.Currency;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
/**
* LocaleTest - LocaleTest
* @version 1.0
* @author <a href="mailto:Dessimat0r@ntlworld.com">Chris Dennett</a>
*/
public class LocaleTest {
public static final Map<String, Currency> CURRENCIES = new HashMap<String, Currency>();
static {
for (Locale l : Locale.getAvailableLocales()) {
try {
Currency c = Currency.getInstance(l);
if (c != null) {
CURRENCIES.put(l.getCountry(), c);
System.out.println("key: " + l.getCountry() + ", loc: " + l + ", curr: " + c + " (" + c.getSymbol(l) + ")");
}
} catch (IllegalArgumentException e) {
}
}
}
public static final void main(String args[]) {
if (args == null || args.length == 0 || (args[0] = args[0].trim()).isEmpty()) {
System.out.println("Please provide an argument!");
return;
}
System.out.println("LocaleTest: got " + args[0] + " as argument");
Currency c = CURRENCIES.get(args[0]);
if (c != null) {
System.out.println("LocaleTest: got " + c + " (" + c.getSymbol() + ") as currency");
} else {
System.out.println("LocaleTest: no currency found for " + args[0]);
}
}
}
GB を指定して出力します。
...
key: YE, loc: ar_YE, curr: YER (?.?.?)
key: MK, loc: mk_MK, curr: MKD (Den)
key: CA, loc: en_CA, curr: CAD ($)
key: VN, loc: vi_VN, curr: VND (?)
key: NL, loc: nl_NL, curr: EUR (€)
key: US, loc: es_US, curr: USD (US$)
key: CN, loc: zh_CN, curr: CNY (?)
key: HN, loc: es_HN, curr: HNL (L)
key: US, loc: en_US, curr: USD ($)
..
LocaleTest: got GB as argument
LocaleTest: got GBP as currency
問題は、通貨が記号 ($ £ など) ではなく記号として名前を表示する場合があることです。それが機能するには、元の国のロケールで通貨を作成する必要があります。これを修正しても、通貨のシンボルが正しく表示されない可能性があります。