Thư viện QueriesDịch bài viết từ "Classic editor"
Dịch bài viết từ "Classic editor"
Query này dịch một bài viết trong "Classic editor" sang ngôn ngữ mong muốn.
Tùy thuộc vào tham số $update, bản dịch sẽ được lưu vào cùng bài viết đó hoặc tạo thành một bài viết mới.
########################################################################
#
# Variables:
# - postId: ID of the post to translate
# - toLang: The language code to translate to, from Google Translate (https://cloud.google.com/translate/docs/languages)
# - update: Indicate if to update the post, or create a new one
#
# *********************************************************************
#
# === Description ===
#
# This Persisted GraphQL query translates a "Classic editor" post to
# the desired language.
#
# Depending on the `$update` parameter, the translation will either
# be saved as:
#
# - false (default): A new post (using the translated slug) with "draft" status
# - true: The same post
#
########################################################################
query InitializeVariables
@configureWarningsOnExportingDuplicateVariable(enabled: false)
{
isGutenbergEditorEnabled
@export(as: "isGutenbergEditorEnabled")
}
query FetchData($postId: ID!)
@depends(on: "InitializeVariables")
@skip(if: $isGutenbergEditorEnabled)
{
post(by: { id: $postId }, status: any) {
title
rawContent
rawExcerpt
@export(
as: "dataToTranslate",
affectAdditionalFieldsUnderPos: [1, 2]
)
}
}
query TranslateData(
$toLang: String!
)
@depends(on: "FetchData")
@skip(if: $isGutenbergEditorEnabled)
{
translations: _echo(value: $dataToTranslate)
@underEachJSONObjectProperty
@strTranslate(to: $toLang)
@underJSONObjectProperty(by: { key: "title" })
@export(as: "translatedTitle")
@underJSONObjectProperty(by: { key: "rawContent" })
@export(as: "translatedRawContent")
@underJSONObjectProperty(by: { key: "rawExcerpt" })
@export(as: "translatedRawExcerpt")
}
mutation TranslateClassicEditorPost(
$postId: ID!
$update: Boolean! = false
)
@depends(on: "TranslateData")
@skip(if: $isGutenbergEditorEnabled)
{
createPost(input: {
title: $translatedTitle,
contentAs: {
html: $translatedRawContent
},
excerpt: $translatedRawExcerpt,
status: draft
})
@skip(if: $update)
{
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
title
slug
rawContent
rawExcerpt
}
}
updatePost(input: {
id: $postId,
title: $translatedTitle,
contentAs: {
html: $translatedRawContent
},
excerpt: $translatedRawExcerpt
})
@include(if: $update)
{
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
title
rawContent
rawExcerpt
}
}
}