/**
* @license http://nucleuscms.org/license.txt GNU General Public License
* @copyright Copyright (C) 2002-2012 The Nucleus Group
- * @version $Id: upgrade2.0.php 1388 2009-07-18 06:31:28Z shizuki $
+ * @version $Id$
*/
function upgrade_do400()
/* change Language setting to Locale */
if ( upgrade_checkIfCVExists('Language') )
{
- $language = DB::getValue("SELECT value FROM " . sql_table('config') . " WHERE name='Language'");
- $locale = i18n::convert_old_language_file_name_to_locale($language);
- if ( $locale )
+ $res = sql_query("SELECT value FROM " . sql_table('config') . " WHERE name='Language'");
+ if ( $res !== FALSE )
{
- $query = 'INSERT INTO ' . sql_table('config') . " VALUES ('Locale','{$locale}')";
- upgrade_query('Creating Locale config value', $query);
-
- $query = 'DELETE FROM ' . sql_table('config') . " WHERE name='Language'";
- upgrade_query("Removing Language config value", $query);
+ $row = sql_fetch_assoc($res);
+ $locale = i18n_upg::convert_old_language_file_name_to_locale($row['value']);
+ if ( $locale )
+ {
+ $query = 'INSERT INTO ' . sql_table('config') . " VALUES ('Locale','{$locale}')";
+ upgrade_query('Creating Locale config value', $query);
+
+ $query = 'DELETE FROM ' . sql_table('config') . " WHERE name='Language'";
+ upgrade_query("Removing Language config value", $query);
+ }
}
}
}
// all member default value set
- $res = DB::getResult("SELECT * FROM " . sql_table('member'));
- foreach ( $res as $row )
+ $result = sql_query("SELECT * FROM " . sql_table('member'));
+ while ( $row = mysql_fetch_assoc($result) )
{
- $locale = i18n::convert_old_language_file_name_to_locale($row['mlocale']);
+ $locale = i18n_upg::convert_old_language_file_name_to_locale($row['mlocale']);
if ( $locale )
{
$query = 'UPDATE $s SET mlocale=$s WHERE mnumber=$d';
- $query = sprintf($query, sql_table('member'), DB::quoteValue($locale), $row['mnumber']);
+ $query = sprintf($query, sql_table('member'), addslashes($locale), $row['mnumber']);
upgrade_query('Changing mlocale value', $query);
}
}
}
+class i18n_upg
+{
+ /**
+ * i18n::convert_old_language_file_name_to_locale()
+ * NOTE: this should be obsoleted near future.
+ *
+ * @static
+ * @param string $target_language old translation file name
+ * @return string locale name as language_script_region
+ */
+ static public function convert_old_language_file_name_to_locale($target_language)
+ {
+ $target_locale = '';
+ foreach ( self::$lang_refs as $language => $locale )
+ {
+ if ( $target_language == $language )
+ {
+ if ( preg_match('#^(.+)\.(.+)$#', $locale, $match) )
+ {
+ $target_locale = $match[1];
+ }
+ else
+ {
+ $target_locale = $locale;
+ }
+ break;
+ }
+ }
+ return $target_locale;
+ }
+
+ /**
+ * i18n::$lang_refs
+ * reference table to convert old and new way to name translation files.
+ * NOTE: this should be obsoleted as soon as possible.
+ *
+ * @static
+ */
+ static private $lang_refs = array(
+ "english" => "en_Latn_US",
+ "english-utf8" => "en_Latn_US.UTF-8",
+ "bulgarian" => "bg_Cyrl_BG",
+ "finnish" => "fi_Latn_FI",
+ "catalan" => "ca_Latn_ES",
+ "french" => "fr_Latn_FR",
+ "russian" => "ru_Cyrl_RU",
+ "chinese" => "zh_Hans_CN",
+ "simchinese" => "zh_Hans_CN",
+ "chineseb5" => "zh_Hant_TW",
+ "traditional_chinese" => "zh_Hant_TW",
+ "galego" => "gl_Latn_ES",
+ "german" => "de_Latn_DE",
+ "korean-utf" => "ko_Kore_KR.UTF-8",
+ "korean-euc-kr" => "ko_Kore_KR.EUC-KR",
+ "slovak" => "sk_Latn_SK",
+ "czech" => "cs_Latn_CZ",
+ "hungarian" => "hu_Latn_HU",
+ "latvian" => "lv_Latn_LV",
+ "nederlands" => "nl_Latn_NL",
+ "italiano" => "it_Latn_IT",
+ "persian" => "fa_Arab_IR",
+ "spanish" => "es_Latn_ES",
+ "spanish-utf8" => "es_Latn_ES.UTF-8",
+ "japanese-euc" => "ja_Jpan_JP.EUC-JP",
+ "japanese-utf8" => "ja_Jpan_JP.UTF-8",
+ "portuguese_brazil" => "pt_Latn_BR"
+ );
+}