Changeset 38705

Show
Ignore:
Timestamp:
12/05/10 17:39:53 (3 years ago)
Author:
NeoCat
Message:

Add multi-language resource

  • add Japanese resources
Location:
websites/twicli
Files:
1 added
11 modified

Legend:

Unmodified
Added
Removed
  • websites/twicli/plugins/favotter.js

    r38624 r38705  
     1langResources['Favotter / new'] =       ['ふぁぼったー / 新着']; 
     2langResources['Favotter / tweet'] =     ['ふぁぼったー / ツイート']; 
     3langResources['Favotter / fav'] =       ['ふぁぼったー / ふぁぼり']; 
     4 
    15var twFavPlugin = { 
    26        fav_update: null, 
     
    4448a.target = 'favotter'; 
    4549a.id = 'favotter_link_user'; 
    46 a.innerHTML = 'Favotter / New'; 
     50a.innerHTML = _('Favotter / new'); 
    4751$('popup').appendChild(a) 
    4852 
     
    5054a.target = 'favotter'; 
    5155a.id = 'favotter_link_status'; 
    52 a.innerHTML = 'Favotter / Status'; 
     56a.innerHTML = _('Favotter / tweet'); 
    5357$('popup').appendChild(a) 
    5458 
     
    5660a.target = 'favotter'; 
    5761a.id = 'favotter_link_fav'; 
    58 a.innerHTML = 'Favotter / fav'; 
     62a.innerHTML = _('Favotter / fav'); 
    5963$('popup').appendChild(a) 
    6064 
  • websites/twicli/plugins/followers.js

    r38666 r38705  
     1langResources['Color followers'] =      ['フォロワーを色付け']; 
     2langResources['Tweets coloring'] =      ['ツイートが次のように色付けされます']; 
     3langResources['follower: black  non-follower: blue'] =  ['フォロワー: 黒 非フォロワー: 青']; 
     4 
    15var followers_ids_list = (readCookie('followers_ids') || ''); 
    26followers_ids_list = followers_ids_list != '' ? followers_ids_list.split(',') : []; 
     
    812        miscTab: function(ele) { 
    913                var e = document.createElement("div"); 
    10                 e.innerHTML = '<form onSubmit="twfcFollwersIDsRenew(); return false;">Color followers: <span id="followers_status">'+(followers_ids_list.length?"on("+followers_ids_list.length+")":"off")+'</span> <input type="submit" value="Renew"><input type="button" onClick="twfcFollwersIDsClear()" value="Off"> <a href="javascript:alert(\'Status Coloring:\\n  follower: black  non-follower: blue\')">[?]</a></form>'; 
     14                e.innerHTML = '<form onSubmit="twfcFollwersIDsRenew(); return false;">'+_('Color followers')+': <span id="followers_status">'+(followers_ids_list.length?"on("+followers_ids_list.length+")":"off")+'</span> <input type="submit" value="Renew"><input type="button" onClick="twfcFollwersIDsClear()" value="Off"> <a href="javascript:alert(\''+_('Tweets coloring')+':\\n  '+_('follower: black  non-follower: blue')+'\')">[?]</a></form>'; 
    1115                ele.appendChild(e); 
    1216                var hr = document.createElement("hr"); 
  • websites/twicli/plugins/lists.js

    r38197 r38705  
     1langResources['Add'] =  ['追加']; 
     2langResources['get all tweets'] =       ['全ツイートを取得']; 
     3langResources['Please specify a list like "@user/list".'] =     ['リストを"@user/list"の形式で指定して下さい。']; 
     4langResources['Lists'] =        ['リスト']; 
     5langResources['subscribing lists by twicli'] =  ['twicliで購読中のリスト']; 
     6langResources['Initialization failed; regexp.js may not be loaded.'] =  ['初期化に失敗しました。regexp.jsがロードされていないようです。']; 
     7 
     8 
    19var last_list = ['','']; 
    210var twl_page = 0; 
     
    3240function twlSubscribeList(name) { 
    3341        if (name.indexOf('/') < 0) 
    34                 return alert('Please specify a list like "@user/list"'); 
     42                return alert(_('Please specify a list like "@user/list".')); 
    3543        if (name[0] == "@") name = name.substr(1); 
    3644        for (var i = 0; i < lists_to_get.length; i++) // avoid duplication 
     
    138146        } else if (!init_failed) { 
    139147                init_failed = true; 
    140                 alert("lists.js: Initialization failed; regexp.js may not be loaded."); 
     148                alert('lists.js: '+_('Initialization failed; regexp.js may not be loaded.')); 
    141149        } 
    142150        twlUpdateMisc(); 
     
    171179        miscTab: function(ele) { 
    172180                var e = document.createElement("div"); 
    173                 e.innerHTML = '<a href="javascript:var s = $(\'lists_pref\').style; s.display = s.display==\'block\'?\'none\':\'block\';void(0)"><b>▼Lists</b></a>' + 
     181                e.innerHTML = '<a href="javascript:var s = $(\'lists_pref\').style; s.display = s.display==\'block\'?\'none\':\'block\';void(0)"><b>▼'+_('Lists')+'</b></a>' + 
    174182                        '<form id="lists_pref" style="display:none" onSubmit="twlSubscribeList($(\'newList\').value); return false;">' + 
    175                         'subscribing lists by twicli:<ul id="lists_list">' + 
     183                        _('subscribing lists by twicli')+':<ul id="lists_list">' + 
    176184                        '</ul><ul><li><input type="text" size="15" id="newList" value="">' + 
    177                         '<input type="submit" value="Add"></li></ul></form>'; 
     185                        '<input type="submit" value="'+_('Add')+'"></li></ul></form>'; 
    178186                $("pref").appendChild(e); 
    179187                twlUpdateMisc(); 
     
    185193                if (!tab.info || tab.info.indexOf('list#') != 0) return; 
    186194                var a = tab.info.substr(5); 
    187                 $('tw2h').innerHTML = '<div style="background-color: #ccc; text-align: right"><a style="size: small; color: green" href="javascript:void(twlGetListStatus(\''+a+'\'))">get all tweets</a></div>'; 
     195                $('tw2h').innerHTML = '<div style="background-color: #ccc; text-align: right"><a style="size: small; color: green" href="javascript:void(twlGetListStatus(\''+a+'\'))">'+_('get all tweets')+'</a></div>'; 
    188196        } 
    189197}); 
  • websites/twicli/plugins/regexp.js

    r38051 r38705  
     1langResources['remove tab'] =   ['タブを閉じる']; 
     2langResources['Are you sure to close this tab?'] =      ['このタブを閉じてもよろしいですか?']; 
     3langResources['Pickup Pattern'] =       ['抽出条件']; 
     4langResources['(TabName:ID:Tweet:TLFilter)'] =  ['(タブ名:ユーザID:ツイート:TL非表示)']; 
     5langResources['Apply'] =        ['適用']; 
     6langResources['Pickup this user'] =     ['このユーザを抽出']; 
     7 
     8 
    19var pickup_regexp = readCookie('pickup_regexp') || ''; 
    210var pickup_regexp_ex = ''; // 他プラグインからの検索条件 
     
    1725        switchTo(tab.id); 
    1826        if (!tab.no_close) 
    19                 $('tw2h').innerHTML = '<div style="background-color: #ccc; text-align: right"><a style="size: small; color: red" href="javascript:closeRegexp(\''+tab.name+'\')">[x] remove tab</a></div>'; 
     27                $('tw2h').innerHTML = '<div style="background-color: #ccc; text-align: right"><a style="size: small; color: red" href="javascript:closeRegexp(\''+tab.name+'\')">[x] '+_('remove tab')+'</a></div>'; 
    2028        // メインTLから該当する発言を抽出 
    2129        var tl = $('tw').childNodes; 
     
    5058// タブを削除 
    5159function closeRegexp(tab) { 
    52         if (!confirm("Are you sure to close this tab?")) return; 
     60        if (!confirm(_('Are you sure to close this tab?'))) return; 
    5361        var list = pickup_regexp.split(/[\r\n]/); 
    5462        var list2 = []; 
     
    108116        miscTab: function(ele) { 
    109117                var e = document.createElement("div"); 
    110                 e.innerHTML = 'Pickup Pattern <small>(TabName:ID:Status:TLFilter)</small> : <br><form onSubmit="setRegexp($(\'pickup_regexp\').value); return false;"><textarea cols="30" rows="4" id="pickup_regexp">' + pickup_regexp + '</textarea><br><input type="submit" value="Apply"></form>'; 
     118                e.innerHTML = _('Pickup Pattern')+' <small>'+_('(TabName:ID:Tweet:TLFilter)')+'</small> : <br><form onSubmit="setRegexp($(\'pickup_regexp\').value); return false;"><textarea cols="30" rows="4" id="pickup_regexp">' + pickup_regexp + '</textarea><br><input type="submit" value="'+_('Apply')+'"></form>'; 
    111119                ele.appendChild(e); 
    112120                var hr = document.createElement("hr"); 
     
    153161a.target = 'twitter'; 
    154162a.id = 'regexp_add_ID'; 
    155 a.innerHTML = 'Pickup this user'; 
     163a.innerHTML = _('Pickup this user'); 
    156164a.href = '#'; 
    157165a.onclick = function() { addIDRegexp(popup_user, popup_id); return false; } 
  • websites/twicli/plugins/search.js

    r38518 r38705  
     1langResources['Twitter search'] =       ['Twitter検索']; 
     2 
     3 
    14var tws_page = 0; 
    25var tws_rpp = 50; /* results per page */ 
     
    9598        miscTab: function(ele) { 
    9699                var e = document.createElement("div"); 
    97                 e.innerHTML = '<form onSubmit="return twsSearch($(\'search_q\').value);">Twitter search : <input type="text" size="15" id="search_q"><input type="image" src="images/go.png"></form>'; 
     100                e.innerHTML = '<form onSubmit="return twsSearch($(\'search_q\').value);"><a href="http://search.twitter.com/" target="_blank">'+_('Twitter search')+'</a> : <input type="text" size="15" id="search_q"><input type="image" src="images/go.png"></form>'; 
    98101                ele.appendChild(e); 
    99102                var hr = document.createElement("hr"); 
  • websites/twicli/plugins/search2.js

    r38051 r38705  
     1langResources['Twitter search (yats)'] =        ['Twitter検索(yats)']; 
     2 
    13var test_n = 0; 
    24var twsj_page = 0; 
     
    3335        miscTab: function(ele) { 
    3436                var e = document.createElement("div"); 
    35                 e.innerHTML = '<form onSubmit="twsjSearch($(\'searchj_q\').value); return false;"><a target="twitter" href="http://pcod.no-ip.org/yats/">Twitter search (yats)</a>: <input type="text" size="15" id="searchj_q"><input type="image" src="images/go.png"></form>'; 
     37                e.innerHTML = '<form onSubmit="twsjSearch($(\'searchj_q\').value); return false;"><a target="twitter" href="http://pcod.no-ip.org/yats/">'+_('Twitter search (yats)')+'</a>: <input type="text" size="15" id="searchj_q"><input type="image" src="images/go.png"></form>'; 
    3638                ele.appendChild(e); 
    3739                var hr = document.createElement("hr"); 
  • websites/twicli/plugins/sound.js

    r38175 r38705  
     1langResources['Sound'] =        ['音']; 
     2langResources['on TL update'] = ['TL新着音']; 
     3langResources['on new Reply'] = ['@新着音']; 
     4 
    15var twsd_html5 = twsd_mp3 = true; 
    26try { 
     
    1620        miscTab: function(ele) { 
    1721                var e = document.createElement("div"); 
    18                 e.innerHTML = '<a href="javascript:var s = $(\'sound_pref\').style; s.display = s.display==\'block\'?\'none\':\'block\';void(0)"><b>▼Sound</b></a>' + 
     22                e.innerHTML = '<a href="javascript:var s = $(\'sound_pref\').style; s.display = s.display==\'block\'?\'none\':\'block\';void(0)"><b>▼'+_('Sound')+'</b></a>' + 
    1923                        '<form id="sound_pref" style="display:none" onSubmit="setSoundNames([$(\'sound0\').value,$(\'sound1\').value]); return false;">' + 
    20                         'on TL update: <input type="text" size="15" id="sound0" value="'+sound_name[0]+'"><br>' + 
    21                         'on new Reply: <input type="text" size="15" id="sound1" value="'+sound_name[1]+'"><br>' + 
     24                        _('on TL update')+': <input type="text" size="15" id="sound0" value="'+sound_name[0]+'"><br>' + 
     25                        _('on new Reply')+': <input type="text" size="15" id="sound1" value="'+sound_name[1]+'"><br>' + 
    2226                        '<input type="submit" value="Apply"></form>'; 
    2327                $("pref").appendChild(e); 
  • websites/twicli/plugins/ssl.js

    r38051 r38705  
    1 twitterURL = 'https://twitter.com/'; 
     1//twitterURL = 'https://twitter.com/'; 
    22twitterAPI = 'https://api.twitter.com/1/'; 
  • websites/twicli/plugins/translate.js

    r38051 r38705  
     1langResources['Translate'] =    ['翻訳']; 
     2langResources['translate language'] =   ['翻訳先の言語']; 
     3langResources['Choose "translate" from ▼ to translate the tweet.'] =    ['翻訳するにはツイートの▼メニューから"翻訳"を選んで下さい。']; 
     4 
     5 
    16var translateLang = readCookie("lang") || "ja"; 
    27function setTranslateLang(lang) { 
    38        translateLang = lang; 
    49        writeCookie("lang", lang, 3652); 
    5         alert("Choose \"translate\" from ▼ to translate tweet into " + lang + "."); 
     10        alert(_('Choose "translate" from ▼ to translate the tweet.')); 
    611} 
    712 
     
    914        miscTab: function(ele) { 
    1015                var e = document.createElement("div"); 
    11                 e.innerHTML = '<a href="javascript:var s = $(\'translate_pref\').style; s.display = s.display==\'block\'?\'none\':\'block\';void(0)"><b>▼Translate</b></a>' + 
     16                e.innerHTML = '<a href="javascript:var s = $(\'translate_pref\').style; s.display = s.display==\'block\'?\'none\':\'block\';void(0)"><b>▼'+_('Translate')+'</b></a>' + 
    1217                        '<form id="translate_pref" style="display:none" onSubmit="setTranslateLang($(\'translateLang\').value); return false;">' + 
    13                         'translate language: <input type="text" size="15" id="translateLang" value="'+translateLang+'">' + 
     18                        _('translate language')+': <input type="text" size="15" id="translateLang" value="'+translateLang+'">' + 
    1419                        '<input type="image" src="images/go.png"></form>'; 
    1520                $("pref").appendChild(e); 
     
    4954a = document.createElement('a'); 
    5055a.id = 'translate_status'; 
    51 a.innerHTML = 'Translate'; 
     56a.innerHTML = _('Translate'); 
    5257$('popup').appendChild(a) 
  • websites/twicli/twicli.html

    r38635 r38705  
    1414<script type="text/javascript" src="oauth/oauth.js"></script> 
    1515<script type="text/javascript" src="oauth/consumer.js"></script> 
     16<script type="text/javascript" src="lang.js"></script> 
    1617<script type="text/javascript" src="twicli.js"></script> 
    1718</head> 
     
    4445<div id="option"></div> 
    4546<!--メニュー--> 
    46 <div id="menu"><div id='menu2'><a id="TL" class="sel" href="javascript:void switchTL()">TL</a><a id="reply" href="javascript:void switchReply()">Re</a><a id="user" href="javascript:void switchUser()">user</a><a id="direct" href="javascript:void switchDirect()">D</a><a id="misc" href="javascript:void switchMisc()">+</a></div></div> 
     47<div id="menu"><div id='menu2'><a id="TL" class="sel" href="javascript:void switchTL()">TL</a><a id="reply" href="javascript:void switchReply()">@</a><a id="user" href="javascript:void switchUser()">user</a><a id="direct" href="javascript:void switchDirect()">D</a><a id="misc" href="javascript:void switchMisc()">+</a></div></div> 
    4748</div> 
    4849<!--メインタイムライン--> 
     
    5758<!--ポップアップメニュー--> 
    5859<div id="popup" onClick="popup_hide()"> 
    59 <a id="popup_link_user" href="" target="twitter">Twitter / User</a> 
    60 <a id="popup_link_status" href="" target="twitter">Twitter / Status</a> 
    61 <a id="popup_status_delete" href="#" onClick="return deleteStatus()">Delete Status</a> 
     60<a id="popup_status_delete" href="#" onClick="return deleteStatus()">Delete tweet</a> 
    6261<a id="popup_status_retweet" href="#" onClick="return retweetStatus()">Retweet</a> 
    6362<a id="popup_status_quote" href="#" onClick="return quoteStatus()">Quote with RT:</a> 
     63<a id="popup_link_user" href="" target="twitter">Twitter / user</a> 
     64<a id="popup_link_status" href="" target="twitter">Twitter / tweet</a> 
    6465</div> 
    6566<!--ポップアップメニュー非表示用--> 
  • websites/twicli/twicli.js

    r38686 r38705  
    77        ele.innerHTML = s; 
    88        return ele.firstChild.nodeValue; 
     9} 
     10// 言語リソースをルックアップ 
     11var browserLang = navigator.browserLanguage || navigator.language || navigator.userLanguage; 
     12browserLang = browserLang ? browserLang.split('-')[0] : 'en'; 
     13var lang; 
     14for (lang = 0; lang < langList.length; lang++) 
     15        if (langList[lang] == browserLang) break; 
     16function _(key) { 
     17        if (!langResources[key]) 
     18                alert("no langResource\n\n"+key); 
     19        else 
     20                key = langResources[key][lang] || key; 
     21        var args = arguments; 
     22        return key.replace(/\$(\d+)/, function(x,n){ return args[parseInt(n)] }); 
    923} 
    1024// フォームをシリアライズ 
     
    354368 
    355369function logout() { 
    356         if (!confirm('Are you sure to logout? You need to re-authenticate twicli at next launch.')) 
     370        if (!confirm(_('Are you sure to logout? You need to re-authenticate twicli at next launch.'))) 
    357371                return; 
    358372        deleteCookie('access_token'); 
     
    388402        } 
    389403        if (st.value.length + footer.length > 140) { 
    390                 alert("This tweet is too long."); 
     404                alert(_("This tweet is too long.")); 
    391405                return false; 
    392406        } 
     
    553567                switchUser(user_pick1 + "," + user_pick2); 
    554568} 
     569// ポップアップメニューの初期化 
     570function popup_init() { 
     571        var popup_id_list = ['popup_link_user', 'popup_link_status', 'popup_status_delete', 
     572                                                'popup_status_retweet', 'popup_status_quote']; 
     573        for (var x = 0; x < popup_id_list.length; x++) 
     574                $(popup_id_list[x]).innerHTML = _($(popup_id_list[x]).innerHTML); 
     575} 
    555576// ポップアップメニューを表示 
    556577function popup_menu(user, id, ele) { 
     
    584605                return false; 
    585606        } 
    586         if (!confirm("Retweet to your followers?")) return false; 
     607        if (!confirm(_("Retweet to your followers?"))) return false; 
    587608        $("loading").style.display = "block"; 
    588609        var target_ele = popup_ele; 
     
    599620function quoteStatus() { 
    600621        if (!popup_id) return false; 
    601         if ($('lock-' + popup_id) && !confirm("This tweet is protected; Are you sure to retweet?")) return false; 
     622        if ($('lock-' + popup_id) && !confirm(_("This tweet is protected; Are you sure to retweet?"))) return false; 
    602623        var tw = !display_as_rt && popup_ele.tw.retweeted_status || popup_ele.tw; 
    603624        $('fst').value = "RT @"+popup_user+": " + charRef(tw.text); 
     
    608629function deleteStatus() { 
    609630        if (!popup_id) return false; 
    610         if (!confirm("Are you sure to delete this tweet (@"+popup_user+" / "+popup_id+")?")) return false; 
     631        if (!confirm(_('Are you sure to delete this tweet?')+" (@"+popup_user+" / "+popup_id+")")) return false; 
    611632        $("loading").style.display = "block"; 
    612633        if ($("text" + popup_id)) $("text" + popup_id).style.textDecoration = "line-through"; 
     
    701722                        (user.protected ? '<img alt="lock" src="http://assets0.twitter.com/images/icon_lock.gif">' : '') + 
    702723                        '<b>' + user.screen_name + '</b> / <b>' + user.name + '</b></div>' + 
    703                         (user.location ? '<div><b>Location</b>: ' + user.location + '</div>' : '') + 
    704                         (user.url ? '<div><b>URL</b>: <a target="_blank" href="' + user.url + '" onclick="return link(this);">' + user.url + '</a></div>' : '') + 
     724                        (user.location ? '<div><b>'+_('Location')+'</b>: ' + user.location + '</div>' : '') + 
     725                        (user.url ? '<div><b>'+_('URL')+'</b>: <a target="_blank" href="' + user.url + '" onclick="return link(this);">' + user.url + '</a></div>' : '') + 
    705726                        '<div>' + (user.description ? user.description : '<br>') + 
    706                         '</div><b><a href="javascript:switchFollowing()">' + user.friends_count + '<small>following</small></a> / ' +  
    707                                                 '<a href="javascript:switchFollower()">' + user.followers_count + '<small>followers</small></a>' + 
    708                         '<br><a href="javascript:switchStatus()">' + user.statuses_count + '<small>updates</small></a> / ' + 
    709                                                 '<a href="javascript:switchFav()">' + user.favourites_count + '<small>favs</small></a></b>' + 
     727                        '</div><b><a href="javascript:switchFollowing()">' + user.friends_count + '<small>'+_('following')+'</small></a> / ' +  
     728                                                '<a href="javascript:switchFollower()">' + user.followers_count + '<small>'+_('followers')+'</small></a>' + 
     729                        '<br><a href="javascript:switchStatus()">' + user.statuses_count + '<small>'+_('tweets')+'</small></a> / ' + 
     730                                                '<a href="javascript:switchFav()">' + user.favourites_count + '<small>'+_('favs')+'</small></a></b>' + 
    710731                        '</td></tr></table><a target="twitter" href="' + twitterURL + user.screen_name + '">[Twitter]</a> ' 
    711732} 
     
    738759// followとremove 
    739760function follow(f) { 
    740         if (!f && !confirm("Are you sure to remove " + last_user + "?")) return; 
     761        if (!f && !confirm(_("Are you sure to remove $1?", last_user))) return; 
    741762        enqueuePost(twitterAPI + 'friendships/' + (f ? 'create' : 'destroy') + '/' + last_user + '.xml', switchUser); 
    742763        $("loading").style.display = "block"; 
     
    808829function twLimit(lim) { 
    809830        $("loading").style.display = "none"; 
    810         $("tw2c").innerHTML = "<b>Twitter API status:</b><br>" + 
    811                                         "hourly limit : " + lim.remaining_hits + " / " + lim.hourly_limit + "<br>" + 
    812                                         "reset at : " + dateFmt(lim.reset_time); 
     831        $("tw2c").innerHTML = '<b>'+_('Twitter API status')+':</b><br>' + 
     832                                        _('hourly limit')+' : ' + lim.remaining_hits + ' / ' + lim.hourly_limit + "<br>" + 
     833                                        _('reset at')+' : ' + dateFmt(lim.reset_time); 
    813834} 
    814835function twLimit2(lim) { 
     
    11781199        $("tw2h").innerHTML = '<br><a target="twitter" href="index.html"><b>twicli</b></a> : A browser-based Twitter client<br><small>Copyright &copy; 2008-2010 NeoCat</small><hr class="spacer">' + 
    11791200                                        '<form onSubmit="switchUser($(\'user_id\').value); return false;">'+ 
    1180                                         'show user info : @<input type="text" size="15" id="user_id" value="' + myname + '"><input type="image" src="images/go.png"></form>' + 
    1181                                         '<a href="javascript:logout()"><b>Log out</b></a><hr class="spacer">' + 
    1182                                         '<div id="pref"><a href="javascript:togglePreps()">▼<b>Preferences</b></a>' + 
     1201                                        _('show user info')+' : @<input type="text" size="15" id="user_id" value="' + myname + '"><input type="image" src="images/go.png"></form>' + 
     1202                                        '<a href="javascript:logout()"><b>'+_('Log out')+'</b></a><hr class="spacer">' + 
     1203                                        '<div id="pref"><a href="javascript:togglePreps()">▼<b>'+_('Preferences')+'</b></a>' + 
    11831204                                        '<form id="preps" onSubmit="setPreps(this); return false;" style="display: none;">' + 
    1184                                         'max #msgs in TL: <input name="limit" size="5" value="' + nr_limit + '"><br>' + 
    1185                                         '#msgs in TL on update (max=200): <input name="maxc" size="3" value="' + max_count + '"><br>' + 
    1186                                         '#msgs in user on update (max=200): <input name="maxu" size="3" value="' + max_count_u + '"><br>' + 
    1187                                         'update interval: <input name="interval" size="3" value="' + updateInterval + '"> sec<br>' + 
    1188                                         '<input type="checkbox" name="auto_update"' + (auto_update?" checked":"") + '>Update after post<br>' + 
    1189                                         '<input type="checkbox" name="since_check"' + (no_since_id?"":" checked") + '>since_id check<br>' + 
    1190                                         '<input type="checkbox" name="replies_in_tl"' + (replies_in_tl?" checked":"") + '>Show not-following replies in TL<br>' + 
    1191                                         '<input type="checkbox" name="display_as_rt"' + (display_as_rt?" checked":"") + '>Show retweets in "RT:" form<br>' + 
    1192                                         '<input type="checkbox" name="counter"' + (no_counter?"":" checked") + '>Post length counter<br>' + 
    1193                                         '<input type="checkbox" name="resize_fst"' + (no_resize_fst?"":" checked") + '>Auto-resize field<br>' + 
    1194                                         '<input type="checkbox" name="decr_enter"' + (decr_enter?" checked":"") + '>Post with ctrl/shift+enter<br>' + 
    1195                                         '<input type="checkbox" name="geotag"' + (no_geotag?"":" checked") + '>Enable GeoTagging<br>' + 
    1196                                         'Footer: <input name="footer" size="10" value="' + footer + '"><br>' + 
    1197                                         'Plugins:<br><textarea cols="30" rows="4" name="list">' + pluginstr + '</textarea><br>' + 
    1198                                         'user stylesheet:<br><textarea cols="30" rows="4" name="user_style">' + user_style + '</textarea><br>' + 
     1205                                        _('max #msgs in TL')+': <input name="limit" size="5" value="' + nr_limit + '"><br>' + 
     1206                                        _('#msgs in TL on update (max=200)')+': <input name="maxc" size="3" value="' + max_count + '"><br>' + 
     1207                                        _('#msgs in user on update (max=200)')+': <input name="maxu" size="3" value="' + max_count_u + '"><br>' + 
     1208                                        _('update interval')+': <input name="interval" size="3" value="' + updateInterval + '"> sec<br>' + 
     1209                                        '<input type="checkbox" name="auto_update"' + (auto_update?" checked":"") + '>'+_('Update after post')+'<br>' + 
     1210                                        '<input type="checkbox" name="since_check"' + (no_since_id?"":" checked") + '>'+_('since_id check')+'<br>' + 
     1211                                        '<input type="checkbox" name="replies_in_tl"' + (replies_in_tl?" checked":"") + '>'+_('Show not-following replies in TL')+'<br>' + 
     1212                                        '<input type="checkbox" name="display_as_rt"' + (display_as_rt?" checked":"") + '>'+_('Show retweets in "RT:" form')+'<br>' + 
     1213                                        '<input type="checkbox" name="counter"' + (no_counter?"":" checked") + '>'+_('Post length counter')+'<br>' + 
     1214                                        '<input type="checkbox" name="resize_fst"' + (no_resize_fst?"":" checked") + '>'+_('Auto-resize field')+'<br>' + 
     1215                                        '<input type="checkbox" name="decr_enter"' + (decr_enter?" checked":"") + '>'+_('Post with ctrl/shift+enter')+'<br>' + 
     1216                                        '<input type="checkbox" name="geotag"' + (no_geotag?"":" checked") + '>'+_('Enable GeoTagging')+'<br>' + 
     1217                                        _('Footer')+': <input name="footer" size="20" value="' + footer + '"><br>' + 
     1218                                        _('Plugins')+':<br><textarea cols="30" rows="4" name="list">' + pluginstr + '</textarea><br>' + 
     1219                                        _('user stylesheet')+':<br><textarea cols="30" rows="4" name="user_style">' + user_style + '</textarea><br>' + 
    11991220                                        '<input type="submit" value="Save"></form></div><hr class="spacer">'; 
    12001221        callPlugins("miscTab", $("tw2h")); 
    12011222        $("loading").style.display = "block"; 
    12021223        if (ratelimit_reset_time && new Date < ratelimit_reset_time) 
    1203                 $("tw2c").innerHTML = "<b>Twitter API status:</b><br>" + 
    1204                                         "hourly limit : 0<br>reset at : " + dateFmt(ratelimit_reset_time); 
     1224                $("tw2c").innerHTML = '<b>'+_('Twitter API status')+':</b><br>' + 
     1225                                        _('hourly limit')+' : 0<br>'+_('reset at')+': ' + dateFmt(ratelimit_reset_time); 
    12051226        else 
    12061227                update_ele2 = loadXDomainScript(twitterAPI + 'account/rate_limit_status.json' + 
     
    12141235        for (var i = 0; i < ps.length; i++) 
    12151236                if (ps[i].indexOf("/") >= 0) 
    1216                         if (!confirm("An external plugin is specified. This plugin can fully access to your account.\nAre you sure to load this?\n\n" + ps[i])) 
     1237                        if (!confirm(_('An external plugin is specified. This plugin can fully access to your account.\nAre you sure to load this?')+"\n\n" + ps[i])) 
    12171238                                return; 
    12181239         
     
    12481269        writeCookie('user_style', new String(frm.user_style.value), 3652); 
    12491270        callPlugins('savePrefs', frm); 
    1250         alert("Your settings are saved. Please reload to apply plugins and CSS."); 
     1271        alert(_("Your settings are saved. Please reload to apply plugins and CSS.")); 
    12511272} 
    12521273// 初期化 
    12531274function init() { 
     1275        popup_init(); 
    12541276        selected_menu = $("TL"); 
    12551277        setTimeout(function(){scrollTo(0, 1)}, 0); 
     
    12741296                                plugins[i][name].apply(plugins[i], args); 
    12751297                        } catch (e) { 
    1276                                 alert("Plugin error: " + e); 
     1298                                alert(_('Plugin error')+': ' + e); 
    12771299                        } 
    12781300}