/** * Serves the locale Javascript to translate javascript strings. */ public function locale_js() { header('Expires: ' . gmdate('D, d M Y H:i:s ', time() + 432000) . 'GMT'); header('content-type: text/javascript'); $domain = Locale::get_messages(); $domain_json = json_encode($domain); $js = <<<TEEHEE function _t() { var domain = {$domain_json}; var s = arguments[0]; if(domain[s] != undefined) { s = domain[s][1][0]; } for(var i = 1; i <= arguments.length; i++) { r = new RegExp('%' + (i) + '\\\\\$s', 'g'); if(!s.match(r)) { r = new RegExp('%s'); } s = s.replace(r, arguments[i]); } return s; } TEEHEE; echo Plugins::filter('locale_js', $js); }
<?php namespace Habari; if (!defined('HABARI_PATH')) { die('No direct access'); } ?> </div><!-- end wrapper --> <script type="text/javascript"> function _t() { var domain = <?php // retrieve only the translated strings that are used by this page's javascript functions. $messages = array_intersect_key(Locale::get_messages(), array_flip(array("All selected", "%s selected", "None selected"))); echo json_encode($messages); ?> ; var s = arguments[0]; if(domain[s] != undefined) { s = domain[s][1][0]; } for(var i = 1; i <= arguments.length; i++) { r = new RegExp('%' + (i) + '\\\\\$s', 'g'); if(!s.match(r)) { r = new RegExp('%s'); } s = s.replace(r, arguments[i]); } return s;