@inContext ile yerel fiyat ve dil gösterme
Sorguya @inContext(country, language) ekleyerek Storefront API’den fiyatları alıcının para biriminde, içeriği de kendi dilinde alın.
- API
- Storefront API
- İşlemler
- @inContext direktifi, product, localization
- Erişim yetkisi
- unauthenticated_read_product_listings
- API sürümü
- 2026-10
- Son kontrol
Kısaca
Headless bir mağazada yerel fiyat göstermek için sorguya alıcının ülkesi (ve dili) ile @inContext direktifini ekleyin, örneğin @inContext(country: CH, language: DE). Fiyatlar o pazarın para biriminde döner, o pazarda yayında olmayan ürünler de listeden çıkar. Direktif olmadan ana pazarın ürünleri ve mağaza para birimindeki fiyatlar gelir.
Nasıl kullanılır
- Alıcının ülkesini (URL’den, bir seçiciden ya da konumdan) ve dilini belirleyin.
- Bunları LocalProductPrices’a değişken olarak verin; direktif, değişken listesinden sonra operation’ın üzerinde durur.
- Fiyatları biçimlendirmek ve ülke seçiciyi kurmak için localization.country.currency’yi okuyun.
- Sepet fiyatları tutsun diye sepette de buyerIdentity.countryCode olarak aynı ülkeyi kullanın.
Kod
product-prices-in-context.graphqlquery LocalProductPrices($handle: String!, $country: CountryCode!, $language: LanguageCode!)
@inContext(country: $country, language: $language) {
localization {
country {
isoCode
currency {
isoCode
symbol
}
}
language {
isoCode
}
}
product(handle: $handle) {
title
priceRange {
minVariantPrice {
amount
currencyCode
}
}
variants(first: 10) {
nodes {
id
title
price {
amount
currencyCode
}
compareAtPrice {
amount
currencyCode
}
}
}
}
}
product-prices-in-context.variables.json{
"handle": "linen-shirt",
"country": "CH",
"language": "DE"
}
product-prices-in-context.response.json{
"data": {
"localization": {
"country": {
"isoCode": "CH",
"currency": {
"isoCode": "CHF",
"symbol": "CHF"
}
},
"language": {
"isoCode": "DE"
}
},
"product": {
"title": "Leinenhemd",
"priceRange": {
"minVariantPrice": {
"amount": "49.0",
"currencyCode": "CHF"
}
},
"variants": {
"nodes": [
{
"id": "gid://shopify/ProductVariant/1111111111",
"title": "S",
"price": {"amount": "49.0", "currencyCode": "CHF"},
"compareAtPrice": null
}
]
}
}
}
}
Lintel tarafından yazıldı. MIT lisansı: kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.
Sınırlar ve özel durumlar
- Ülkenin para birimi mağazanın ödeme ayarlarında etkin olmalı ve ülke aktif bir pazara ait olmalıdır.
- Sorgular @inContext kullanır; sepetler ise bağlamı buyerIdentity’de saklar.
- Siparişler, hangi bağlamda sorgularsanız sorgulayın verildikleri para biriminde kalır.
- Hydrogen’da storefront.query, $country ve $language değişkenlerini i18n ayarlarından doldurur; @inContext direktifini sorguya yine siz yazarsınız.
Sık sorulan sorular
- Storefront API ile fiyatları başka bir para biriminde nasıl alırım?
- Sorguya @inContext(country: XX) ekleyin. Fiyatlar, o ülkenin ait olduğu pazarın para biriminde döner.
- @inContext neden hâlâ mağaza para birimini döndürüyor?
- Büyük ihtimalle ülke kendi para birimi olan aktif bir pazarda değil ya da o para birimi mağazanın ödeme ayarlarında etkin değil.
- @inContext içeriği de çevirir mi?
- Evet, language argümanıyla. Ürün başlıkları ve açıklamaları, çevirisi olan yerlerde o dilde döner.
- Gösterilen tarihte, 2026-10 sürümünün Admin veya Storefront API şemasıyla doğrulandı. İstek adresinizdeki sürümü kontrol edin.
- Örneklerdeki ID’ler ve mağaza adresleri yer tutucudur. Kendi değerlerinizle değiştirin.
- Admin API çağrıları uygulamanızdan bir erişim anahtarı (access token) ister. Admin API anahtarını asla vitrine ya da temaya koymayın.
- MIT lisansı. Kodu kendi mağazanızda da müşteri işlerinizde de kullanabilirsiniz.
Mağazanız için kurulmasını, test edilmesini ve bakımını isterseniz: API entegrasyonları.
