FROM CACHE - de_header
Diese Community hat auf Peer-to-Peer-Support umgestellt. Der Shopify Support wird diese Community nicht mehr betreuen. Wir empfehlen dir, dich mit anderen Händler:innen und Partner:innen in Verbindung zu setzen, um Unterstützung zu erhalten und Erfahrungen auszutauschen. Bitte melde weiterhin alles, was gegen unseren Verhaltenskodex verstößt, oder Inhalte, die deiner Meinung nach entfernt werden sollten.
Die Community zieht um! Ab 7. Juli ist die aktuelle Community für ca. Zwei Wochen schreibgeschützt. Du kannst die Inhalte durchsuchen, aber es können vorübergehend keine Beiträge verfasst werden. Mehr Informationen.

App Translate & Adapt: Produkt-Metafelder mit GraphQL erstellen und abfragen

App Translate & Adapt: Produkt-Metafelder mit GraphQL erstellen und abfragen

Philipp_S
Shopify Partner
19 1 1

Hallo,

wir nutzen in unserem Shop die App Translate & Adapt. Auf Produktebene haben wir mehrere Metafelder erstellt, die ich problemlos über die REST-API abfragen und aktualisieren kann.


Frage:
Wie können die Werte dieser Metafelder, nachdem sie für ein Produkt angelegt wurden, übersetzt werden?

Soweit ich herausfinden konnte, scheint dies nur über GraphQL möglich zu sein. Allerdings konnte ich bisher keine passende Query finden, die mir die übersetzten Metafelder zurückgibt.

Habe im Shopify Backend bei Translate & Adapt ein Meta Feld auf Englisch befüllt und versucht dieses Feld in EN abzufragen. Erhalte alle möglichen Meta Felder jedoch nicht das Englische.

-> Wie müsste man es angehen damit man die Englischen Meta Felder Abfragen und erstellen kann?

   
 
Mit dieser Abfrage erhalte ich alle Meta Felder (de)
$queryFull = '{
        product(id: "gid://shopify/Product/' . $proId . '") {
            id
            metafields(first: 20) {
                edges {
                    node {
                        id
                        namespace
                        key
                        value
                        type
                    }
                }
            }
        }
    }';
3 ANTWORTEN 3

Gabe
Shopify Staff (Retired)
19233 3005 4401

Hey @Philipp_S 

Um die übersetzten Werte der Metafelder in Shopify über GraphQL abzufragen und zu erstellen, kannst du hoffentlich die Translations API in Kombination mit der GraphQL oder REST API verwenden. Ggf. muss aber dafür ausschließlich das GraphQL verwenden und siehe dazu auch unseren Tutorial hier und auch hier  der vielleicht weiterhelfen kann. 

 

Hier ein Beispiel einer GraphQL-Abfrage aus unserer Doku entnommen:

 

{
  product(id: "gid://shopify/Product/YOUR_PRODUCT_ID") {
    id
    metafields(first: 20) {
      edges {
        node {
          id
          namespace
          key
          value
          type
          translations(locale: "en") {
            locale
            value
          }
        }
      }
    }
  }
}

 

Da wird das translations-Feld verwendet, um die übersetzten Werte des Metafelds in der gewünschten Sprache (z.B. Englisch) zu erhalten. Dann um ein Metafeld zu übersetzen, die Translations API verwenden:

 

mutation {
  translationsRegister(
    translations: [
      {
        key: "Metafield/gid://shopify/Metafield/YOUR_METAFIELD_ID",
        locale: "en",
        value: "Your translated value"
      }
    ]
  ) {
    userErrors {
      field
      message
    }
  }
}

 

  • Deine App muss authentifizierte Anfragen an die GraphQL Admin API senden können.
  • Deine App benötigt die Zugriffsbereiche read_products, write_translations und write_locales.
  • Du hast mindestens ein Produkt in deinem Shopify-Shop erstellt.

Aktiviere zunächst die Locale, in der du übersetzen möchtest (z.B. Spanisch). GraphQL Mutation und Variablen:

 

mutation enableLocale($locale: String!) {
  	shopLocaleEnable(locale: $locale) {
    	shopLocale {
      	locale
      	name
      	published
    	}
  	}
}

 

 

{
  	"locale": "es"
}

 

Rufe die übersetzbaren Inhalte eines Produkts ab, um die Werte zu erhalten, die übersetzt werden sollen.GraphQL Abfrage:

 

{
  	translatableResources(first: 1, resourceType: PRODUCT) {
    	edges {
      	node {
        	resourceId
        	translatableContent {
          	key
          	value
          	digest
          	locale
        	}
      	}
    	}
  	}
}

 

