Improve locale selection for Potlatch 2 and iD
This commit is contained in:
parent
a7e67846a7
commit
720c8d0e35
4 changed files with 26 additions and 21 deletions
|
@ -288,39 +288,44 @@ class ApplicationController < ActionController::Base
|
|||
def set_locale
|
||||
response.header['Vary'] = 'Accept-Language'
|
||||
|
||||
if @user
|
||||
if !@user.languages.empty?
|
||||
request.user_preferred_languages = @user.languages
|
||||
response.header['Vary'] = '*'
|
||||
elsif !request.user_preferred_languages.empty?
|
||||
@user.languages = request.user_preferred_languages
|
||||
@user.save
|
||||
end
|
||||
if @user && !@user.languages.empty?
|
||||
request.user_preferred_languages = @user.languages
|
||||
response.header['Vary'] = '*'
|
||||
end
|
||||
|
||||
if request.compatible_language_from(I18n.available_locales).nil?
|
||||
I18n.locale = select_locale
|
||||
|
||||
if @user && @user.languages.empty? && !request.user_preferred_languages.empty?
|
||||
@user.languages = request.user_preferred_languages
|
||||
@user.save
|
||||
end
|
||||
|
||||
response.headers['Content-Language'] = I18n.locale.to_s
|
||||
end
|
||||
|
||||
def select_locale(locales = I18n.available_locales)
|
||||
if params[:locale]
|
||||
request.user_preferred_languages = [ params[:locale] ]
|
||||
end
|
||||
|
||||
if request.compatible_language_from(locales).nil?
|
||||
request.user_preferred_languages = request.user_preferred_languages.collect do |pl|
|
||||
pls = [ pl ]
|
||||
|
||||
while pl.match(/^(.*)-[^-]+$/)
|
||||
pls.push($1) if I18n.available_locales.include?($1.to_sym)
|
||||
pls.push($1) if locales.include?($1) or locales.include?($1.to_sym)
|
||||
pl = $1
|
||||
end
|
||||
|
||||
pls
|
||||
end.flatten
|
||||
|
||||
if @user and not request.compatible_language_from(I18n.available_locales).nil?
|
||||
@user.languages = request.user_preferred_languages
|
||||
@user.save
|
||||
end
|
||||
end
|
||||
|
||||
I18n.locale = params[:locale] || request.compatible_language_from(I18n.available_locales) || I18n.default_locale
|
||||
|
||||
response.headers['Content-Language'] = I18n.locale.to_s
|
||||
request.compatible_language_from(locales) || I18n.default_locale
|
||||
end
|
||||
|
||||
helper_method :select_locale
|
||||
|
||||
def api_call_handle_error
|
||||
begin
|
||||
yield
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
hash = '#map=' + (coord.zoom || 17) + '/' + coord.lon + '/' + coord.lat
|
||||
}
|
||||
|
||||
$('#id-embed').attr('src', '<%= id_url %>' + hash);
|
||||
$('#id-embed').attr('src', '<%= id_url :locale => params[:locale] %>' + hash);
|
||||
</script>
|
||||
<% else %>
|
||||
<script type="text/javascript">alert("<%= t 'site.edit.id_not_configured' %>")</script>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<script type="text/javascript">alert("<%= t 'site.edit.potlatch2_not_configured' %>")</script>
|
||||
<% end %>
|
||||
|
||||
<% locale = request.compatible_language_from(Potlatch2::LOCALES.keys) || "en" %>
|
||||
<% locale = select_locale(Potlatch2::LOCALES.keys) %>
|
||||
|
||||
<script type="text/javascript" defer="defer">
|
||||
var changesaved=true;
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
'Please upgrade your browser or use Potlatch 2 to edit the map.';
|
||||
document.getElementById('id-container').className = 'unsupported';
|
||||
} else {
|
||||
<% locale = request.compatible_language_from(ID::LOCALES) || "en" %>
|
||||
<% locale = select_locale(ID::LOCALES) %>
|
||||
|
||||
var id = iD()
|
||||
.embed(true)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue