Add option to force the language for a domain

This commit is contained in:
Kijin Sung 2024-01-31 11:02:37 +09:00
parent 48cd4a2794
commit 424242ff74
5 changed files with 44 additions and 26 deletions

View file

@ -253,7 +253,11 @@ class Context
$set_lang_cookie = false; $set_lang_cookie = false;
self::set('lang_supported', $enabled_langs); self::set('lang_supported', $enabled_langs);
if($lang_type = self::get('l')) if (!empty($site_module_info->settings->language) && !empty($site_module_info->settings->force_language))
{
$lang_type = $site_module_info->settings->language;
}
elseif ($lang_type = self::get('l'))
{ {
if($_COOKIE['lang_type'] !== $lang_type) if($_COOKIE['lang_type'] !== $lang_type)
{ {

View file

@ -82,21 +82,24 @@ class Domains extends Base
// Get language list. // Get language list.
Context::set('supported_lang', Lang::getSupportedList()); Context::set('supported_lang', Lang::getSupportedList());
Context::set('enabled_lang', Config::get('locale.enabled_lang')); Context::set('enabled_lang', Config::get('locale.enabled_lang'));
if ($domain_info && $domain_info->settings->language) if ($domain_info && !empty($domain_info->settings->language))
{ {
$domain_lang = $domain_info->settings->language; $domain_lang = $domain_info->settings->language ?? 'default';
$domain_force_lang = $domain_info->settings->force_language ?? false;
} }
else else
{ {
$domain_lang = 'default'; $domain_lang = 'default';
$domain_force_lang = false;
} }
Context::set('domain_lang', $domain_lang); Context::set('domain_lang', $domain_lang);
Context::set('domain_force_lang', $domain_force_lang);
// Get timezone list. // Get timezone list.
Context::set('timezones', DateTime::getTimezoneList()); Context::set('timezones', DateTime::getTimezoneList());
if ($domain_info && $domain_info->settings->timezone) if ($domain_info && !empty($domain_info->settings->timezone))
{ {
$domain_timezone = $domain_info->settings->timezone; $domain_timezone = $domain_info->settings->timezone ?? '';
} }
else else
{ {
@ -149,19 +152,22 @@ class Domains extends Base
// Get language list. // Get language list.
Context::set('supported_lang', Lang::getSupportedList()); Context::set('supported_lang', Lang::getSupportedList());
Context::set('enabled_lang', Config::get('locale.enabled_lang')); Context::set('enabled_lang', Config::get('locale.enabled_lang'));
if ($domain_info && $domain_info->settings->language) if ($domain_info && !empty($domain_info->settings->language))
{ {
$domain_lang = $domain_info->settings->language; $domain_lang = $domain_info->settings->language ?? 'default';
$domain_force_lang = $domain_info->settings->force_language ?? false;
} }
else else
{ {
$domain_lang = 'default'; $domain_lang = 'default';
$domain_force_lang = false;
} }
Context::set('domain_lang', $domain_lang); Context::set('domain_lang', $domain_lang);
Context::set('domain_force_lang', $domain_force_lang);
// Get timezone list. // Get timezone list.
Context::set('timezones', DateTime::getTimezoneList()); Context::set('timezones', DateTime::getTimezoneList());
if ($domain_info && $domain_info->settings->timezone) if ($domain_info && !empty($domain_info->settings->timezone))
{ {
$domain_timezone = $domain_info->settings->timezone; $domain_timezone = $domain_info->settings->timezone;
} }
@ -328,6 +334,7 @@ class Domains extends Base
{ {
throw new Exception('msg_lang_is_not_enabled'); throw new Exception('msg_lang_is_not_enabled');
} }
$vars->force_lang = isset($vars->force_lang) ? toBool($vars->force_lang) : false;
// Validate the default time zone. // Validate the default time zone.
$timezone_list = DateTime::getTimezoneList(); $timezone_list = DateTime::getTimezoneList();
@ -356,6 +363,7 @@ class Domains extends Base
'title' => $vars->title, 'title' => $vars->title,
'subtitle' => $vars->subtitle, 'subtitle' => $vars->subtitle,
'language' => $vars->default_lang, 'language' => $vars->default_lang,
'force_language' => $vars->force_lang,
'timezone' => $vars->default_timezone, 'timezone' => $vars->default_timezone,
'meta_keywords' => $vars->meta_keywords, 'meta_keywords' => $vars->meta_keywords,
'meta_description' => $vars->meta_description, 'meta_description' => $vars->meta_description,

View file

@ -106,6 +106,7 @@ $lang->cmd_https_port = 'HTTPS Port';
$lang->cmd_index_module_srl = 'Main Module'; $lang->cmd_index_module_srl = 'Main Module';
$lang->cmd_index_document_srl = 'Main Document'; $lang->cmd_index_document_srl = 'Main Document';
$lang->cmd_default_language = 'Default Language'; $lang->cmd_default_language = 'Default Language';
$lang->cmd_force_default_language = 'Force';
$lang->cmd_any_domain = 'Any Domain'; $lang->cmd_any_domain = 'Any Domain';
$lang->cmd_new_domain = 'Add New Domain'; $lang->cmd_new_domain = 'Add New Domain';
$lang->cmd_edit_domain = 'Edit Domain'; $lang->cmd_edit_domain = 'Edit Domain';

View file

@ -105,6 +105,7 @@ $lang->cmd_https_port = 'HTTPS 포트';
$lang->cmd_index_module_srl = '메인 모듈'; $lang->cmd_index_module_srl = '메인 모듈';
$lang->cmd_index_document_srl = '메인 문서'; $lang->cmd_index_document_srl = '메인 문서';
$lang->cmd_default_language = '기본 언어'; $lang->cmd_default_language = '기본 언어';
$lang->cmd_force_default_language = '강제 적용';
$lang->cmd_any_domain = '모든 도메인'; $lang->cmd_any_domain = '모든 도메인';
$lang->cmd_new_domain = '새 도메인 추가'; $lang->cmd_new_domain = '새 도메인 추가';
$lang->cmd_edit_domain = '도메인 정보 수정'; $lang->cmd_edit_domain = '도메인 정보 수정';

View file

@ -83,6 +83,10 @@
<option value="default" selected="selected"|cond="$domain_lang === 'default'">{$lang->follow_default_lang}</option> <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> <option value="{$key}" loop="$enabled_lang => $key" selected="selected"|cond="$key == $domain_lang">{$supported_lang[$key]['name']}</option>
</select> </select>
&nbsp;
<label class="x_inline" for="force_lang">
<input type="checkbox" name="force_lang" id="force_lang" value="Y" checked="checked"|cond="$domain_force_lang" /> {$lang->cmd_force_default_language}
</label>
</div> </div>
</div> </div>