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/contentreporequest.uritoen-usfolder.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
bitwiseflag (just like the Unix Octal permissions):For each locale, we use a
powers of 2number to present. For example:If
path/to/imagedoes not exist infrandzh-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/imageexists infr:10(for sumed flags) &8(for fr) = 1. The result is not zero, so the image is not infr.path/to/imageexists 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.
checkImageReferencesinbuild\check-images.js: is used to fallback thesrcattribute ofimgtoen-USsources while the src does not exist inl10n.buildLiveSamplePagesinkumascript\src\live-sample.js: is used to build_sample_.some_id.html, but it will not check theimage referenceNote that, livesample in https://developer.mozilla.org/fr/docs/Web/CSS/filter does have element
imagewith 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 pathattranslated-contentrepo but in thecontentrepo, we just replace therelative pathwith theabsolute path(tocontentrepo) before writing toindex.htmlfile.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-USwhenS3report that the file is not exists inl10n).My english is not very well, apologies.