From 3f528a4e2b5560027c61795072b9dfbb7caa2f97 Mon Sep 17 00:00:00 2001 From: HADDAD Zineddine Date: Wed, 17 May 2023 15:14:48 +0200 Subject: [PATCH 1/3] add get_languages and get_submission_languages helpers --- .../serializers/json.rb | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/ontologies_linked_data/serializers/json.rb b/lib/ontologies_linked_data/serializers/json.rb index aa30ae54..bcc2fef8 100644 --- a/lib/ontologies_linked_data/serializers/json.rb +++ b/lib/ontologies_linked_data/serializers/json.rb @@ -47,6 +47,26 @@ def self.serialize(obj, options = {}) private + def self.get_languages(submission, user_languages) + + if submission + + submission.bring :naturalLanguage + langauges = get_submission_languages(submission.naturalLanguage) + + # intersection of the two arrays , if the requested language is not :all + result_lang = user_languages == :all ? langauges : Array(user_languages) & langauges + result_lang = result_lang.first if result_lang.length == 1 + + end + + return result_lang + end + + def self.get_submission_languages(submission_natural_language = []) + submission_natural_language.map { |natural_language| natural_language["iso639"] && natural_language.split('/').last[0..1].to_sym }.compact + end + def self.type(current_cls, hashed_obj) if current_cls.respond_to?(:type_uri) # For internal class From a6ccc9f61614c5588c1e4f09cc115f125a7242ec Mon Sep 17 00:00:00 2001 From: HADDAD Zineddine Date: Wed, 17 May 2023 15:15:51 +0200 Subject: [PATCH 2/3] use get_languages helper to get the current context language --- lib/ontologies_linked_data/serializers/json.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/serializers/json.rb b/lib/ontologies_linked_data/serializers/json.rb index bcc2fef8..a4b907bb 100644 --- a/lib/ontologies_linked_data/serializers/json.rb +++ b/lib/ontologies_linked_data/serializers/json.rb @@ -6,6 +6,10 @@ class JSON CONTEXTS = {} def self.serialize(obj, options = {}) + + submission = obj.respond_to?(:submission) ? obj.submission : nil + result_lang = self.get_languages(submission, options[:lang]) + hash = obj.to_flex_hash(options) do |hash, hashed_obj| current_cls = hashed_obj.respond_to?(:klass) ? hashed_obj.klass : hashed_obj.class @@ -40,7 +44,7 @@ def self.serialize(obj, options = {}) context = {"@context" => context_hash} hash.merge!(context) end - hash['@context']['@language'] = options[:lang] if hash['@context'] + hash['@context']['@language'] = result_lang if hash['@context'] end MultiJson.dump(hash) end From e9bc9a96cc1497c7014589010a0d5a0edd55557e Mon Sep 17 00:00:00 2001 From: HADDAD Zineddine Date: Wed, 17 May 2023 15:17:15 +0200 Subject: [PATCH 3/3] extract get_language helper to get the requested language --- lib/ontologies_linked_data/serializer.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/ontologies_linked_data/serializer.rb b/lib/ontologies_linked_data/serializer.rb index 0ca9c359..c1d9f630 100644 --- a/lib/ontologies_linked_data/serializer.rb +++ b/lib/ontologies_linked_data/serializer.rb @@ -84,7 +84,9 @@ def self.response(options = {}) end def self.serialize(type, obj, params, request) - lang = params['lang'] || params['language']|| Goo.main_languages.first + + lang = self.get_language(params) + only = params['display'] || [] only = only.split(',') unless only.is_a?(Array) all = only[0] == 'all' @@ -106,5 +108,11 @@ def self.print_stacktrace? end end + def self.get_language(params) + lang = params['lang'] || params['language'] || Goo.main_languages&.first.to_s || 'en' + lang = lang.split(',').map {|l| l.downcase.to_sym} + return lang.length == 1 ? lang.first : lang + end + end end \ No newline at end of file