Queries-Bibliothek
Queries-BibliothekBeiträge (in Bulk) aus dem "Classic editor" übersetzen

Beiträge (in Bulk) aus dem "Classic editor" übersetzen

Diese Query übersetzt mehrere "Classic editor"-Beiträge gleichzeitig (in Bulk) und führt dabei einen einzigen Aufruf der Google Translate API durch, der den gesamten zu übersetzenden Text aller Beiträge enthält.

Diese Query erfordert, dass der Endpoint Nested Mutations aktiviert hat.

########################################################################
# 
# Variables:
#   - postIds: List of IDs of the posts to translate
#   - toLang: The language code to translate to, from Google Translate (https://cloud.google.com/translate/docs/languages)
#
# *********************************************************************
#
# === Description ===
#
# This Persisted GraphQL query translates multiple "Classic editor"
# posts at once (in bulk), while executing a single call to the Google
# Translate API containing all text to translate from all the posts.
#
# The translation for each post will be saved under the same post.
#
# See Persisted Query "Translate post (Classic editor)" for additional
# documentation.
#
########################################################################
 
query InitializeVariables
  @configureWarningsOnExportingDuplicateVariable(enabled: false)
{
  isGutenbergEditorEnabled
    @export(as: "isGutenbergEditorEnabled")
}
 
query FetchData($postIds: [ID!]!)
  @depends(on: "InitializeVariables")
  @skip(if: $isGutenbergEditorEnabled)
{
  posts(filter: { ids: $postIds, status: any } ) {
    title
    rawContent
    rawExcerpt
      @export(
        as: "dataToTranslate",
        affectAdditionalFieldsUnderPos: [1, 2]
        type: DICTIONARY
      )
  }
}
 
query TranslateData(
  $toLang: String!
)
  @depends(on: "FetchData")
  @skip(if: $isGutenbergEditorEnabled)
{  
  translatedData: _echo(value: $dataToTranslate)
    @underEachJSONObjectProperty
      @underEachJSONObjectProperty
        @strTranslate(to: $toLang)
    @export(as: "translatedData")
}
 
query GenerateMutationInputs
  @depends(on: "TranslateData")
  @skip(if: $isGutenbergEditorEnabled)
{  
  postInputs: _echo(value: $translatedData)
    @underEachJSONObjectProperty(
      passValueOnwardsAs: "postTranslatedData"
      affectDirectivesUnderPos: [1, 2, 3, 4]
    )
      @applyField(
        name: "_objectProperty",
        arguments: {
          object: $postTranslatedData,
          by: {
            key: "title",
          }
        },
        passOnwardsAs: "postTranslatedTitle"
      )
      @applyField(
        name: "_objectProperty",
        arguments: {
          object: $postTranslatedData,
          by: {
            key: "rawExcerpt",
          }
        },
        passOnwardsAs: "postTranslatedRawExcerpt"
      )
      @applyField(
        name: "_objectProperty",
        arguments: {
          object: $postTranslatedData,
          by: {
            key: "rawContent",
          }
        },
        passOnwardsAs: "postTranslatedRawContent"
      )
      @applyField(
        name: "_echo",
        arguments: {
          value: {
            title: $postTranslatedTitle,
            excerpt: $postTranslatedRawExcerpt,
            contentAs: {
              html: $postTranslatedRawContent
            }
          }
        },
        setResultInResponse: true
      )
    @export(as: "postInputs")
}
 
mutation TranslateClassicEditorPosts($postIds: [ID!]!)
  @depends(on: "GenerateMutationInputs")
  @skip(if: $isGutenbergEditorEnabled)
{
  updatePosts: posts(filter: { ids: $postIds, status: any } ) {
    id
    postInput: _objectProperty(
      object: $postInputs,
      by: {
        key: $__id
      }
    )
      @remove
    update(input: $__postInput) {
      status
      errors {
        __typename
        ...on ErrorPayload {
          message
        }
      }
      post {
        id
        title
        rawExcerpt
        rawContent
      }
    }
  }
}