OSDN Git Service

Merge branch 'skinnable-master' of ssh://shizuki@git.sourceforge.jp/gitroot/nucleus...
authorshizuki <shizuki@kinezumi.net>
Wed, 30 May 2012 07:30:06 +0000 (16:30 +0900)
committershizuki <shizuki@kinezumi.net>
Wed, 30 May 2012 07:30:06 +0000 (16:30 +0900)
install/index.php
install/locales/en_Latn_US.UTF-8.php
install/locales/ja_Jpan_JP.UTF-8.php
nucleus/libs/AdminActions.php

index f1d997a..16a3c06 100644 (file)
@@ -90,14 +90,7 @@ else
 }\r
 \r
 // include translation file\r
-if ( array_key_exists('locale', $_POST) ) $param->set_locale();\r
-i18n::set_current_locale($param->locale);\r
-$translation_file = './locales/' . i18n::get_current_locale() . '.' . i18n::get_current_charset() . '.php';\r
-if ( !file_exists($translation_file) )\r
-{\r
-       $translation_file = './locales/en_Latn_US.UTF-8.php';\r
-}\r
-include($translation_file);\r
+$param->set_locale();\r
 \r
 do_action();\r
 \r
@@ -147,7 +140,6 @@ function do_action()
                switch ( $param->state )\r
                {\r
                        case 'locale':\r
-                               $param->set_locale();\r
                                $param->set_state('mysql');\r
                                $isPostback = false;\r
                                break;\r
@@ -296,42 +288,52 @@ function show_footer()
  */\r
 function show_select_locale_form()\r
 {\r
-       // get locale list\r
-       $localelist = i18n::get_available_locale_list();\r
-       $locales = array();\r
-       foreach ( $localelist as $locale ) {\r
-               $checkfile = './locales/' . $locale . '.' . i18n::get_current_charset() . '.php';\r
-               $locales[] = array( $locale, (!file_exists($checkfile) ? '*&nbsp;' : '') . $locale );\r
-       }\r
+       global $param;\r
+       \r
 ?>\r
                <div id="container">\r
                        <p style="font-size:152%;font-weight:bold;">\r
-                               Select your locale:\r
+                               <?php echo _LOCALE_HEADER; ?>\r
                        </p>\r
                        <form method="post" action="./index.php">\r
 \r
                                <div class="prt">\r
                                        <select name="locale">\r
 <?php\r
-       // Get the browser language that can be displayed\r
-       // TODO: default locale select simple implementation\r
-       $languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);\r
-       $language = (is_array($languages) && count($languages) > 0) ? preg_replace('#^([\w]+).*$#', '$1', $languages[0]) : '';\r
-\r
+       $locales = i18n::get_available_locale_list();\r
        foreach ( $locales as $locale )\r
        {\r
-               echo "<option value=\"$locale[0]\"";\r
-               if ( i18n::strpos($locale[0], $language) === 0 )\r
+               if ( $param->locale != $locale )\r
+               {\r
+                       echo "<option value=\"{$locale}\">";\r
+               }\r
+               else\r
+               {\r
+                       echo "<option value=\"{$locale}\" selected=\"selected\">";\r
+               }\r
+               \r
+               $checkfile = "./locales/{$locale}." . i18n::get_current_charset() . '.php';\r
+               if ( !file_exists($checkfile) )\r
+               {\r
+                       echo '*&nbsp;';\r
+               }\r
+               \r
+               $label = '_LOCALE_' . strtoupper($locale);\r
+               if ( !defined($label) )\r
+               {\r
+                       echo $locale;\r
+               }\r
+               else\r
                {\r
-                       echo ' selected';\r
+                       echo constant($label);\r
                }\r
-               echo ">$locale[1]</option>\n";\r
+               echo "</option>\n";\r
        }\r
 ?>\r
                                        </select>\r
-                                       <p>Nucleus is installed in the selected locale, the locale of the Asterisk prefixed will be displayed in English because there is no translation of the installer file.</p>\r
-                                       <p>We will wait for the translator by volunteers!</p>\r
-                                       </p>\r
+                                       <p><?php echo _LOCALE_DESC1; ?></p>\r
+                                       <p><?php echo _LOCALE_DESC2; ?></p>\r
+                                       <p><?php echo _LOCALE_NEED_HELP;?></p>\r
                                        <p class="sbt">\r
                                                <button type="submit" name="action" value="locale" class="sbt_arw">START</button>\r
                                        </p>\r
@@ -1453,7 +1455,7 @@ class ParamManager
                // set default values\r
                $this->state = 'locale';\r
                $this->install_mode = 'simple';\r
-               $this->locale = 'en_Latn_US';\r
+               $this->locale = '';\r
                $this->mysql_host = @ini_get('mysql.default_host');\r
                $this->blog_name = 'My Nucleus CMS';\r
                $this->blog_shortname = 'mynucleuscms';\r
@@ -1510,11 +1512,82 @@ class ParamManager
        public function set_locale()\r
        {\r
                $this->read_parameter(array('locale'));\r
-\r
-               if ( !in_array($this->locale, i18n::get_available_locale_list()) )\r
+               \r
+               if ( !$this->locale )\r
+               {\r
+                       /**\r
+                        * default locale select simple implementation\r
+                        * \r
+                        * NOTE:\r
+                        * RFC2616: Hypertext Transfer Protocol -- HTTP/1.1\r
+                        * http://www.ietf.org/rfc/rfc2616.txt\r
+                        * \r
+                        * 14.4 Accept-Language\r
+                        * \r
+                        *    The Accept-Language request-header field is similar to Accept, but\r
+                        *    restricts the set of natural languages that are preferred as a\r
+                        *    response to the request. Language tags are defined in section 3.10.\r
+                        * \r
+                        *        Accept-Language = "Accept-Language" ":"\r
+                        *                          1#( language-range [ ";" "q" "=" qvalue ] )\r
+                        *        language-range  = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )\r
+                        *        \r
+                        *    Each language-range MAY be given an associated quality value which\r
+                        *    represents an estimate of the user's preference for the languages\r
+                        *    specified by that range. The quality value defaults to "q=1". For\r
+                        *    example,\r
+                        * \r
+                        *        Accept-Language: da, en-gb;q=0.8, en;q=0.7\r
+                        * \r
+                        *    would mean: "I prefer Danish, but will accept British English and\r
+                        *    other types of English." A language-range matches a language-tag if\r
+                        *    it exactly equals the tag, or if it exactly equals a prefix of the\r
+                        *    tag such that the first tag character following the prefix is "-".\r
+                        *    The special range "*", if present in the Accept-Language field,\r
+                        *    matches every tag not matched by any other range present in the\r
+                        *    Accept-Language field.\r
+                        * \r
+                        * TODO: this is appropriate implement or not\r
+                        */\r
+                       $languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);\r
+                       \r
+                       /* retrieve language token of language tag from first token */\r
+                       $language = '';\r
+                       if ( is_array($languages) && count($languages) > 0 )\r
+                       {\r
+                               $language = preg_replace('#^([\w]+).*$#', '$1', $languages[0]);\r
+                       }\r
+                       \r
+                       $locales = i18n::get_available_locale_list();\r
+                       foreach ( $locales as $locale )\r
+                       {\r
+                               if ( i18n::strpos($locale, $language) === 0 )\r
+                               {\r
+                                       $this->locale = $locale;\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               /* include installer translation messages */\r
+               $translation_file = "./locales/{$this->locale}." . i18n::get_current_charset() . '.php';\r
+               if ( !file_exists($translation_file) )\r
+               {\r
+                       $translation_file = './locales/en_Latn_US.UTF-8.php';\r
+               }\r
+               include($translation_file);\r
+               \r
+               /* include global translation messages */\r
+               $translation_file = "../nucleus/locales/{$this->locale}." . i18n::get_current_charset() . '.php';\r
+               if ( !file_exists($translation_file) )\r
                {\r
-                       $this->locale = 'en_Latn_US';\r
+                       $translation_file = './locales/en_Latn_US.UTF-8.php';\r
                }\r
+               include($translation_file);\r
+               \r
+               i18n::set_current_locale($this->locale);\r
+               \r
+               return;\r
        }\r
 \r
        public function check_mysql_parameters()\r
index 9cedd5e..b556f6e 100644 (file)
@@ -29,6 +29,12 @@ define('_MODE2',                             'Detailed setting');
 define('_NEXT',                                        'NEXT');\r
 define('_INSTALL',                             'INSTALL');\r
 \r
+// locale setting\r
+define('_LOCALE_HEADER',               'Select Your Locale');\r
+define('_LOCALE_DESC1',                        'Nucleus CMS can be used under several locales.');\r
+define('_LOCALE_DESC2',                        'If you can see prefixed name with asterisk in above select box, it means translation for the locale is not enough yet.');\r
+define('_LOCALE_NEED_HELP',            'We\'re waiting for your contribution to translate!');\r
+\r
 // database settings\r
 define('_SIMPLE_NAVI1',                        'At first I confirm the connection of the database. I input setting of MySQL, and please click to "next".<br />When I input detailed information and set it, please click "Detailed Setting".');\r
 define('_DB_HEADER',                   'Check Database');\r
index e3dfe38..0ece4de 100644 (file)
@@ -41,6 +41,12 @@ define('_MODE2',                             '詳細設定');
 define('_NEXT',                                        '次へ');\r
 define('_INSTALL',                             'インストール');\r
 \r
+// locale setting\r
+define('_LOCALE_HEADER',               'あなたのロケールを選択して下さい');\r
+define('_LOCALE_DESC1',                        'Nucleus CMSはさまざまなロケールで使うことができるよう作られています。');\r
+define('_LOCALE_DESC2',                        '上のセレクトボックスに表示される名前のうち、アスタリスクで始まるものは翻訳が十分ではありません。');\r
+define('_LOCALE_NEED_HELP',            'もし余裕がありましたら、ぜひ翻訳したファイルを送って下さい!');\r
+\r
 // database settings\r
 define('_SIMPLE_NAVI1',                        'まずデータベースの接続を確認します。MySQLの設定を入力して「次へ」をクリックしてください。<br />詳細な情報を入力して設定する場合は「詳細情報」をクリックしてください。');\r
 define('_DB_HEADER',                   'データベース接続');\r
index 784f473..b9880e4 100644 (file)
@@ -3410,62 +3410,74 @@ class AdminActions extends BaseActions
         */
        public function parse_localeselectoptions()
        {
-               global $manager;
+               global $CONF, $member;
                
                $locales = i18n::get_available_locale_list();
                
-               $memid = intRequestVar('memberid');
-               if ( $memid )
+               /* default option */
+               if ( $this->skintype == 'editmembersettings' )
                {
-                       $mem =& $manager->getMember($memid);
-                       if ( !$mem->getLocale() || !in_array($mem->getLocale(), $locales) )
-                       {
-                               echo "<option value=\"\" selected=\"selected\">" . Entity::hsc(_MEMBERS_USESITELANG) . "</option>\n";
-                       }
-                       else
-                       {
-                               echo "<option value=\"\">" . Entity::hsc(_MEMBERS_USESITELANG) . "</option>\n";
-                       }
+                       if ( !$member->getLocale() )\r
+                       {\r
+                               echo "<option value=\"\" selected=\"selected\">" . Entity::hsc(_MEMBERS_USESITELANG) . "</option>\n";\r
+                       }\r
+                       else\r
+                       {\r
+                               echo "<option value=\"\">" . Entity::hsc(_MEMBERS_USESITELANG) . "</option>\n";\r
+                       }\r
                }
                else
                {
-                       if ( !i18n::get_current_locale() || !in_array(i18n::get_current_locale(), $locales) )
-                       {
-                               echo "<option value=\"\" selected=\"selected\">en_Latn_US</option>\n";
-                       }
-                       else
-                       {
-                               echo "<option value=\"\">en_Latn_US</option>\n";
-                       }
+                       if ( $CONF['Locale'] == 'en_Latn_US' )\r
+                       {\r
+                               echo "<option value=\"\" selected=\"selected\">" . Entity::hsc(_LOCALE_EN_LATN_US) . "</option>\n";\r
+                       }\r
+                       else\r
+                       {\r
+                               echo "<option value=\"\">" . Entity::hsc(_LOCALE_EN_LATN_US) . "</option>\n";\r
+                       }\r
                }
+               
+               /* optional options */
                foreach ( $locales as $locale )
                {
-                       if ( $locale == 'en_Latn_US' )
+                       if ( $this->skintype == 'editmembersettings' )\r
                        {
-                               continue;
+                               if ( $locale != $member->getLocale() )\r
+                               {\r
+                                       echo "<option value=\"{$locale}\">";\r
+                               }\r
+                               else\r
+                               {\r
+                                       echo "<option value=\"{$locale}\" selected=\"selected\">";\r
+                               }
                        }
-                       else if ($memid)
+                       else
                        {
-                               if ( $locale == $mem->getLocale() )
-                               {
-                                       echo "<option value=\"{$locale}\" selected=\"selected\">{$locale}</option>\n";
-                               }
-                               else
+                               if ( $locale == 'en_Latn_US' )
                                {
-                                       echo "<option value=\"{$locale}\">{$locale}</option>\n";
+                                       /* already output */
+                                       continue;
                                }
+                               else if ( $locale != $CONF['Locale'] )\r
+                               {\r
+                                       echo "<option value=\"{$locale}\">";\r
+                               }\r
+                               else\r
+                               {\r
+                                       echo "<option value=\"{$locale}\" selected=\"selected\">";\r
+                               }\r
+                       }
+                       $label = '_LOCALE_' . strtoupper($locale);
+                       if ( !defined($label) )
+                       {
+                               echo $locale;
                        }
                        else
                        {
-                               if ( $locale == i18n::get_current_locale() )
-                               {
-                                       echo "<option value=\"{$locale}\" selected=\"selected\">{$locale}</option>\n";
-                               }
-                               else
-                               {
-                                       echo "<option value=\"{$locale}\">{$locale}</option>\n";
-                               }
+                               echo constant($label);
                        }
+                       echo "</option>\n";\r
                }
                return;
        }