Fix #1722 incorrect language selection when domain setting conflicts with system setting

This commit is contained in:
Kijin Sung 2021-06-19 21:55:14 +09:00
parent 1ab02086bd
commit 865e83a46a
7 changed files with 12 additions and 5 deletions

View file

@ -327,15 +327,19 @@ class Context
if(!$lang_type || !isset($enabled_langs[$lang_type]))
{
if($site_module_info->settings->language)
if(isset($site_module_info->settings->language) && $site_module_info->settings->language !== 'default')
{
$lang_type = self::$_instance->db_info->lang_type = $site_module_info->settings->language;
}
else
{
$lang_type = self::$_instance->db_info->lang_type = self::$_instance->db_info->lang_type ?? 'ko';
$lang_type = self::$_instance->db_info->lang_type = config('locale.default_lang');
}
}
if(!$lang_type || !isset($enabled_langs[$lang_type]))
{
$lang_type = self::$_instance->db_info->lang_type = 'ko';
}
$lang = Rhymix\Framework\Lang::getInstance($lang_type);
$lang->loadDirectory(RX_BASEDIR . 'common/lang', 'common');

View file

@ -1125,7 +1125,7 @@ class adminAdminController extends admin
// Validate the default language.
$enabled_lang = Rhymix\Framework\Config::get('locale.enabled_lang');
if (!in_array($vars->default_lang, $enabled_lang))
if ($vars->default_lang !== 'default' && !in_array($vars->default_lang, $enabled_lang))
{
throw new Rhymix\Framework\Exception('msg_lang_is_not_enabled');
}

View file

@ -723,7 +723,7 @@ class adminAdminView extends admin
}
else
{
$domain_lang = Rhymix\Framework\Config::get('locale.default_lang');
$domain_lang = 'default';
}
Context::set('domain_lang', $domain_lang);

View file

@ -92,6 +92,7 @@ $lang->cmd_admin_sms_sender_key_help = 'The sender key is used for Alimtalk. Ple
$lang->cmd_admin_allow_split_sms_help = 'Split long texts into multiple SMS in order to prevent clipping.<br>This only applies to gateways that cannot send LMS/MMS. Otherwise, long texts will be automatically converted to LMS/MMS.';
$lang->cmd_admin_allow_split_lms_help = 'Split very long texts into multiple LMS/MMS in order to prevent clipping.<br>This may increase your LMS/MMS cost significantly.';
$lang->default_lang = 'Default Language';
$lang->follow_default_lang = 'System Default';
$lang->lang_select = 'Supported Languages';
$lang->auto_select_lang = 'Auto-select Language';
$lang->about_auto_select_lang = 'Automatically select the language based on the language of each visitor\'s browser.';

View file

@ -91,6 +91,7 @@ $lang->cmd_admin_sms_sender_key_help = '알림톡 발송에 필요한 Sender Key
$lang->cmd_admin_allow_split_sms_help = '긴 내용을 SMS로 발송할 때 잘리지 않도록 2개 이상의 SMS로 분할 발송합니다.<br>LMS/MMS를 사용할 수 있는 경우 자동 변경되므로, LMS/MMS 사용이 불가능한 서비스에만 해당됩니다.';
$lang->cmd_admin_allow_split_lms_help = '매우 긴 내용을 LMS 또는 MMS로 발송할 때 잘리지 않도록 2개 이상의 LMS 또는 MMS로 분할 발송합니다.<br>내용이 지나치게 긴 경우 비용이 많이 발생할 수 있으니 주의하십시오.';
$lang->default_lang = '기본 언어 선택';
$lang->follow_default_lang = '시스템 기본값';
$lang->lang_select = '지원 언어 선택';
$lang->auto_select_lang = '언어 자동 선택';
$lang->about_auto_select_lang = '방문자의 브라우저 언어에 따라 자동으로 언어를 선택하는 기능입니다.';

View file

@ -64,7 +64,7 @@
<label class="x_control-label">{$lang->lang_select}</label>
<div class="x_controls">
<label for="lang_{$key}" class="x_inline" loop="$supported_lang=>$key,$val">
<input type="checkbox" name="enabled_lang[]" id="lang_{$key}" value="{$key}" disabled="disabled"|cond="$key==$default_lang" checked="checked"|cond="in_array($key, $enabled_lang)" />
<input type="checkbox" name="enabled_lang[]" id="lang_{$key}" value="{$key}" checked="checked"|cond="in_array($key, $enabled_lang)" />
{$val['name']}
</label>
</div>

View file

@ -79,6 +79,7 @@
<label class="x_control-label" for="default_lang">{$lang->default_lang}</label>
<div class="x_controls">
<select name="default_lang" id="default_lang">
<option value="default" selected="selected"|cond="$domain_lang === 'default'">{$lang->follow_default_lang}</option>
<option value="{$key}" loop="$enabled_lang => $key" selected="selected"|cond="$key == $domain_lang">{$supported_lang[$key]['name']}</option>
</select>
</div>