# ===============================================
# LOCALIZATION
# ===============================================

extend type Query {
  localization: LocalizationQuery
}

extend type Mutation {
  localization: LocalizationMutation
}

# -----------------------------------------------
# QUERIES
# -----------------------------------------------

type LocalizationQuery {
  locales: [LocalizationLocale]
  config: LocalizationConfig
  translations(locale: String!, namespace: String!): [Translation]
}

# -----------------------------------------------
# MUTATIONS
# -----------------------------------------------

type LocalizationMutation {
  downloadLocale(
    locale: String!
  ): DefaultResponse @auth(requires: ["manage:system"])

  updateLocale(
    locale: String!
    autoUpdate: Boolean!
    namespacing: Boolean!
    namespaces: [String]!
  ): DefaultResponse @auth(requires: ["manage:system"])
}

# -----------------------------------------------
# TYPES
# -----------------------------------------------

type LocalizationLocale {
  availability: Int!
  code: String!
  createdAt: Date!
  installDate: Date
  isInstalled: Boolean!
  isRTL: Boolean!
  name: String!
  nativeName: String!
  updatedAt: Date!
}

type LocalizationConfig {
  locale: String!
  autoUpdate: Boolean!
  namespacing: Boolean!
  namespaces: [String]!
}

type Translation {
  key: String!
  value: String!
}