yari: Live samples in translated-content cannot use images from content
Summary
The images used in live sample ({{EmbedLiveSample}}
) are not served (404) when they are not duplicated on mdn/translated-content.
URL
https://developer.mozilla.org/fr/docs/Web/CSS/filter
Reproduction steps
- Go to https://developer.mozilla.org/fr/docs/Web/CSS/filter
- Checkout mdn/translated-content as of e1b9e2c and a local yari
- Compare live samples in the page
Expected behavior
Both (local and production) should match (at least after some time)
Actual behavior
In production https://yari-demos.prod.mdn.mozit.cloud/fr/docs/Web/CSS/filter/test_form_3.jpeg is 404
Device
Laptop
Browser
Firefox
Browser version
Stable
Operating system
Windows
Screenshot
Anything else?
Previously https://github.com/mdn/yari/pull/5215 was merged, it worked locally, I waited a bit and made https://github.com/mdn/translated-content/pull/4549
https://github.com/mdn/translated-content/issues/3752
Validations
- I have read the Community Participation Guidelines.
- I have verified that there isn’t already an issue that reports the same bug to avoid creating a duplicate.
- I have checked that this is a concrete bug. For Q&A open a GitHub Discussion.
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 16 (15 by maintainers)
Commits related to this issue
- Readd images to workaround mdn/yari#5652 — committed to SphinxKnight/translated-content by SphinxKnight 2 years ago
- Duplicate image from en-us to fix #5703 and workaround mdn/yari#5652. — committed to SphinxKnight/translated-content by SphinxKnight 2 years ago
- Fix images for live samples while mdn/yari#5652 — committed to yanniser/translated-content by SphinxKnight a year ago
- locate images of the rotating earth,sun and moon (#10996) Fix images for live samples while mdn/yari#5652 Co-authored-by: SphinxKnight <julien.gattelier@gmail.com> — committed to mdn/translated-content by yanniser a year ago
- Update and adding the image while mdn/yari#5652 is a thing — committed to SphinxKnight/translated-content by SphinxKnight a year ago
- Fix #12105 (#12720) * Update and adding the image while mdn/yari#5652 is a thing * Typofix * Nitpicking --------- Co-authored-by: Carolyn Wu <87150472+cw118@users.noreply.github.com> — committed to mdn/translated-content by SphinxKnight a year ago
We have finally discussed this is in the engineering meeting today, and we will proceed by copying the referenced content images next to the translated-content during build.
A new idea about this:
We are now hosting about 9 locales. And we may modify the request before finding the file hosted on aws-S3 (so we can reduce redirects for those images which have to fallback to
en-US
, the method metioned above)So, we may go on this way (similar to the redirect logic of lambda@edge):
mdn/content
reporequest.uri
toen-us
folder.The problem is, there are too many images that are not in most l10n folders:
So this may not be a good idea to store each not-existed l10n image file path. (if there are 4000 image files in mdn/content in the future, we should store about 40000 filepaths).
Another way to flag those file is
bitwise
flag (just like the Unix Octal permissions):For each locale, we use a
powers of 2
number to present. For example:If
path/to/image
does not exist infr
andzh-cn
(but in other locales), we can compress the flags by sum up all the numbers:2
(for zh-cn) +8
(for fr) =10
.In Origin request, we can:
path/to/image
exists infr
:10
(for sumed flags) &8
(for fr) = 1. The result is not zero, so the image is not infr
.path/to/image
exists inzh-tw
:10
(for sumed flags) &4
(for zh-tw) = 0. The result is zero, so the image is inzh-tw
.For the sumed flags, we can just use a map to present (easy to stored as a json file):
And in JavaScript, the bitwise operation is safe for 32-bit integer, so we can host 32 locales at most. I think it’s enough for us for a long time (when we host more than 32 locales, we may have a new design about image file hosting)
Filled in #6644.
@SphinxKnight We believe that #5215 is not the cause. It just doesn’t seem to work for live samples (yet), and so removing the corresponding images from the translated-content repository caused the images to no longer show.
For now, the best solution would be to restore those images in translated-content.
I found two function which may help with this.
checkImageReferences
inbuild\check-images.js
: is used to fallback thesrc
attribute ofimg
toen-US
sources while the src does not exist inl10n
.buildLiveSamplePages
inkumascript\src\live-sample.js
: is used to build_sample_.some_id.html
, but it will not check theimage reference
Note that, livesample in https://developer.mozilla.org/fr/docs/Web/CSS/filter does have element
image
with attributexlink:href
.I have an idea about this problem, is it easier to build with correct image path ? It means that if the image is not in
relative path
attranslated-content
repo but in thecontent
repo, we just replace therelative path
with theabsolute path
(tocontent
repo) before writing toindex.html
file.Edit: seems a bit difficult, for we have a lot of ways to reference a image (CSS, javascript, HTML, SVG, etc…)
This doesn’t complicate the proxy any more (proxy is needed to check whether the image file exists in
en-US
whenS3
report that the file is not exists inl10n
).My english is not very well, apologies.