如何更改DataPicker组件com.codename1.ui.Calendar的默认本地化语言
Codename One 配置DatePicker/Calendar组件本地化语言方法

com.codename1.ui.Calendar与绑定的DatePicker组件的界面文案(月份名、星期名、操作按钮文本)默认读取框架全局本地化配置,不需要自定义子类重写,可通过以下两种官方支持的方式修改:
方法1:全局配置(推荐,所有日期组件统一生效)
- 准备对应语言的本地化配置文件,在项目资源目录下添加
L10N-[语言代码]-[地区代码].properties文件,覆盖日历相关的本地化键值,以简体中文为例,L10N-zh-CN.properties内容参考:# 月份全称 calendar.january=1月 calendar.february=2月 calendar.march=3月 calendar.april=4月 calendar.may=5月 calendar.june=6月 calendar.july=7月 calendar.august=8月 calendar.september=9月 calendar.october=10月 calendar.november=11月 calendar.december=12月 # 星期缩写 calendar.sunday=日 calendar.monday=一 calendar.tuesday=二 calendar.wednesday=三 calendar.thursday=四 calendar.friday=五 calendar.saturday=六 # 操作按钮文案 calendar.set=确定 calendar.cancel=取消 calendar.today=今天 - 在应用初始化入口(主类
init()方法中)设置全局语言环境,配置会自动对后续创建的所有日期组件生效:// 切换为简体中文环境,根据目标语言替换对应语言、地区代码即可 L10nManager.getInstance().setLocale("zh", "CN");
方法2:单组件自定义配置(不影响全局语言)
如果只需要调整单个日期选择器的文案,不需要修改全局配置,可直接调用组件公开API设置自定义文本:
DatePicker datePicker = new DatePicker(); Calendar calendar = datePicker.getCalendarView(); // 设置月份名称 calendar.setMonthNames(new String[]{"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"}); // 设置星期名称 calendar.setDayOfWeekNames(new String[]{"日","一","二","三","四","五","六"}); // 设置操作按钮文本 calendar.setOkText("确定"); calendar.setCancelText("取消"); calendar.setTodayText("今天");
注意事项
- *如果组件已经完成渲染,修改配置后需要调用
datePicker.revalidate()触发界面重绘,修改才会即时生效。 - 不要通过反射修改Calendar类的内部静态字段实现语言切换,框架版本迭代时内部实现可能调整,该方式兼容性极差,优先使用上述公开API。
内容的提问来源于stack exchange,提问作者Angel Picallo
相关产品推荐
相关产品推荐

