Skip to content

Commit 74e5ab2

Browse files
committed
fix: ensure proper context binding and improve translation logic in CoCreateServerSideRender
1 parent 36c1a5f commit 74e5ab2

File tree

1 file changed

+21
-18
lines changed

1 file changed

+21
-18
lines changed

src/index.js

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ class CoCreateServerSideRender {
143143
let dom = parse(file.src);
144144
dom = await render(dom, "root");
145145
if (file.langRegion || file.lang) {
146-
dom = translate(dom, file);
147-
let langLinkTags = createLanguageLinkTags(file);
146+
dom = await this.translate(dom, file);
147+
let langLinkTags = this.createLanguageLinkTags(file);
148148
const head = dom.querySelector("head");
149149
if (head && langLinkTags) {
150150
const linksFragment = parse(
@@ -202,29 +202,32 @@ class CoCreateServerSideRender {
202202
async translate(dom, file) {
203203
let langRegion = file.langRegion;
204204
let lang = file.lang;
205-
if (file.translations & (langRegion || lang)) {
205+
if (file.translations && (langRegion || lang)) {
206206
for (let translation of file.translations) {
207-
let el = dom.querySelectorAll(translation.selector);
208-
if (translation.innerHTML) {
209-
let content =
210-
translation.innerHTML[langRegion] ||
211-
translation.innerHTML[lang];
212-
if (content) {
213-
el.innerHTML = content;
207+
let elements = dom.querySelectorAll(translation.selector);
208+
for (let el of elements) {
209+
if (translation.innerHTML) {
210+
let content =
211+
translation.innerHTML[langRegion] ||
212+
translation.innerHTML[lang];
213+
if (content) {
214+
el.innerHTML = content;
215+
}
214216
}
215-
}
216-
if (translation.attributes) {
217-
for (let [key, language] of Object.entries(
218-
translation.attributes
219-
)) {
220-
let value = language[langRegion] || language[lang];
221-
if (value) {
222-
el.setAttribute(key, value);
217+
if (translation.attributes) {
218+
for (let [key, language] of Object.entries(
219+
translation.attributes
220+
)) {
221+
let value = language[langRegion] || language[lang];
222+
if (value) {
223+
el.setAttribute(key, value);
224+
}
223225
}
224226
}
225227
}
226228
}
227229
}
230+
return dom;
228231
}
229232
}
230233

0 commit comments

Comments
 (0)