diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 37a3caa2..2e3c1956 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -63,6 +63,18 @@ class ApplicationController < ActionController::Base # Set tenant locale I18n.locale = @tenant.locale + + if @tenant_setting.use_browser_locale + user_preferred_language = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first + available_locales = I18n.available_locales.map { |locale| locale.to_s[0, 2] } + + if available_locales.include?(user_preferred_language) + # special cases + user_preferred_language = 'zh-CN' if user_preferred_language == 'zh' + + I18n.locale = user_preferred_language + end + end end def load_oauths diff --git a/app/javascript/components/SiteSettings/General/GeneralSiteSettingsP.tsx b/app/javascript/components/SiteSettings/General/GeneralSiteSettingsP.tsx index 6149242a..77b3cf69 100644 --- a/app/javascript/components/SiteSettings/General/GeneralSiteSettingsP.tsx +++ b/app/javascript/components/SiteSettings/General/GeneralSiteSettingsP.tsx @@ -25,6 +25,7 @@ export interface ISiteSettingsGeneralForm { siteLogo: string; brandDisplaySetting: string; locale: string; + useBrowserLocale: boolean; rootBoardId?: string; customDomain?: string; isPrivate: boolean; @@ -51,6 +52,7 @@ interface Props { siteLogo: string, brandDisplaySetting: string, locale: string, + useBrowserLocale: boolean, rootBoardId: number, customDomain: string, isPrivate: boolean, @@ -86,6 +88,7 @@ const GeneralSiteSettingsP = ({ siteLogo: originForm.siteLogo, brandDisplaySetting: originForm.brandDisplaySetting, locale: originForm.locale, + useBrowserLocale: originForm.useBrowserLocale, rootBoardId: originForm.rootBoardId, customDomain: originForm.customDomain, isPrivate: originForm.isPrivate, @@ -105,6 +108,7 @@ const GeneralSiteSettingsP = ({ data.siteLogo, data.brandDisplaySetting, data.locale, + data.useBrowserLocale, Number(data.rootBoardId), data.customDomain, data.isPrivate, @@ -213,6 +217,16 @@ const GeneralSiteSettingsP = ({ +
+
+ + + + { I18n.t('site_settings.general.use_browser_locale_help') } + +
+
+