]> 91.132.146.200 Git - scientia.git/commitdiff
i18n now available
authorJohannes Keßler <johannes.kessler@bechtle.com>
Fri, 18 Nov 2022 11:59:48 +0000 (12:59 +0100)
committerJohannes Keßler <johannes.kessler@bechtle.com>
Fri, 18 Nov 2022 11:59:48 +0000 (12:59 +0100)
CHANGELOG
documentation/i18n.txt [new file with mode: 0644]
documentation/upgrade-from-1.0.txt [new file with mode: 0644]
webroot/config/config.php.default
webroot/index.php
webroot/lib/i18n.class.php [new file with mode: 0644]
webroot/lib/i18n/de.ini [new file with mode: 0644]
webroot/lib/i18n/en.ini [new file with mode: 0644]
webroot/view/entry/entry.html
webroot/view/list/list.html

index 49d59ef9ba756fa5405c3adbda0aaf58f02e56ce..7204f1c4ad71b1566515740c005608de0c22559e 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
 1.x Atlas -
+       + i18n. See upgrade-from-1.0.txt for more details.
 
 
 1.0 Lykos - 2022-11-12
-       - Initial release
+       + Initial release
diff --git a/documentation/i18n.txt b/documentation/i18n.txt
new file mode 100644 (file)
index 0000000..9ae216e
--- /dev/null
@@ -0,0 +1,6 @@
+Other languages are supported by the i18n ini files in the lib/i18n folder.
+It uses the two char lang code as a filename.
+
+To add a new translation copy the existing en.ini file and rename it to the new language.
+Edit every value for each key in the file. Get in touch or even make a PR via github to
+get the new language added.
\ No newline at end of file
diff --git a/documentation/upgrade-from-1.0.txt b/documentation/upgrade-from-1.0.txt
new file mode 100644 (file)
index 0000000..f9783b8
--- /dev/null
@@ -0,0 +1,6 @@
+New config for i18n. Open config.php and add the following:
+
+# language settings
+const FRONTEND_LANGUAGE = 'en';
+
+currently only en (default) and de are available.
\ No newline at end of file
index 7098d44eecd95c4bbdef69e21c83ed64494e1967..330c47424fb4bc3a306b5b91852fd566c384b6e8 100644 (file)
@@ -23,6 +23,9 @@ const QUERY_DEBUG = true;
 # timezone settings
 const TIMEZONE = 'Europe/Berlin';
 
+# language settings
+const FRONTEND_LANGUAGE = 'en';
+
 # path settings
 const PATH_ABSOLUTE = '/home/banana/code/scientia/webroot';
 const PATH_SYSTEMOUT = PATH_ABSOLUTE . '/systemout';
index e8aa27eeac17b8d061340ce6e104d20ea78aac5a..d29d9686b6f180e251d90465d3083c68488952cf 100644 (file)
@@ -46,9 +46,13 @@ date_default_timezone_set(TIMEZONE);
 
 # required libs
 require_once('lib/summoner.class.php');
+require_once('lib/i18n.class.php');
 
 Summoner::simpleAuth();
 
+# i18n
+$i18n = new I18n();
+
 # database object
 $DB = false;
 
