      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 CeL.setup_module('application.locale',
     17 function(library_namespace, load_arguments) {
     18
     19
     20 //	nothing required
     21
     22
     23
     24
     25
     26 /**
     27  * null module constructor
     28  * @class	locale 的 functions
     29  */
     30 CeL.application.locale
     31 = function() {
     32 	//	null module constructor
     33 };
     34
     35 /**
     36  * for JSDT: 有 prototype 才會將之當作 Class
     37  */
     38 CeL.application.locale
     39 .prototype = {
     40 };
     41
     42
     43
     44
     45
     46 //	i18n系列	==================
     47
     48 /*	setup message of various languages for i18n (internationalization)
     49 var languagesMessage={},defaultLanguage,useLanguage,languageAlias;
     50 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');
     51 */
     52 //get_language_alias[generateCode.dLK]='languageAlias,existLanguageAlias';
     53 function get_language_alias(language) {
     54 	if (existLanguageAlias(language))
     55 		language = languageAlias[language];
     56 	return language;
     57 }
     58
     59 //existLanguageAlias[generateCode.dLK]='languageAlias';
     60 function existLanguageAlias(language) {
     61 	return language && language in languageAlias;
     62 }
     63
     64 //	(language, if you want to setup defaultLanguage as well)
     65 //set_language[generateCode.dLK]='get_language_alias,defaultLanguage,useLanguage';
     66 function set_language(language, mode) {
     67 	language = get_language_alias(language);
     68 	if (mode)
     69 		defaultLanguage = language;
     70 	else
     71 		useLanguage = language;
     72 	return useLanguage;
     73 }
     74
     75 //	setMessage(messageIndex1,[local,message],[local,message],messageIndex2,[local,message],[local,message],..)
     76 //setMessage[generateCode.dLK]='languagesMessage,defaultLanguage,get_language_alias';
     77 function setMessage(){
     78  //if(!defaultLanguage)defaultLanguage='en_US';
     79  //	n.preference('intl.charset.default')	http://chaichan.hp.infoseek.co.jp/qa3500/qa3803.htm	http://articles.techrepublic.com.com/5100-22-5069931.html
     80  //	http://forum.mozilla.gr.jp/?mode=al2&namber=5608&rev=&&KLOG=39
     81  //	navigator.language=general.useragent.locale @ about:config
     82  //	var n=window.navigator;netscape.security.PrivilegeManager.enablePrivilege('UniversalPreferencesRead');set_language((n.browserLanguage||(n.preference&&n.preference('intl.accept_languages')?n.preference('intl.accept_languages').split(',')[0]:n.language?n.language.replace(/-/,'_'):'')));
     83  if(typeof languagesMessage!='object')languagesMessage={};
     84  var i=0,msgNow,language,msg;
     85  for(;i<arguments.length;i++){
     86   msg=arguments[i];
     87   //alert(typeof msg+','+msg.constructor+','+msg);
     88   if(typeof msg=='string')msgNow=msg;
     89   else if(msg instanceof Array){
     90    language=msg[0],msg=msg[1];
     91    //alert(language+','+msg);
     92    if(language==defaultLanguage||!language)msgNow=msg;
     93    else if(msgNow){
     94     language=get_language_alias(language);
     95     if(typeof languagesMessage[language]!='object')languagesMessage[language]={};
     96     //alert('['+language+']['+msgNow+']='+msg);
     97     languagesMessage[language][msgNow]=msg;
     98    }
     99   }
    100  }
    101 }
    102
    103 //get_local_message[generateCode.dLK]='languagesMessage,useLanguage,get_language_alias';
    104 function get_local_message(message, language) {
    105 	language = get_language_alias(language);
    106 	try {
    107 		// alert(languagesMessage[language||useLanguage]);
    108 		return languagesMessage[language || useLanguage][message]
    109 		|| message;
    110 	} catch (e) {
    111 		return message;
    112 	}
    113 }
    114
    115
    116 //	↑i18n系列	==================
    117
    118
    119
    120
    121
    122 return (
    123 	CeL.application.locale
    124 );
    125 }
    126
    127
    128 );
    129
    130