Storyblock next.js react Переопределение дефолтного языка
В Storyblock определено два языка: русский, английский. Дефолтный язык русский. Необходимо добавить определение языка браузера. Если язык браузера русский - то сайт должен открываться на русском языке, если язык браузера любой другой - то сайт должен открываться на английском. Также на сайте есть переключатель языка (русский, английский). Определение браузерного языка с помощью Intl.NumberFormat().resolvedOptions().locale и перенаправление на английскую версию сайта работает, при этом тогда не работает переключатель языка на сайте. Это файл storyblok-service.js
import getConfig from "next/config";
import { DEV_MODE } from "../constants";
const { publicRuntimeConfig } = getConfig();
const { TOKEN } = publicRuntimeConfig;
class StoryblokService {
constructor () {
this.devMode = DEV_MODE;
this.token = TOKEN;
this.client = new StoryblokClient({
accessToken: this.token
});
this.query = {};
}
getCacheVersion () {
return this.client.cacheVersion;
}
get (slug, params) {
params = params || {};
if (this.devMode) {
params.version = "draft";
} else {
params.version = "published";
}
if (typeof window !== "undefined" && typeof window.StoryblokCacheVersion !== "undefined") {
params.cv = window.StoryblokCacheVersion;
}
return this.client.get(slug, params);
}
initEditor (reactComponent) {
if (window.storyblok) {
window.storyblok.init();
window.storyblok.on(["change", "published"], () => location.reload(true));
window.storyblok.on("input", (event) => {
if (event.story.content._uid === reactComponent.state.story.content._uid) {
event.story.content = window.storyblok.addComments(event.story.content, event.story.id);
window.storyblok.resolveRelations(event.story, ["featured-articles.articles"], () => {
reactComponent.setState({
story: event.story
});
});
}
});
}
}
setQuery (query) {
this.query = query;
}
getQuery (param) {
return this.query[param];
}
bridge () {
if (!this.getQuery("_storyblok") && !this.devMode) {
return "";
}
return (<script src={`//app.storyblok.com/f/storyblok-latest.js?t=${this.token}`}></script>);
}
}
const storyblokInstance = new StoryblokService();
export default storyblokInstance;```