java: Multion Pattern
/**
* 版权所有 2022 涂聚文有限公司
* 许可信息查看:
* 描述:
* 多例模式 (Multion Patterns)
* 历史版本: JDK 14.02
* 2022-09-12 创建者 geovindu
* 2022-09-12 添加 Lambda
* 2022-09-12 修改:date
* 接口类
* 2022-09-12 修改者:Geovin Du
* 生成API帮助文档的指令:
*javadoc - -encoding Utf-8 -d apidoc LingualResource.java
*https://github.com/TakahikoKawasaki/nv-i18n/blob/master/src/test/java/com/neovisionaries/i18n/LanguageCodeTest.java
* */
package com.javapatterns.multilingual;
import java.util.HashMap;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Locale;
import java.text.NumberFormat;
public class LingualResource {
private String languageCode = "en";
private String regionCode = "US";
private String localeCode = "en_US";
private static final String FILE_NAME = "res";
private static HashMap instances = new HashMap(10);
private Locale locale = null;
private ResourceBundle resourceBundle = null;
private LingualResource lnkLingualResource;
private LingualResource(String languageCode, String regionCode)
{
this.localeCode = languageCode;
this.regionCode = regionCode;
localeCode = makeLocaleCode(languageCode , regionCode);
locale = new Locale(languageCode, regionCode);
resourceBundle = ResourceBundle.getBundle(FILE_NAME, locale);
instances.put( makeLocaleCode(languageCode, regionCode) , resourceBundle);
}
private LingualResource()
{
//do nothing
}
public synchronized static LingualResource getInstance(String language, String region)
{
return new LingualResource( language, region );
}
public String getLocaleString(String code)
{
return resourceBundle.getString(code);
}
private static String makeLocaleCode(String language, String region)
{
return language + "_" + region;
}
static public void displayCurrency(Double amount, Locale currentLocale)
{
NumberFormat formatter;
String amountOut;
formatter = NumberFormat.getCurrencyInstance(currentLocale);
amountOut = formatter.format(amount);
System.out.println(amountOut + " " + currentLocale.toString());
}
}
调用测试:
LingualResource.displayCurrency(new Double(1234567.89), new Locale("en", "US"));
LingualResource.displayCurrency(new Double(1234567.89), new Locale("de", "DE"));
LingualResource.displayCurrency(new Double(1234567.89), new Locale("fr", "FR"));
输出:
$1,234,567.89 en_US 1.234.567,89 € de_DE 1 234 567,89 € fr_FR
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号