Add a site setting to allow users to toggle I18n.locale

It is false by default.
This commit is contained in:
Jonathan Allard 2014-02-08 20:35:46 -05:00
parent c513725f26
commit 0592420e52
7 changed files with 29 additions and 9 deletions

View File

@ -11,6 +11,10 @@ Discourse.PreferencesController = Discourse.ObjectController.extend({
return Discourse.SiteSettings.allow_uploaded_avatars;
}.property(),
allowUserLocale: function() {
return Discourse.SiteSettings.allow_user_locale;
}.property(),
// By default we haven't saved anything
saved: false,

View File

@ -66,15 +66,17 @@
</div>
</div>
<div class="control-group">
<label class="control-label">{{i18n user.locale.title}}</label>
<div class="controls">
{{combobox valueAttribute="value" content=availableLocales value=locale none="user.locale.default"}}
{{#if allowUserLocale}}
<div class="control-group">
<label class="control-label">{{i18n user.locale.title}}</label>
<div class="controls">
{{combobox valueAttribute="value" content=availableLocales value=locale none="user.locale.default"}}
</div>
<div class='instructions'>
{{i18n user.locale.instructions}}
</div>
</div>
<div class='instructions'>
{{i18n user.locale.instructions}}
</div>
</div>
{{/if}}
<div class="control-group">
<label class="control-label">{{i18n user.bio}}</label>

View File

@ -109,7 +109,7 @@ class ApplicationController < ActionController::Base
end
def set_locale
I18n.locale = if current_user && current_user.locale.present?
I18n.locale = if SiteSetting.allow_user_locale && current_user && current_user.locale.present?
current_user.locale
else
SiteSetting.default_locale

View File

@ -549,6 +549,7 @@ en:
site_settings:
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"
min_post_length: "Minimum post length in characters"
min_private_message_post_length: "Minimum post length in characters for private messages"
max_post_length: "Maximum post length in characters"

View File

@ -484,6 +484,7 @@ fr:
description: "HTML qui sera ajouté au pied de toutes les pages"
site_settings:
default_locale: "Le langage par défaut de cette instance de Discourse (code ISO 639-1)"
allow_user_locale: "Permettre aux utilisateurs de choisir leur propre préférence de langue pour l'interface"
min_post_length: "Longueur minimale des messages en nombre de caractères"
min_private_message_post_length: "Longueur minimale des messages privés en nombre de caractères"
max_post_length: "Longueur maximale des messages en nombres de caractères"

View File

@ -24,6 +24,9 @@ basic:
default_locale:
default: 'en'
enum: 'LocaleSiteSetting'
allow_user_locale:
client: true
default: false
ga_tracking_code:
client: true
default: ''

View File

@ -55,6 +55,15 @@ describe TopicsController do
I18n.locale.should == :fr
end
it 'is sets the default locale when the setting not enabled' do
user = Fabricate(:user, locale: :fr)
log_in_user(user)
get :show, {topic_id: topic.id}
I18n.locale.should == :en
end
end
end