summaryrefslogtreecommitdiff
path: root/app/Model/LanguageModel.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Model/LanguageModel.php')
-rw-r--r--app/Model/LanguageModel.php179
1 files changed, 179 insertions, 0 deletions
diff --git a/app/Model/LanguageModel.php b/app/Model/LanguageModel.php
new file mode 100644
index 00000000..eb6de004
--- /dev/null
+++ b/app/Model/LanguageModel.php
@@ -0,0 +1,179 @@
+<?php
+
+namespace Kanboard\Model;
+
+use Kanboard\Core\Base;
+use Kanboard\Core\Translator;
+
+/**
+ * Class Language
+ *
+ * @package Kanboard\Model
+ * @author Frederic Guillot
+ */
+class LanguageModel extends Base
+{
+ /**
+ * Get all language codes
+ *
+ * @static
+ * @access public
+ * @return string[]
+ */
+ public static function getCodes()
+ {
+ return array(
+ 'id_ID',
+ 'bs_BA',
+ 'cs_CZ',
+ 'da_DK',
+ 'de_DE',
+ 'en_US',
+ 'es_ES',
+ 'fr_FR',
+ 'el_GR',
+ 'it_IT',
+ 'hu_HU',
+ 'my_MY',
+ 'nl_NL',
+ 'nb_NO',
+ 'pl_PL',
+ 'pt_PT',
+ 'pt_BR',
+ 'ru_RU',
+ 'sr_Latn_RS',
+ 'fi_FI',
+ 'sv_SE',
+ 'tr_TR',
+ 'ko_KR',
+ 'zh_CN',
+ 'ja_JP',
+ 'th_TH',
+ );
+ }
+
+ /**
+ * Find language code
+ *
+ * @static
+ * @access public
+ * @param string $code
+ * @return string
+ */
+ public static function findCode($code)
+ {
+ $code = str_replace('-', '_', $code);
+ return in_array($code, self::getCodes()) ? $code : '';
+ }
+
+ /**
+ * Get available languages
+ *
+ * @access public
+ * @param boolean $prepend Prepend a default value
+ * @return array
+ */
+ public function getLanguages($prepend = false)
+ {
+ // Sorted by value
+ $languages = array(
+ 'id_ID' => 'Bahasa Indonesia',
+ 'bs_BA' => 'Bosanski',
+ 'cs_CZ' => 'Čeština',
+ 'da_DK' => 'Dansk',
+ 'de_DE' => 'Deutsch',
+ 'en_US' => 'English',
+ 'es_ES' => 'Español',
+ 'fr_FR' => 'Français',
+ 'el_GR' => 'Grec',
+ 'it_IT' => 'Italiano',
+ 'hu_HU' => 'Magyar',
+ 'my_MY' => 'Melayu',
+ 'nl_NL' => 'Nederlands',
+ 'nb_NO' => 'Norsk',
+ 'pl_PL' => 'Polski',
+ 'pt_PT' => 'Português',
+ 'pt_BR' => 'Português (Brasil)',
+ 'ru_RU' => 'Русский',
+ 'sr_Latn_RS' => 'Srpski',
+ 'fi_FI' => 'Suomi',
+ 'sv_SE' => 'Svenska',
+ 'tr_TR' => 'Türkçe',
+ 'ko_KR' => '한국어',
+ 'zh_CN' => '中文(简体)',
+ 'ja_JP' => '日本語',
+ 'th_TH' => 'ไทย',
+ );
+
+ if ($prepend) {
+ return array('' => t('Application default')) + $languages;
+ }
+
+ return $languages;
+ }
+
+ /**
+ * Get javascript language code
+ *
+ * @access public
+ * @return string
+ */
+ public function getJsLanguageCode()
+ {
+ $languages = array(
+ 'cs_CZ' => 'cs',
+ 'da_DK' => 'da',
+ 'de_DE' => 'de',
+ 'en_US' => 'en',
+ 'es_ES' => 'es',
+ 'fr_FR' => 'fr',
+ 'it_IT' => 'it',
+ 'hu_HU' => 'hu',
+ 'nl_NL' => 'nl',
+ 'nb_NO' => 'nb',
+ 'pl_PL' => 'pl',
+ 'pt_PT' => 'pt',
+ 'pt_BR' => 'pt-br',
+ 'ru_RU' => 'ru',
+ 'sr_Latn_RS' => 'sr',
+ 'fi_FI' => 'fi',
+ 'sv_SE' => 'sv',
+ 'tr_TR' => 'tr',
+ 'ko_KR' => 'ko',
+ 'zh_CN' => 'zh-cn',
+ 'ja_JP' => 'ja',
+ 'th_TH' => 'th',
+ 'id_ID' => 'id',
+ 'el_GR' => 'el',
+ );
+
+ $lang = $this->getCurrentLanguage();
+
+ return isset($languages[$lang]) ? $languages[$lang] : 'en';
+ }
+
+ /**
+ * Get current language
+ *
+ * @access public
+ * @return string
+ */
+ public function getCurrentLanguage()
+ {
+ if ($this->userSession->isLogged() && ! empty($this->sessionStorage->user['language'])) {
+ return $this->sessionStorage->user['language'];
+ }
+
+ return $this->configModel->get('application_language', 'en_US');
+ }
+
+ /**
+ * Load translations for the current language
+ *
+ * @access public
+ */
+ public function loadCurrentLanguage()
+ {
+ Translator::load($this->getCurrentLanguage());
+ }
+}