diff --git a/webroot/lib/i18n.class.php b/webroot/lib/i18n.class.php
new file mode 100644 (file)
index 0000000..6ded228
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+/**
+ * scientia
+ *
+ * Copyright 2022 Johannes Keßler
+ *
+ * https://www.bananas-playground.net/projekt/scientia/
+ *
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
+ *
+ * You should have received a copy of the
+ * COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+ * along with this program.  If not, see http://www.sun.com/cddl/cddl.html
+ */
+
+class I18n {
+       /**
+        * @var string The lang code
+        */
+       private $_defaultLangToUse = 'en';
+
+       /**
+        * @var array The loaded lang information from the file
+        */
+       private $_langData = array();
+
+       /**
+        * i18n constructor.
+        */
+       public function __construct() {
+               $_langFile = ABSOLUTE_PATH.'/lib/i18n/'.$this->_defaultLangToUse.'.ini';
+               if(defined('FRONTEND_LANGUAGE')) {
+                       $_langFile = ABSOLUTE_PATH.'/lib/i18n/'.FRONTEND_LANGUAGE.'.ini';
+                       if(file_exists($_langFile)) {
+                               $_langData = parse_ini_file($_langFile);
+                               if($_langData !== false) {
+                                       $this->_langData = $_langData;
+                               }
+                       }
+               }
+               else {
+                       $_langData = parse_ini_file($_langFile);
+                       if($_langData !== false) {
+                               $this->_langData = $_langData;
+                       }
+               }
+       }
+
+       /**
+        * Return text for given key for currently loaded lang
+        *
+        * @param string $key
+        * @return string
+        */
+       public function t(string $key): string {
+               $ret = $key;
+               if(isset($this->_langData[$key])) {
+                       $ret = $this->_langData[$key];
+               }
+               return $ret;
+       }
+}
\ No newline at end of file
diff --git a/webroot/lib/i18n/de.ini b/webroot/lib/i18n/de.ini
new file mode 100644 (file)
index 0000000..6de9792
--- /dev/null
@@ -0,0 +1,13 @@
+; scientia
+;
+; Copyright 2022 Johannes Keßler
+;
+; https://www.bananas-playground.net/projekt/scientia/
+;
+;
+; This program is free software: you can redistribute it and/or modify
+; it under the terms of the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
+;
+; You should have received a copy of the
+; COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+; along with this program.  If not, see http://www.sun.com/cddl/cddl.html
diff --git a/webroot/lib/i18n/en.ini b/webroot/lib/i18n/en.ini
new file mode 100644 (file)
index 0000000..55cb0f8
--- /dev/null
@@ -0,0 +1,23 @@
+; scientia
+;
+; Copyright 2022 Johannes Keßler
+;
+; https://www.bananas-playground.net/projekt/scientia/
+;
+;
+; This program is free software: you can redistribute it and/or modify
+; it under the terms of the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
+;
+; You should have received a copy of the
+; COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+; along with this program.  If not, see http://www.sun.com/cddl/cddl.html
+
+form.button.save=Save
+form.button.search=Search
+form.checkbox.deleteentry=Delete Entry
+
+
+text.new=New
+text.home=Home
+text.noentries=Nothing here.
+
index 021e14656f5023b7cd6064f09f09c7948913eb36..a4802127094b9e78d5aeff5d5171867602c6b383 100644 (file)
@@ -3,11 +3,11 @@
 <?php } ?>
 <form method="post">
        <textarea rows="25" placeholder="write here" name="fdata[entry]"><?php echo Summoner::ifset($TemplateData['data'],'body'); ?></textarea>
-       <input type="submit" name="submitForm" value="Save">
-       <input type="checkbox" name="deleteEntry" value="yes" /> <small style="color: indianred">Delete Entry</small>
+       <input type="submit" name="submitForm" value="<?php echo $i18n->('form.button.save'); ?>">
+       <input type="checkbox" name="deleteEntry" value="yes" /> <small style="color: indianred"><?php echo $i18n->('form.checkbox.deleteentry'); ?></small>
 </form>
 <p>
-<a href="<?php echo PATH_WEBROOT; ?>">Home</a>
+<a href="<?php echo PATH_WEBROOT; ?>"><?php echo $i18n->('text.home'); ?></a>
 <?php if(!empty($TemplateData['data'])) {
        echo ' | ';
        $_link = '';
@@ -16,6 +16,6 @@
                echo '<a href="'.PATH_WEBROOT.$_link.'">'.$be.'</a> | ';
        }
 ?>
-       <a href="<?php echo PATH_WEBROOT; ?>/new">New</a>
+       <a href="<?php echo PATH_WEBROOT; ?>/new"><?php echo $i18n->('text.new'); ?></a>
 <?php } ?>
 </p>
index fc06f1527f056d6fc5db139955fb8c4f5cbd8da6..5caf8391ff0cdc13ea2075af7cc75685b6d29d53 100644 (file)
@@ -1,9 +1,9 @@
 <form method="post">
        <input type="text" name="searchInput" size="50" />
-       <input type="submit" name="submitForm" value="Search">
+       <input type="submit" name="submitForm" value="<?php echo $i18n->('form.button.search'); ?>">
 </form>
 <p>
-       <a href="<?php echo PATH_WEBROOT; ?>/">Home</a> | <a href="<?php echo PATH_WEBROOT; ?>/new">New</a>
+       <a href="<?php echo PATH_WEBROOT; ?>/"><?php echo $i18n->('text.home'); ?></a> | <a href="<?php echo PATH_WEBROOT; ?>/new"><?php echo $i18n->('text.new'); ?></a>
 </p>
 <?php if(!empty($TemplateData['entries'])) { ?>
 <?php
@@ -22,5 +22,5 @@
 <?php
        }
 } else { ?>
-<p>Nothing here.</p>
+<p><?php echo $i18n->('text.noentries'); ?></p>
 <?php } ?>