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') }
+
+
+
+