Demo de Gato GraphQL + Bricks Builder + Translation
Traducir el contenido de Bricks
Traduce el contenido de texto de una página de Bricks al idioma indicado
Leonardo Losoviz -

Podemos usar Gato GraphQL con la extensión de Bricks y la extensión de Translation para traducir automáticamente el contenido de los elementos de una página de Bricks a diferentes idiomas.
Esta consulta traduce el contenido de los elementos heading, text, text-basic, button y dropdown de una página de Bricks a otro idioma.
Debemos proporcionar las siguientes variables:
customPostId: El ID del custom post de Bricks a actualizartargetLanguageCode: El código de idioma al que traducir el contenido (por ejemplo, "es", "fr", "de")
Aquí está la consulta GraphQL:
query InitializeGlobalVariables
@configureWarningsOnExportingDuplicateVariable(enabled: false)
{
emptyArray: _echo(value: [])
@export(as: "elementToUpdateIDs")
@export(as: "elementToUpdateTexts")
@remove
}
query GetAndTranslateBricksData(
$customPostId: ID!
$targetLanguageCode: String!
)
@depends(on: "InitializeGlobalVariables")
{
customPost(by:{ id: $customPostId }, status: any) {
id
title
bricksData(filterBy: { include: [
"heading",
"text",
"text-basic",
"button",
"dropdown",
] })
@underEachArrayItem(
affectDirectivesUnderPos: [1, 3]
)
@underJSONObjectProperty(by: { key: "id" })
@export(as: "elementToUpdateIDs")
@underJSONObjectProperty(
by: { path: "settings.text" }
affectDirectivesUnderPos: [1, 2]
)
@strTranslate(to: $targetLanguageCode)
@export(as: "elementToUpdateTexts")
}
}
query GetElementToUpdateData
@depends(on: "GetAndTranslateBricksData")
{
elementToUpdateMergeInputElements: _echo(value: $elementToUpdateTexts)
@underEachArrayItem(
passIndexOnwardsAs: "index",
passValueOnwardsAs: "elementToUpdateText"
affectDirectivesUnderPos: [1, 2]
)
@applyField(
name: "_arrayItem",
arguments: {
array: $elementToUpdateIDs,
position: $index
},
passOnwardsAs: "elementToUpdateID"
)
@applyField(
name: "_echo",
arguments: {
value: {
id: $elementToUpdateID,
settings: {
text: $elementToUpdateText
}
}
}
setResultInResponse: true
)
@export(as: "elementToUpdateMergeInputElements")
}
mutation StoreUpdatedElementText($customPostId: ID!)
@depends(on: "GetElementToUpdateData")
{
bricksMergeCustomPostElementDataItem(input: {
customPostID: $customPostId
elements: $elementToUpdateMergeInputElements
}) {
status
errors {
__typename
...on ErrorPayload {
message
@passOnwards(as: "message")
@fail(
message: $message
condition: ALWAYS
)
}
}
customPost {
__typename
...on CustomPost {
id
bricksData
}
}
}
}Las variables tendrían un aspecto similar a este:
{
"customPostId": 123,
"targetLanguageCode": "es"
}