mirror of
https://github.com/discourse/discourse.git
synced 2025-02-16 18:24:52 -06:00
Merge pull request #4076 from scossar/locale-from-header-setting
FEATURE: add site setting for setting locale from header
This commit is contained in:
commit
84d234a98a
@ -169,7 +169,7 @@ class ApplicationController < ActionController::Base
|
||||
|
||||
def set_locale
|
||||
if !current_user
|
||||
if SiteSetting.allow_user_locale
|
||||
if SiteSetting.set_locale_from_accept_language_header
|
||||
I18n.locale = locale_from_header
|
||||
else
|
||||
I18n.locale = SiteSetting.default_locale
|
||||
|
@ -790,6 +790,7 @@ en:
|
||||
delete_old_hidden_posts: "Auto-delete any hidden posts that stay hidden for more than 30 days."
|
||||
default_locale: "The default language of this Discourse instance (ISO 639-1 Code)"
|
||||
allow_user_locale: "Allow users to choose their own language interface preference"
|
||||
set_locale_from_accept_language_header: "set interface language for anonymous users from their web browser's language headers."
|
||||
min_post_length: "Minimum allowed post length in characters"
|
||||
min_first_post_length: "Minimum allowed first post (topic body) length in characters"
|
||||
min_private_message_post_length: "Minimum allowed post length in characters for messages"
|
||||
@ -1310,6 +1311,7 @@ en:
|
||||
pop3_polling_authentication_failed: "POP3 authentication failed. Please verify your pop3 credentials."
|
||||
reply_by_email_address_is_empty: "You must set a 'reply by email address' before enabling reply by email."
|
||||
pop3_polling_disabled: "You must first enabled POP3 polling before enabling reply by email."
|
||||
user_locale_not_enabled: "You must first enable 'allow user locale' before enabling this setting."
|
||||
|
||||
notification_types:
|
||||
group_mentioned: "%{group_name} was mentioned in %{link}"
|
||||
|
@ -64,6 +64,9 @@ basic:
|
||||
allow_user_locale:
|
||||
client: true
|
||||
default: false
|
||||
set_locale_from_accept_language_header:
|
||||
default: false
|
||||
validator: "AllowUserLocaleEnabledValidator"
|
||||
suggested_topics:
|
||||
client: true
|
||||
default: 5
|
||||
|
18
lib/validators/allow_user_locale_enabled_validator.rb
Normal file
18
lib/validators/allow_user_locale_enabled_validator.rb
Normal file
@ -0,0 +1,18 @@
|
||||
class AllowUserLocaleEnabledValidator
|
||||
|
||||
def initialize(opts={})
|
||||
@opts = opts
|
||||
end
|
||||
|
||||
def valid_value?(val)
|
||||
# only validate when enabling setting locale from headers
|
||||
return true if val == "f"
|
||||
# ensure that allow_user_locale is enabled
|
||||
SiteSetting.allow_user_locale
|
||||
end
|
||||
|
||||
def error_message
|
||||
I18n.t("site_settings.errors.user_locale_not_enabled");
|
||||
end
|
||||
|
||||
end
|
@ -148,10 +148,11 @@ describe TopicsController do
|
||||
end
|
||||
end
|
||||
|
||||
context "allow_user_locale enabled" do
|
||||
context "set_locale_from_accept_language_header enabled" do
|
||||
context "accept-language header differs from default locale" do
|
||||
before do
|
||||
SiteSetting.stubs(:allow_user_locale).returns(true)
|
||||
SiteSetting.stubs(:set_locale_from_accept_language_header).returns(true)
|
||||
SiteSetting.stubs(:default_locale).returns("en")
|
||||
set_accept_language("fr")
|
||||
end
|
||||
@ -178,7 +179,7 @@ describe TopicsController do
|
||||
|
||||
context "the preferred locale includes a region" do
|
||||
it "returns the locale and region separated by an underscore" do
|
||||
SiteSetting.stubs(:allow_user_locale).returns(true)
|
||||
SiteSetting.stubs(:set_locale_from_accept_language_header).returns(true)
|
||||
SiteSetting.stubs(:default_locale).returns("en")
|
||||
set_accept_language("zh-CN")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user