]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/amf_controller.rb
Don't use the (unset) value of I18n.locale to try and select a language
[rails.git] / app / controllers / amf_controller.rb
index 0b5e3a3ce39d90a6c50b2bb76fd6d2766fe8df5f..2aee84d0cf0bf475735d8564bf18ddfc43324c9f 100644 (file)
@@ -76,7 +76,7 @@ class AmfController < ApplicationController
         logger.info("Executing AMF #{message}(#{args.join(',')}):#{index}")
 
         case message
-          when 'getpresets';        results[index]=AMF.putdata(index,getpresets(args[0]))
+          when 'getpresets';        results[index]=AMF.putdata(index,getpresets(*args))
           when 'whichways';         results[index]=AMF.putdata(index,whichways(*args))
           when 'whichways_deleted'; results[index]=AMF.putdata(index,whichways_deleted(*args))
           when 'getway';            results[index]=AMF.putdata(index,getway(args[0].to_i))
@@ -213,13 +213,21 @@ class AmfController < ApplicationController
   # Return presets (default tags, localisation etc.):
   # uses POTLATCH_PRESETS global, set up in OSM::Potlatch.
 
-  def getpresets(lang) #:doc:
-    lang.gsub!(/[^\w\-]/,'')
+  def getpresets(usertoken,lang) #:doc:
+    user = getuser(usertoken)
+
+    if user && !user.languages.empty?
+      request.user_preferred_languages = user.languages
+    end
+
+    lang = request.compatible_language_from(getlocales)
 
     begin
+      # if not, try the browser language
       localised = YAML::load(File.open("#{RAILS_ROOT}/config/potlatch/localised/#{lang}/localised.yaml"))
     rescue
-      localised = "" # guess we'll just have to use the hardcoded English text instead
+      # fall back to hardcoded English text
+      localised = ""
     end
 
     begin
@@ -598,14 +606,6 @@ class AmfController < ApplicationController
   # 6. hash of node versions (node=>version)
 
   def putway(renumberednodes, usertoken, changeset_id, wayversion, originalway, pointlist, attributes, nodes, deletednodes) #:doc:
-
-logger.info("renumberednodes is #{renumberednodes.inspect}")
-logger.info("wayversion is #{wayversion}")
-logger.info("pointlist is #{pointlist.inspect}")
-logger.info("sendnodes is #{nodes.inspect}")
-logger.info("deletednodes is #{deletednodes.inspect}")
-
-
     amf_handle_error("'putway' #{originalway}") do
       # -- Initialise
        
@@ -859,6 +859,9 @@ logger.info("deletednodes is #{deletednodes.inspect}")
     }
   end
 
+  def getlocales
+    Dir.glob("#{RAILS_ROOT}/config/potlatch/localised/*").collect { |f| File.basename(f) }
+  end
 
   # ====================================================================
   # Alternative SQL queries for getway/whichways