Thư viện QueriesDịch bài viết (hàng loạt) từ "Classic editor"
Dịch bài viết (hàng loạt) từ "Classic editor"
Query này dịch nhiều bài viết "Classic editor" cùng một lúc (hàng loạt), đồng thời thực hiện một lần gọi duy nhất đến API Google Translate chứa toàn bộ văn bản cần dịch từ tất cả các bài viết.
Query này yêu cầu endpoint phải bật Nested Mutations.
########################################################################
#
# 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
}
}
}
}