Erstelle die Übersetzung für das Produkt. Dabei muss der digest-Wert aus der vorherigen Abfrage verwendet werden. GraphQL Mutation und Variablen:

 

mutation CreateTranslation($id: ID!, $translations: [TranslationInput!]!) {
  	translationsRegister(resourceId: $id, translations: $translations) {
    	userErrors {
      	message
      	field
    	}
    	translations {
      	locale
      	key
      	value
    	}
  	}
}

 

 

{
  	"id": "gid://shopify/Product/YOUR_PRODUCT_ID",
  	"translations": [
    	{
      	"key": "title",
      	"value": "Camiseta buena",
      	"locale": "es",
      	"translatableContentDigest": "dcf8d211f6633dac78dbd15c219a81b8931e4141204d18fba8c477afd19b75f9"
    	}
  	]
}

 

Veröffentlichte die Locale, damit die Übersetzung im Shop sichtbar wird. GraphQL Mutation:

 

mutation updateLocale {
  	shopLocaleUpdate(locale: "es", shopLocale: {published: true}) {
    	userErrors {
      	message
      	field
    	}
    	shopLocale {
      	name
      	locale
      	primary
      	published
    	}
  	}
}

 

Um die übersetzten Metafelder abzurufen, kannst du die folgende Abfrage verwenden - GraphQL Abfrage:

 

{
  product(id: "gid://shopify/Product/YOUR_PRODUCT_ID") {
    id
    metafields(first: 20) {
      edges {
        node {
          id
          namespace
          key
          value
          type
          translations(locale: "es") {
            locale
            value
          }
        }
      }
    }
  }
}

 

Hoffe das hilft dir weiter - lass wissen falls nicht! 😉

---
Warum nicht etwas Gamification in das Shop einbauen, um deinen Kunden etwas Fun im Shop anzubieten? Gerne kann ich bei Interesse Tipps dazu geben!

Hast du weitere Fragen zum Shop? Gebe einfach ein Suchbegriff oben in der Suchleiste der Community Landingpage ein, denn das Thema haben wir sehr wahrscheinlich schon besprochen. Halte bitte Ausschau in deiner E-Mail auf Notifications zu Antworten auf deine Fragen in der Community.

 

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

Philipp_S
Shopify Partner
19 1 1

Hallo @Gabe 
danke für deine Antwort, ich konnte nun die korrekten Abfragen erstellen und nun die Meta Felder übersetzen.
Meine Lösung unterscheidet sich zu deiner Bz. funktionierten deine Abfragen nicht, das Feld "translations" muss anders Abgefragt werden.

Hier meine Lösung ggf. hilft dies andere:

 

Im Shopify Backend:

- Sprachen aktiviert 
- Externen App (API) Rechte angepasst (v. 2024-04 
- Meta Felder erstellt


1. Abfrage der Meta Felder eines Produktes mit seiner ID:

{
        product(id: "gid://shopify/Product/' . $proId . '") {
            id
            metafields(first: 10) {
                edges {
                    node {
                        id
                        key
                        value
                    }
                }
            }
        }
    }

Dann mit der jeweiligen Meta ID erneut den "digest" Wert Abfragen:
{
        translatableResourcesByIds(first: 1, resourceIds: ["' . $resourceId . '"]) {
            nodes {
                resourceId
                translatableContent {
                    digest
                }
            }
        }
    }

Dann das jeweilige Meta Feld Updaten:
 $queryFull = 'mutation translationsRegister($resourceId: ID!, $translations: [TranslationInput!]!) {
            translationsRegister(resourceId: $resourceId, translations: $translations) {
                translations {
                    key
                    value
                },
                userErrors {
                    message
                    field
                }
            }
        }';

        $variables = array(
            "resourceId" => "gid://shopify/Metafield/" . $meta_id,
            "translations" => [
                [
                    "locale" => $locale,
                    "key"    => "value",
                    "value"  => $dummyArr[$i],
                    "translatableContentDigest" => $meta_digest
                ]
            ]
        );

        $curl_post_data = array(
            "query"     => $queryFull,
            "variables" => $variables
        );

Gabe
Shopify Staff (Retired)
19233 3005 4401

Hey @Philipp_S 

 

Wow, eine super Lösung um die Metafelder in Shopify zu übersetzen und abzurufen, einschließlich der korrekten GraphQL-Abfragen und -Mutationen. Du nutzt praktisch die GraphQL-API, um die Metafeld-IDs und Digest-Werte zu callen, und dann die Translations API, um die Übersetzungen zu registrieren. Dann die übersetzten Metafelder abfragen, indem du die translations-Funktion in der GraphQL-Abfrage verwendest. Great work! 😉

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog