`
wangxc
  • 浏览: 213033 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

J2me语言国际化

    博客分类:
  • J2ME
阅读更多
J2me手机开发在早期的WTK没用jsr 238包,所以程序要想做到国际化是特别费劲的,一般手机程序都是采用第三方的Jar包,或者用一些UI包设计前台显示是根据不同的版块来做到国际化,WTK2.5.2就已经加入了jsr 238 jar包,实现起国际化来就比较容易了,注意:JSR-238 API 是一个可选的软件包。开始向其部署 JSR-238 MIDlet 之前,必须确保您的设备支持它。

判断当前手机的语言种类和编码的核心代码如下:
System.getProperty("microedition.locale");
System.getProperty("microedition.encoding")


测试的小例子:


package com.mopietek;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class LanguageMidlet extends MIDlet implements CommandListener{

	
	public Display display;
	
	public Form form;
	
	public final static Command exitCommand = new Command("Exit:",Command.EXIT,1);
	
	public LanguageMidlet() {
	
		display = Display.getDisplay(this);
		form = new Form("语言国际化");
		form.addCommand(exitCommand);
		form.setCommandListener(this);
		
	}

	protected void destroyApp(boolean unconditional)
			throws MIDletStateChangeException {

	}

	protected void pauseApp() {

		
	}

	protected void startApp() throws MIDletStateChangeException {

		Dictionary dictionary = new Dictionary(System.getProperty("microedition.locale"),System.getProperty("microedition.encoding"));
		String str = Dictionary.getString(dictionary.NUM_IDS-1);
		form.append(str);
		display.setCurrent(form);
		
		
	}

	public void commandAction(Command c, Displayable d) {
	
		if(c == exitCommand)
			this.notifyDestroyed();
	}

}




package com.mopietek;

public class Dictionary {

	private static short ix = 0;
	//设定字符串数组的标签
	public final static short LABEL_Command_EXIT = ix++; //退出
	public final static short LABEL_Command_FIND = ix++; //重搜
	public final static short LABEL_Command_CONN = ix++; //连接
	public final static short LABEL_Message_FIND = ix++; //正在查找蓝牙设备...
	public final static short LABEL_Message_TITLE = ix++; //蓝牙GPS
	public final static short LABEL_Message_NOBT = ix++; //你的手机没有蓝牙功能或未开启蓝牙功能

	
	public final static short NUM_IDS = ix;
	private static String[] strings;
	
	/*
	 * 根据手机系统的语言环境构造相应的字符串数组,之后在其它类里可以通过这样的方式取用:
	 * String str = Dictionary.getString(Dictionary.LABEL.Message_FIND);
	 * locale代表手机所在的国家或地区,encoding代表手机默认的字符集名称
	 * */
	public Dictionary(String locale,String encoding){
		
		if(locale.toUpperCase().equals("ZH-CN") || locale.toUpperCase().equals("ZH")){
			strings = stringsCn(); ///调用该构造方法构造一个简体中文数组
		}else if(locale.toUpperCase().equals("ZH-HK")){
			strings = stringsBig5();
		}else{
			strings = stringsEnUS();
		}
		
	}
	
	private String[] stringsCn(){
		String[] strArray = new String[NUM_IDS];
		
		strArray[LABEL_Command_EXIT] = "退出";
		strArray[LABEL_Command_FIND] = "重搜";
		strArray[LABEL_Command_CONN] = "连接";
		strArray[LABEL_Message_FIND] = "正在查找蓝牙设备";
		strArray[LABEL_Message_TITLE] = "蓝牙GPS";
		strArray[LABEL_Message_NOBT] = "你的手机没有蓝牙功能或未开启蓝牙功能";
		return strArray;
		
	}
	
	
	//给繁体中文类型的字符串数组赋值
    private String[] stringsBig5()
    {
        String[] strArray = new String[NUM_IDS];

        strArray[LABEL_Command_EXIT] = "退出";
        strArray[LABEL_Command_FIND] = "重搜";
        strArray[LABEL_Command_CONN] = "連接";
        strArray[LABEL_Message_FIND] = "正在查找藍牙設備...";
        strArray[LABEL_Message_TITLE] = "藍牙GPS";
        strArray[LABEL_Message_NOBT] = "你的手機沒有藍牙或未開啓藍牙功能!";
        
        return strArray;
    }


    private String[] stringsEnUS()
    {
        String[] strArray = new String[NUM_IDS];

        strArray[LABEL_Command_EXIT] = "exit";
        strArray[LABEL_Command_FIND] = "find";
        strArray[LABEL_Command_CONN] = "conn";
        strArray[LABEL_Message_FIND] = "Looking for Bluetooth devices...";
        strArray[LABEL_Message_TITLE] = "Bluetooth GPS";
        strArray[LABEL_Message_NOBT] = "Your Bluetooth phone or did not open the Bluetooth function!";
        
        return strArray;
    }


	public static String getString(int id){
		
		if((id>=0) &&(id<strings.length)){
			return strings[id];
		}else{
			throw new IllegalArgumentException("id=" + id + " is out of bounds. max=" + strings.length);
		}
		
	}
	
	
}

分享到:
评论

相关推荐

    j2me国际化问题

    本文将深入探讨J2ME中的国际化问题,以及如何通过提供的源码工具进行解决。 国际化的全称是Internationalization,简称i18n(因为单词"internationalization"有18个字母)。在软件开发中,国际化是指设计和实现一种...

    j2me polish v212源码

    4. **国际化和本地化**:支持多语言和区域设置,使得应用能够适应全球市场。 5. **性能优化**:通过代码优化和资源管理,提高J2ME应用的运行速度和响应性。 6. **调试和测试**:提供强大的调试工具和模拟器,帮助...

    pro j2me polish

    5. **国际化支持**:内置多语言支持,方便应用的全球化发布。 6. **丰富的文档和社区**:官方提供详尽的文档和活跃的社区支持,帮助开发者快速上手并解决问题。 **使用流程:** 1. **安装和配置**:首先,开发者...

    J2ME中文教程,适合初学者学习的资料

    3. 本地化与国际化:使应用适应不同语言和文化。 4. 游戏开发:利用J2ME开发2D游戏,理解游戏循环和碰撞检测。 通过这个J2ME中文教程,你可以逐步掌握移动设备开发的基础,从创建简单的应用到构建复杂的系统。不断...

    J2ME Property属性表E.doc

    - `microedition.global.version`:Mobile Internationalization API(JSR-238)版本,处理国际化问题。 - `microedition.chapi.version`:Content Handler API(JSR211)版本,处理内容解析和处理。 - `...

    J2ME WTK2.2

    8. **国际化支持**:对于需要支持多语言的应用,WTK 提供了资源管理工具,方便管理和调整应用程序的语言资源。 9. **网络模拟**:模拟器还可以模拟不同的网络环境,如GPRS、EDGE、Wi-Fi等,以便测试应用程序在网络...

    j2me电子辞典系统

    6. **本地化与国际化**:对于全球用户,电子辞典可能支持多语言界面和词汇。J2ME提供了一些工具和API来处理字符串资源和文本格式化,便于实现这些功能。 7. **事件驱动编程**:J2ME应用基于事件驱动模型,用户操作...

    专题资料(2021-2022年)java的标准化与J2ME.ppt

    Java的标准化与J2ME是Java技术发展的重要组成部分,这个过程由Java Community Process(JCP)所主导。JCP是一个开放的国际组织,由Java开发者、授权者以及各种机构组成,它的目标是推动Java技术规范的发展和更新。这...

    J2me 轻量级UI控件-lwuit1.2.1

    6. **国际化和本地化**:LWUIT支持多语言,方便开发者创建面向全球市场的应用。 在实际使用LWUIT 1.2.1时,开发者需要注意以下几点: - **性能优化**:虽然LWUIT提供了许多功能,但在内存和CPU有限的设备上,可能...

    j2me开发大全(中英文版)

    由于J2ME是全球化的,所以开发者需要考虑应用的国际化和本地化。J2ME支持多语言资源文件,允许应用程序根据用户的语言和地区自动调整显示内容。 **性能优化** 由于J2ME运行在资源受限的设备上,性能优化是必不可少...

    pro j2me polish 源码

    5. **国际化和本地化**:支持多语言环境,方便应用面向全球市场。 6. **性能优化**:针对J2ME平台进行了性能优化,以确保在有限的移动设备资源下也能流畅运行。 7. **库和API**:提供了丰富的库和API,例如网络...

    J2ME手机词典源码

    4. **本地化与国际化**:考虑到词典的全球用户,程序可能支持多语言。这涉及到资源文件的管理,每个语言对应一个资源文件,包含界面文本和词典内容。 5. **网络功能**:J2ME的JCP(Java Community Process)提供了...

    j2me慢慢学教程

    - **本地化与国际化**:适应不同地区和语言的用户。 本教程将逐步引导初学者掌握J2ME的各项技能,从基本概念到实际项目开发,涵盖从环境配置到应用发布的所有环节。通过学习,你可以利用J2ME开发出富有创意的移动...

    j2me dictionary omniDic source code

    作为一款字典应用,OmniDic可能支持多种语言,这就涉及到国际化的处理。它可能使用了J2ME的Locale类和资源包来处理不同语言的显示。 8. **错误处理与调试** 良好的错误处理和日志记录是任何应用的重要组成部分。...

    j2me 金典文章收录

    3. **Personal Basis Profile (PBP)** 和 **Personal Profile (PP)**:这些是更高级的J2ME profiles,提供了更多的API,如XML解析、加密和国际化支持。 4. **CLDC API**:提供了一些基本的类库,如I/O、线程和集合...

    j2me ui lwuit 1.3

    6. **国际化与本地化**:LWUIT 支持多语言环境,开发者可以轻松地为应用添加不同语言的支持,以满足全球用户的需求。 7. **触摸支持**:LWUIT 1.3 版本改进了对触摸屏设备的支持,使得开发者能够在触控设备上构建...

    J2ME开发的电子词典

    6. **本地化与国际化**: 电子词典可能需要支持多种语言,因此需要考虑如何处理多语言的词汇库和用户界面。 7. **性能优化**: 对于资源有限的移动设备,优化代码执行效率至关重要。开发者需要关注内存使用、CPU...

    J2ME程序设计实例教程源代码

    5. **本地化与国际化**:J2ME支持多语言和地域适应性,实例可能涉及如何处理不同地区的文本和日期格式。 6. **资源管理**:在嵌入式系统中,内存和CPU时间非常宝贵。源代码将展示如何有效地管理内存和优化资源消耗...

Global site tag (gtag.js) - Google Analytics