自定义locale

 
自定义locale
 
前段时间 在做美国的一个政府项目, 其中有一块是政府给 老百姓发信件,信件有英文与西班牙语的两个版本。 信件中有一些 内容需要填充 日期, 对于 不同语言版本需要显示不同类型 的 日期。 数据为 03/30/2008, 对于英文版需要显示March 30, 2008, 相对应 对于西班牙版本需要显示Marzo 30,2008. 可以用 DateFormat, 然后设置一个locale 来格式化。 但是jdk里locale 的西班牙 日期表示 都是 全小写的,比如三月, marzo 。 找了很久发现 关于西班牙文的loacle全是小写的 月份。 可是BA一定要 大写字母打头,真是让人吐血, 因为JDK里面默认是全是小写的。 没有其它招数 只能从 locale 着手解决,于是 从JDK入手,反编译了 JDK一些类, 发现在 sun.text.resources包下定义了jdk的所有locale, class 的名字 都是以LocaleElements_es 这样的名字来命名,LocaleElements + _ + locale的简称, 仔细研究了一番,虚拟机在load Locale类时会把这个包下的所有资源class装载进去。 于是我新建了一个class LocaleElements_esus, 这个类是拷贝 LocaleElements_es, 修改中间关于month name  部分,这个locale 的简称 就是 esus, 下划线后面部分, 然后这样只要
Locale locale = new Locale(“esus”);
就可以用。
不过一定要 package 到: sun.text.resources
可以根据自己的需要 修改 完善。
sun.text.resources 在 jre/lib/ext/localedata.jar 里
主要代码如下:
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Source File Name:   LocaleElements_es.java
 
package sun.text.resources;
 
import java.util.ListResourceBundle;
 
public class LocaleElements_esus extends ListResourceBundle
{
 
    ......
 
            }, new Object[] {
                "MonthNames", new String[] {
                              "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre",
                        "Noviembre", "Diciembre", ""
                }
            }, new Object[] {
                "MonthAbbreviations", new String[] {
                        "ENE", "FEB", "MAR", "ABR", "MAY", "JUN", "JUL", "AGO", "SEP", "OCT",
                        "NOV", "DIC", ""
                }
            }, new Object[] {
                "DayNames", new String[] {
                    "domingo", "lunes", "martes", "mi/351rcoles", "jueves", "viernes", "s/341bado"
       .....
      
        });
    }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值