X-Git-Url: https://git.p6c8.net/jirafeau.git/blobdiff_plain/7061fbc7ccad9696d97f59ef34830f42bfd35b77..06b28c7f3516ae01041edf78a3298c73628322fb:/lib/lang.php

diff --git a/lib/lang.php b/lib/lang.php
index 89f890f..0aec1e4 100644
--- a/lib/lang.php
+++ b/lib/lang.php
@@ -19,8 +19,13 @@
 
  global $languages_list;
  $languages_list = array ('auto' => 'Automatic',
+                          'de' => 'Deutsch',
                           'en' => 'English',
-                          'fr' => 'Français');
+                          'fi' => 'Suomi',
+                          'fr' => 'Français',
+                          'it' => 'Italiano',
+                          'nl' => 'Nederlands',
+                          'ro' => 'Limba română');
 
 /* Translation */
 function t ($text)
@@ -40,18 +45,25 @@ function t ($text)
         if (strcmp ($l, $key) == 0)
             $found = true;
 
-    /* Get translation execpt for english. */
-    if ($found && strcmp ($l, "en"))
-    {
-        /* $tr is defined in this requirement. */
-        require (JIRAFEAU_ROOT . "lib/lang/lang_$l.php");
-
-        foreach ($tr as $o => $t)
-            if (strcmp ($text, $o) == 0)
-                return "$t";
-    }
-    /* Return original text if no translation is found or already in english. */
-    return ($text);
+    /* Don't translate english. */
+    if (!($found && strcmp ($l, "en")))
+        return $text;
+
+    /* Open translation file. */
+    $trans_j = file_get_contents (JIRAFEAU_ROOT . "lib/locales/$l.json");
+    if ($trans_j === FALSE)
+        return $text;
+
+    /* Decode JSON. */
+    $trans = json_decode ($trans_j, true);
+    if ($trans === NULL)
+        return $text;
+
+    /* Try to find translation. */
+    if (!array_key_exists ($text, $trans))
+        return $text;
+
+    return $trans[$text];
 }
 
 ?>