Sha256: da6dc5f19c196c78894ee9324dc954503815c394092eab6954f2d7ec067ffe30

Contents?: true

Size: 1.33 KB

Versions: 7

Compression:

Stored size: 1.33 KB

Contents

# frozen_string_literal: true
module Decidim
  module Api
    # This type represents a translated field in multiple languages.
    TranslatedFieldType = GraphQL::ObjectType.define do
      name "TranslatedField"
      description "A translated field"

      field :locales do
        type types[types.String]
        description "Lists all the locales in which this translation is available"
        resolve ->(obj, _args, _ctx) { obj.keys }
      end

      field :translations do
        type !types[LocalizedStringType]
        description "All the localized strings for this translation."

        argument :locales do
          type types[types.String]
          description "A list of locales to scope the translations to."
        end

        resolve ->(obj, args, _ctx) {
          translations = obj.stringify_keys
          translations = translations.slice(*args["locales"]) if args["locales"]

          translations.map { |locale, text| OpenStruct.new(locale: locale, text: text) }
        }
      end

      field :translation do
        type types.String
        description "Returns a single translation given a locale."
        argument :locale, !types.String, "A locale to search for"

        resolve ->(obj, args, _ctx) {
          translations = obj.stringify_keys
          translations[args["locale"]]
        }
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
decidim-0.0.4 decidim-api/lib/decidim/api/types/translated_field.rb
decidim-api-0.0.3 lib/decidim/api/types/translated_field.rb
decidim-0.0.3 decidim-api/lib/decidim/api/types/translated_field.rb
decidim-api-0.0.2 lib/decidim/api/types/translated_field.rb
decidim-0.0.2 decidim-api/lib/decidim/api/types/translated_field.rb
decidim-api-0.0.1 lib/decidim/api/types/translated_field.rb
decidim-0.0.1 decidim-api/lib/decidim/api/types/translated_field.rb