Browse Source

Fix controller for gettext

Julien VAUBOURG 9 years ago
parent
commit
285b02fd3f
2 changed files with 44 additions and 60 deletions
  1. 41 53
      sources/config.php
  2. 3 7
      sources/controller.php

+ 41 - 53
sources/config.php

@@ -1,4 +1,3 @@
-
 <?php
 
 /* Wifi Hotspot app for YunoHost 
@@ -19,70 +18,59 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-
-
-// Limonade configuration
+// Framework configuration
 function configure() {
-    option('env', ENV_PRODUCTION);
-    option('debug', false);
-    option('base_uri', '<TPL:NGINX_LOCATION>/');
-    layout("layout.html.php");
-    define('PUBLIC_DIR', '<TPL:NGINX_LOCATION>/public');
-}
-
-// Not found page
-function not_found($errno, $errstr, $errfile=null, $errline=null) {
-    $msg = h(rawurldecode($errstr));
-    return render($msg, 'error_layout.html.php');
+  option('env', ENV_PRODUCTION);
+  option('debug', false);
+  option('base_uri', '<TPL:NGINX_LOCATION>/');
+  layout("layout.html.php");
+  define('PUBLIC_DIR', '<TPL:NGINX_LOCATION>/public');
 }
 
+// Gettext function
 function T_($string) {
-    return gettext($string);
+  return gettext($string);
 }
 
 // Before routing
 function before($route) {
-    $lang_mapping = array(
-       'fr' => 'fr_FR'
-    );
+  $lang_mapping = array(
+    'fr' => 'fr_FR'
+  );
+
+  if(!isset($_SESSION['locale'])) {
+    $locale = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
+    $_SESSION['locale'] = strtolower(substr(chop($locale[0]), 0, 2));
+  }
+
+  $lang = $_SESSION['locale'];
+
+  // Convert simple language code into full language code
+  if(array_key_exists($lang, $lang_mapping)) {
+    $lang = $lang_mapping[$lang];
+  }
+
+  $lang = "$lang.utf8";
+  $textdomain = "localization";
+
+  putenv("LANGUAGE=$lang");
+  putenv("LANG=$lang");
+  putenv("LC_ALL=$lang");
+  putenv("LC_MESSAGES=$lang");
+
+  setlocale(LC_ALL, $lang);
+  setlocale(LC_CTYPE, $lang);
+
+  $locales_dir = dirname(__FILE__).'/i18n';
 
-   /**
-     * * Locale
-     * */
-    if (!isset($_SESSION['locale'])) {
-        $locale = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
-        $_SESSION['locale'] = strtolower(substr(chop($locale[0]),0,2));
-    }
-    $lang = $_SESSION['locale'];
-    // Convert simple language code into full language code
-    if (array_key_exists($lang, $lang_mapping)) {
-        $lang = $lang_mapping[$lang];
-    }
-    $lang = $lang.'.utf8';
-    $textdomain="localization";
+  bindtextdomain($textdomain, $locales_dir);
+  bind_textdomain_codeset($textdomain, 'UTF-8');
+  textdomain($textdomain);
 
-    putenv('LANGUAGE='.$lang);
-    putenv('LANG='.$lang);
-    putenv('LC_ALL='.$lang);
-    putenv('LC_MESSAGES='.$lang);
-    setlocale(LC_ALL,$lang);
-    setlocale(LC_CTYPE,$lang);
-    $locales_dir = dirname(__FILE__).'/i18n';
-    bindtextdomain($textdomain,$locales_dir);
-    bind_textdomain_codeset($textdomain, 'UTF-8');
-    textdomain($textdomain);
-    // Set the $locale variable in template
-    set('locale', $lang);
+  set('locale', $lang);
 }
 
 // After routing
 function after($output, $route) {
-    /*
-    $time = number_format( (float)substr(microtime(), 0, 10) - LIM_START_MICROTIME, 6);
-    $output .= "\n<!-- page rendered in $time sec., on ".date(DATE_RFC822)." -->\n";
-    $output .= "<!-- for route\n";
-    $output .= print_r($route, true);
-    $output .= "-->";
-    */
-    return $output;
+  return $output;
 }

+ 3 - 7
sources/controller.php

@@ -335,18 +335,14 @@ dispatch('/status', function() {
 });
 
 dispatch('/lang/:locale', function($locale = 'en') {
-  switch ($locale) {
+  switch($locale) {
     case 'fr':
       $_SESSION['locale'] = 'fr';
-      break;
+    break;
 
     default:
       $_SESSION['locale'] = 'en';
   }
 
-  if(!empty($_GET['redirect_to'])) {
-    redirect_to($_GET['redirect_to']);
-  } else {
-    redirect_to('/');
-  }
+  redirect_to('/');
 });