summaryrefslogtreecommitdiff
path: root/lib/translator.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/translator.php')
-rw-r--r--lib/translator.php124
1 files changed, 124 insertions, 0 deletions
diff --git a/lib/translator.php b/lib/translator.php
new file mode 100644
index 00000000..c485a94c
--- /dev/null
+++ b/lib/translator.php
@@ -0,0 +1,124 @@
+<?php
+
+namespace Translator {
+
+ const PATH = 'locales/';
+
+ function translate($identifier)
+ {
+ $args = \func_get_args();
+
+ \array_shift($args);
+ \array_unshift($args, get($identifier, $identifier));
+
+ return \call_user_func_array(
+ 'sprintf',
+ $args
+ );
+ }
+
+ function number($number)
+ {
+ return number_format(
+ $number,
+ get('number.decimals', 2),
+ get('number.decimals_separator', '.'),
+ get('number.thousands_separator', ',')
+ );
+ }
+
+ function currency($amount)
+ {
+ $position = get('currency.position', 'before');
+ $symbol = get('currency.symbol', '$');
+ $str = '';
+
+ if ($position === 'before') {
+
+ $str .= $symbol;
+ }
+
+ $str .= number($amount);
+
+ if ($position === 'after') {
+
+ $str .= ' '.$symbol;
+ }
+
+ return $str;
+ }
+
+ function datetime($format, $timestamp)
+ {
+ return strftime(get($format), (int) $timestamp);
+ }
+
+ function get($identifier, $default = '')
+ {
+ $locales = container();
+
+ if (isset($locales[$identifier])) {
+
+ return $locales[$identifier];
+ }
+ else {
+
+ return $default;
+ }
+ }
+
+ function load($language)
+ {
+ setlocale(LC_TIME, $language.'.UTF-8');
+
+ $path = PATH.$language;
+ $locales = array();
+
+ if (is_dir($path)) {
+
+ $dir = new \DirectoryIterator($path);
+
+ foreach ($dir as $fileinfo) {
+
+ if (strpos($fileinfo->getFilename(), '.php') !== false) {
+
+ $locales = array_merge($locales, include $fileinfo->getPathname());
+ }
+ }
+ }
+
+ container($locales);
+ }
+
+ function container($locales = null)
+ {
+ static $values = array();
+
+ if ($locales !== null) {
+
+ $values = $locales;
+ }
+
+ return $values;
+ }
+}
+
+
+namespace {
+
+ function t() {
+ return call_user_func_array('\Translator\translate', func_get_args());
+ }
+
+ function c() {
+ return call_user_func_array('\Translator\currency', func_get_args());
+ }
+
+ function n() {
+ return call_user_func_array('\Translator\number', func_get_args());
+ }
+
+ function dt() {
+ return call_user_func_array('\Translator\datetime', func_get_args());
+ }
+}