网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > JSP > 正文
J2ME中的字符串管理和多语言支持
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/11/29
下载{$ArticleTitle}原创论文样式

  近期学习J2ME开发,也谈谈我对字符串管理的一个方案。

  字符串管理的目的是字符串的资源化管理。

  1。这个系统应该可以通过静态方法访问;

  2。字符串保存在资源当中;

  3。可以方便的切换各种语言以达到多语言支持;

  4。字符串资源有一个名字,通过名字访问该资源;

  5。名字的规则应该是类名+内部名称。

  下一个问题就是资源以何种格式存储的问题

  按理说XML是理想的方式,但是考虑到j2me系统的特殊性,采用plain text更为合适

  格式是string-name string-value

  name和value之间以空格或t分割,不同的字符串之间以n分隔。

  内部采用hashtable存储。

  通过以上的分析,可以写出如下的StringManager

package vmLinux.app;
  import Java.io.*;
  import java.util.*;
  public class StringManager {
  String lang_;
  String name_;
  Hashtable strings_;
  boolean loaded_;
  public StringManager(String lang)
  {
  lang_=lang;
  loaded_=false;
  }
  public void setLang(String lang)
  {
  if(lang_==lang)
  return;
  lang_=lang;
  loaded_=false;
  }
  public void load(String name)
  {
  if(name==name_ && loaded_)
  return;
  if(strings_==null)
  strings_=new Hashtable();
  else
  strings_.clear();
  InputStream is=this.getClass().getResourceAsStream("/strings/"+name+"."+lang_);
  try
  {
  byte[] buf=new byte[1024];
  int c=is.read(buf);
  StringBuffer o=new StringBuffer();
  String key=null;
  do{
  String data=new String(buf,0,c);
  int s=0;
  for(int i=0;i
  {
  char x=data.charAt(i);
  if(s==0 && (x==' ' || x=='t'))
  {
  key=o.toString();
  o.delete(0,o.length());
  s=1;
  }
  else if(s==1 && x=='n')
  {
  if(key!=null && key.length()>0)
  strings_.put(key,o.toString());
  key=null;
  o.delete(0,o.length());
  s=0;
  }
  else
  o.append(x);
  }
  }while((c=is.read(buf))>0);
  if(key!=null && key.length()>0)
  strings_.put(key,o.toString());
  is.close();
  }
  catch(Exception ex)
  {
  }
  name_=name;
  loaded_=true;
  }
  public String getString(String name)
  {
  Object o=strings_.get(name);
  if(o==null)
  return name;
  else
  return (String)o;
  }
  }

  为了实现通过静态方法访问,修改一下,增加一段代码

static StringManager instance;
  public static String get(String name)
  {
  return instance.getString(name);
  }
  public static StringManager getInstance(String lang)
  {
  if(instance!=null)
  {
  instance.setLang(lang);
  }
  else
  {
  instance=new StringManager(lang);
  }
  return instance;
  }

  并把构造函数改为private。

  有了这样一个StringManager,就可以方便的实现midlet内部的字符串管理了。

  初始化管理器: StringManager.getInstance("zh_cn").load("mystrings");//载入/strings/mystrings.zh_cn

  使用字符串: StringManager.get("TestMIDlet.Exit");//退出命令

  /strings/mystrings.zh_cn文件可以是这样的

  TestMIDlet.Exit 退出

  TestMIDlet.Done 完成

  这种设计的缺点是同一时间只能使用一个资源。

  有意见或建议请联系vmlinuxx@gmail.com,共同学习,共同提高:)

(责任编辑:admin)

  • 下一篇资讯: J2ME游戏优化秘密
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号