1 
  2 /**
  3  * @name	CeL function for locale
  4  * @fileoverview
  5  * 本檔案包含了 locale 的 functions。
  6  * @since	
  7  */
  8 
  9 /*
 10 http://blog.miniasp.com/post/2010/12/24/Search-and-Download-International-Terminology-Microsoft-Language-Portal.aspx
 11 http://www.microsoft.com/language/zh-tw/default.aspx
 12 Microsoft | 語言入口網站
 13 */
 14 
 15 if (typeof CeL === 'function'){
 16 
 17 /**
 18  * 本 module 之 name(id),<span style="text-decoration:line-through;">不設定時會從呼叫時之 path 取得</span>。
 19  * @type	String
 20  * @constant
 21  * @inner
 22  * @ignore
 23  */
 24 var module_name = 'locale';
 25 
 26 //===================================================
 27 /**
 28  * 若欲 include 整個 module 時,需囊括之 code。
 29  * @type	Function
 30  * @param	{Function} library_namespace	namespace of library
 31  * @param	load_arguments	呼叫時之 argument(s)
 32  * @return
 33  * @name	CeL.locale
 34  * @constant
 35  * @inner
 36  * @ignore
 37  */
 38 var code_for_including = function(library_namespace, load_arguments) {
 39 
 40 
 41 /**
 42  * null module constructor
 43  * @class	locale 的 functions
 44  */
 45 CeL.locale
 46 = function() {
 47 	//	null module constructor
 48 };
 49 
 50 /**
 51  * for JSDT: 有 prototype 才會將之當作 Class
 52  */
 53 CeL.locale
 54 .prototype = {
 55 };
 56 
 57 
 58 
 59 
 60 
 61 //	i18n系列	==================
 62 
 63 /*	setup message of various languages for i18n (internationalization)
 64 var languagesMessage={},defaultLanguage,useLanguage,languageAlias;
 65 setObjValue('languageAlias','en_US=en_US,en=en_US,English=en_US,zh_TW=zh_TW,zh=zh_TW,tw=zh_TW,中文=zh_TW,Chinese=zh_TW,日本語=ja_JP,Japanese=ja_JP,ja_JP=ja_JP,ja=ja_JP,jp=ja_JP');
 66 */
 67 //getLanguageAlias[generateCode.dLK]='languageAlias,existLanguageAlias';
 68 function getLanguageAlias(language){
 69  if(existLanguageAlias(language))language=languageAlias[language];
 70  return language;
 71 }
 72 
 73 //existLanguageAlias[generateCode.dLK]='languageAlias';
 74 function existLanguageAlias(language){
 75  return language in languageAlias;
 76 }
 77 
 78 //	(language, if you want to setup defaultLanguage as well)
 79 //setLanguage[generateCode.dLK]='getLanguageAlias,defaultLanguage,useLanguage';
 80 function setLanguage(language,mode){
 81  language=getLanguageAlias(language);
 82  if(mode)defaultLanguage=language;
 83  else useLanguage=language;
 84  return useLanguage;
 85 }
 86 
 87 //	setMessage(messageIndex1,[local,message],[local,message],messageIndex2,[local,message],[local,message],..)
 88 //setMessage[generateCode.dLK]='languagesMessage,defaultLanguage,getLanguageAlias';
 89 function setMessage(){
 90  //if(!defaultLanguage)defaultLanguage='en_US';
 91  //	n.preference('intl.charset.default')	http://chaichan.hp.infoseek.co.jp/qa3500/qa3803.htm	http://articles.techrepublic.com.com/5100-22-5069931.html
 92  //	http://forum.mozilla.gr.jp/?mode=al2&namber=5608&rev=&&KLOG=39
 93  //	navigator.language=general.useragent.locale @ about:config
 94  //	var n=window.navigator;netscape.security.PrivilegeManager.enablePrivilege('UniversalPreferencesRead');setLanguage((n.browserLanguage||(n.preference&&n.preference('intl.accept_languages')?n.preference('intl.accept_languages').split(',')[0]:n.language?n.language.replace(/-/,'_'):'')));
 95  if(typeof languagesMessage!='object')languagesMessage={};
 96  var i=0,msgNow,language,msg;
 97  for(;i<arguments.length;i++){
 98   msg=arguments[i];
 99   //alert(typeof msg+','+msg.constructor+','+msg);
100   if(typeof msg=='string')msgNow=msg;
101   else if(msg instanceof Array){
102    language=msg[0],msg=msg[1];
103    //alert(language+','+msg);
104    if(language==defaultLanguage||!language)msgNow=msg;
105    else if(msgNow){
106     language=getLanguageAlias(language);
107     if(typeof languagesMessage[language]!='object')languagesMessage[language]={};
108     //alert('['+language+']['+msgNow+']='+msg);
109     languagesMessage[language][msgNow]=msg;
110    }
111   }
112  }
113 }
114 
115 //getMessage[generateCode.dLK]='languagesMessage,useLanguage,getLanguageAlias';
116 function getMessage(message,language){
117  language=getLanguageAlias(language);
118  try{
119   //alert(languagesMessage[language||useLanguage]);
120   return languagesMessage[language||useLanguage][message]||message;
121  }catch(e){return message;}
122 }
123 
124 
125 //	↑i18n系列	==================
126 
127 
128 
129 
130 
131 
132 return (
133 	CeL.locale
134 );
135 };
136 
137 //===================================================
138 
139 CeL.setup_module(module_name, code_for_including);
140 
141 };
142