Comments (7)
@SanchezWarren @felixknox The language parameter should work if you've also set the corresponding languages in Shopify -> Settings -> Languages, with one language being set as default.
With that in place, it's than possible to switch Checkout language in real-time based on user-selected headless site language. This is what works for me:
// memo buildClient function with language state
let client;
function ShopifyBuyInit(isLang) {
client = useMemo(
() =>
Client.buildClient(
{
domain: process.env.GATSBY_SHOPIFY_STORE_URL,
storefrontAccessToken: process.env.GATSBY_SHOPIFY_STOREFRONT_TOKEN,
language: isLang,
},
fetch
),
[isLang]
);
}
// in StoreProvider component get language code and initialize client
ShopifyBuyInit(getNewLang(location));
// intializing Checkouts
useEffect(() => {
const initializeCheckout = async () => {
// ...
// ... if there's existing checkout get language prop from customAttributes
// ... compare lang prop with current location
// ... if language is different, create new checkout
// ... addLineItems from previous checkout
// ... else create a fresh checkout with customAttribute lang input
};
initializeCheckout();
}, [location]);
from js-buy-sdk.
I have the same issue. Try clearing cache, reload the site, go to checkout again. That should work.
But the problem is it only works the first time. Once the client initialized, the checkout is cached, so any subsequent language changes don't have any effect. I tried re-initializing the client once the user switches to a different language on headless site, but the checkout persists in using the language that was set on initial load.
I was told on Shopify Discord I have to set buyerIdentity { countryCode: "" }
as input for the client. But this API doesn't seem to support this field:
from js-buy-sdk.
I have the same problem and @ansmlc solution does not work with me with language: 'ar-SA'
Any other suggestions on this?
Thanks
from js-buy-sdk.
I ended up doing a fundamental update of the web-shop to use the storefront graphql api and now I have full control.
I like shopify-buy lib, it get's you going quickly, but it also has serious limitations (as also stated in docs). Would be great it extendability was easy/do-able.
from js-buy-sdk.
Thanks @felixknox
It looks odd that the language parameter is there but it does not work at all.
For the simple redirection I wanted to do going for the storefront is overkilling...
Perhaps someone else has a hint :)
from js-buy-sdk.
Thank you @ansmlc. This is working for me. 🌟 Only note is that I could only access the current language on client.config.language
.
from js-buy-sdk.
Does this also change the currency that is returned?
from js-buy-sdk.
Related Issues (20)
- The types @types/shopify-buy HOT 2
- Several fields on the Storefront API were marked as deprecated HOT 3
- Fetch is not defined in production - Netlify HOT 1
- Discussions Partners and Developers Events Groups Learn Notifications Messages Alocard Alocard Shopify APIs and SDKs Development discussions around Shopify APIs Return management just got easier! We’ve launched Customer Self-Serve Returns to all Shopify merchants. Click here to learn more! Shopify Community Partners and Developers Shopify APIs and SDKs Make a Request from a Public Endpoint to a Non-Public Endpoint Inside an App Make a Request from a Public Endpoint to a Non-Public Endpoint Inside an App HOT 1
- Adding a discount code to an empty card doesn't work
- `barcode` field is missing for product variants
- Shopify-buy unable to retrieve several parameteres HOT 3
- Collection not returning all products HOT 1
- Set country context when recalling checkout object HOT 1
- Error: Field 'presentmentPrices' doesn't exist on type 'ProductVariant' HOT 11
- No field of name "pageInfo" found on type "Metafield" in schema. No field of name "tags" found on type "Product" in schema HOT 2
- Question: Is it possible to set the channel name for an order so that it shows up in Shopify in the order list?
- Update needed : fetchByHandle is deprecated for product as well as collection
- Remove or disable email input when email is passed in the checkout.create method HOT 1
- Field must have selections field 'price' returns MoneyV2 but has no selections
- Bundles through JS Buy SDK? HOT 5
- Fetching products returns outdated data depending on API Version HOT 2
- Migration to Storefront Cart API HOT 3
- Amount for product variant is incorrectly typed, expected number, got string.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from js-buy-sdk.