Liquid, JavaScript, Themes
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?
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
}
}
}
read_products
, write_translations
und write_locales
.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
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
}
}
}
}
}
{
translatableResourcesByIds(first: 1, resourceIds: ["' . $resourceId . '"]) {
nodes {
resourceId
translatableContent {
digest
}
}
}
}
$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
);
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