Demo Gato GraphQL + Bricks Builder + Translation

Menerjemahkan konten Bricks

Terjemahkan konten teks pada halaman Bricks ke bahasa yang ditentukan

Leonardo Losoviz
Leonardo Losoviz -
Logo
Image
Target Image
Target Image

Kita dapat menggunakan Gato GraphQL dengan ekstensi Bricks dan ekstensi Translation untuk menerjemahkan konten dalam elemen halaman Bricks ke berbagai bahasa secara otomatis.

Query ini menerjemahkan konten dalam elemen heading, text, text-basic, button, dan dropdown pada halaman Bricks ke bahasa lain.

Kita harus menyediakan variabel berikut:

  • customPostId: ID dari custom post Bricks yang akan diperbarui
  • targetLanguageCode: Kode bahasa tujuan penerjemahan (misalnya, "es", "fr", "de")

Berikut adalah query GraphQL-nya:

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
      }
    }
  }
}

Variabelnya akan terlihat seperti ini:

{
  "customPostId": 123,
  "targetLanguageCode": "es"
}

Berlangganan newsletter kami

Tetap update dengan semua pembaruan Gato GraphQL.