Show translation status in README.md#7715
Conversation
* Only `oc.svg` remains in an image format * `check.translation.php` still supports `.png` even though there aren't any PNGs as of right now
|
I think we can do it without using any third-party like Something like that, but the code can be improved, and links added. I will try to find time later tonight but others are welcome <svg xmlns="http://www.w3.org/2000/svg" width="1400" height="40">
<g fill="white" font-size="11" font-family="Verdana" text-anchor="middle">
<g transform="translate(0,0)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇨🇿 91%</text>
</g>
<g transform="translate(140,0)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇩🇪 96%</text>
</g>
<g transform="translate(280,0)">
<rect rx="3" width="140" height="20" fill="darkred"/>
<text x="70" y="14.0">🇬🇷 23%</text>
</g>
<g transform="translate(420,0)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇬🇧 100%</text>
</g>
<g transform="translate(560,0)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇺🇸 99%</text>
</g>
<g transform="translate(700,0)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇪🇸 94%</text>
</g>
<g transform="translate(840,0)">
<rect rx="3" width="140" height="20" fill="gold"/>
<text x="70" y="14.0">🇮🇷 79%</text>
</g>
<g transform="translate(980,0)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇫🇮 94%</text>
</g>
<g transform="translate(1120,0)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇫🇷 99%</text>
</g>
<g transform="translate(1260,0)">
<rect rx="3" width="140" height="20" fill="darkred"/>
<text x="70" y="14.0">🇮🇱 46%</text>
</g>
<g transform="translate(0,20)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇭🇺 98%</text>
</g>
<g transform="translate(140,20)">
<rect rx="3" width="140" height="20" fill="gold"/>
<text x="70" y="14.0">🇮🇩 70%</text>
</g>
<g transform="translate(280,20)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇮🇹 99%</text>
</g>
<g transform="translate(420,20)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇯🇵 98%</text>
</g>
<g transform="translate(560,20)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇰🇷 91%</text>
</g>
<g transform="translate(700,20)">
<rect rx="3" width="140" height="20" fill="gold"/>
<text x="70" y="14.0">🇱🇻 85%</text>
</g>
<g transform="translate(840,20)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇳🇱 92%</text>
</g>
<g transform="translate(980,20)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇵🇱 99%</text>
</g>
<g transform="translate(1120,20)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇧🇷 90%</text>
</g>
<g transform="translate(1260,20)">
<rect rx="3" width="140" height="20" fill="green"/>
<text x="70" y="14.0">🇵🇹 90%</text>
</g>
</g>
</svg> |
|
I think that would have to be multiple SVG files at least? https://github.com/Inverle/FreshRSS/blob/test/README.md something like this <svg xmlns="http://www.w3.org/2000/svg">
<g fill="white" font-size="11" font-family="Verdana" text-anchor="middle">
<rect rx="3" width="60" height="20" fill="green" />
<text x="30" y="14">🇨🇿 99%</text>
</g>
</svg> |
Multiple files are an option, but less efficient than a consolidated one |
|
P.S. And no need for XML entities, the native Unicode is easier |
|
And something like this if we want to embed an image flag <svg xmlns="http://www.w3.org/2000/svg">
<g fill="white" font-size="11" font-family="Verdana" text-anchor="middle">
<rect rx="3" width="65" height="20" fill="green" />
<image x="7" y="2" width="16" height="16" href="oc.svg" />
<text x="42" y="14">99%</text>
</g>
</svg>
These flag characters don't display correctly in my terminal, it's just for testing
The status for each language is supposed to be a clickable link to a GH code search which shows the TODO entries, so it's needed anyway |
|
Is #7715 (comment) a better option than generating local SVGs? edit: that looks like this, and is inconsistent with image flags |
|
Oops https://github.com/FreshRSS/FreshRSS/blob/16cacbe38db8906750d69b0b4e0653d798781829/README.md note: github is blocking the |
|
I still think a single SVG would be the best option, having a single place to update, single HTTP request, no third-part tool involved. Quick improvement below. More work on sizes, margins needed. <svg xmlns="http://www.w3.org/2000/svg" width="700" height="120">
<g fill="white" font-size="11" font-family="Verdana" text-anchor="middle">
<g transform="translate(0,0)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fcs+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇨🇿 91%</text>
</a>
</g>
<g transform="translate(70,0)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fde+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇩🇪 96%</text>
</a>
</g>
<g transform="translate(140,0)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fel+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="darkred"/>
<text x="35" y="14.0">🇬🇷 23%</text>
</a>
</g>
<g transform="translate(210,0)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇬🇧 100%</text>
</a>
</g>
<g transform="translate(280,0)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen-us+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇺🇸 99%</text>
</a>
</g>
<g transform="translate(350,0)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇪🇸 94%</text>
</a>
</g>
<g transform="translate(420,0)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="gold"/>
<text x="35" y="14.0">🇮🇷 79%</text>
</a>
</g>
<g transform="translate(490,0)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffi+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇫🇮 94%</text>
</a>
</g>
<g transform="translate(560,0)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffr+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇫🇷 99%</text>
</a>
</g>
<g transform="translate(0,20)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhe+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="darkred"/>
<text x="35" y="14.0">🇮🇱 46%</text>
</a>
</g>
<g transform="translate(70,20)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇭🇺 98%</text>
</a>
</g>
<g transform="translate(140,20)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fid+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="gold"/>
<text x="35" y="14.0">🇮🇩 70%</text>
</a>
</g>
<g transform="translate(210,20)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇮🇹 99%</text>
</a>
</g>
<g transform="translate(280,20)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇯🇵 98%</text>
</a>
</g>
<g transform="translate(350,20)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇰🇷 91%</text>
</a>
</g>
<g transform="translate(420,20)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="gold"/>
<text x="35" y="14.0">🇱🇻 85%</text>
</a>
</g>
<g transform="translate(490,20)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fnl+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇳🇱 92%</text>
</a>
</g>
<g transform="translate(490,20)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Foc+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<g transform="translate(12, 5) scale(0.017)">
<desc>Flag of Occitania</desc>
<path fill="#d4001c" d="M0 0h797.96v530.973H0z"/>
<g fill="#fddd00">
<path d="m184.195 267 9.126 7.138c14.632 11.443 38.501 35.909 45.015 77.3l1.721 10.924 8.361-7.312c14.038-12.277 55.754-44.434 116.757-53.224-8.792 61.003-40.948 102.718-53.224 116.756l-7.313 8.361 10.924 1.721c41.392 6.515 65.857 30.383 77.301 45.015l7.137 9.126 7.138-9.126c11.443-14.632 35.908-38.5 77.3-45.015l10.924-1.721-7.313-8.361c-12.276-14.038-44.432-55.753-53.224-116.756 61.003 8.79 102.719 40.947 116.757 53.224l8.361 7.312 1.72-10.924c6.515-41.391 30.384-65.857 45.015-77.3l9.127-7.138-9.127-7.138c-14.631-11.443-38.5-35.908-45.015-77.299l-1.72-10.925-8.361 7.312c-14.038 12.277-55.754 44.434-116.757 53.225 8.792-61.003 40.948-102.719 53.224-116.756l7.313-8.362-10.924-1.72c-41.392-6.516-65.857-30.384-77.3-45.016L400 51.195l-7.137 9.126c-11.444 14.632-35.909 38.5-77.301 45.016l-10.924 1.72 7.313 8.362c12.276 14.037 44.432 55.753 53.224 116.756-61.003-8.791-102.719-40.948-116.757-53.225l-8.361-7.312-1.721 10.925c-6.514 41.391-30.383 65.856-45.015 77.299zm35.126 0c27.829-25.798 34.255-54.425 34.255-54.425 40.626 34.242 103.986 41.96 135.665 43.666-1.707-31.679-9.424-95.039-43.666-135.666 0 0 28.626-6.425 54.425-34.255 25.799 27.83 54.425 34.255 54.425 34.255-34.242 40.627-41.959 103.987-43.666 135.666 31.679-1.706 95.039-9.424 135.665-43.666 0 0 6.426 28.627 34.255 54.425-27.829 25.799-34.255 54.425-34.255 54.425-40.626-34.242-103.986-41.96-135.665-43.666 1.707 31.679 9.424 95.039 43.666 135.666 0 0-28.626 6.425-54.425 34.255-25.799-27.83-54.425-34.255-54.425-34.255 34.242-40.627 41.959-103.987 43.666-135.666-31.679 1.706-95.039 9.424-135.665 43.666 0 0-6.426-28.626-34.255-54.425"/>
<circle cx="176.775" cy="267" r="18"/>
<circle cx="237.575" cy="164.576" r="18"/>
<circle cx="237.575" cy="369.425" r="18"/>
<circle cx="297.576" cy="104.575" r="18"/>
<circle cx="297.576" cy="429.426" r="18"/>
<circle cx="400" cy="43.774" r="18"/>
<circle cx="400" cy="490.226" r="18"/>
<circle cx="502.424" cy="104.575" r="18"/>
<circle cx="502.424" cy="429.426" r="18"/>
<circle cx="562.425" cy="164.576" r="18"/>
<circle cx="562.425" cy="369.425" r="18"/>
<circle cx="623.226" cy="267" r="18"/>
</g>
</g>
<text x="43" y="14.0">92%</text>
</a>
</g>
<g transform="translate(560,20)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇵🇱 99%</text>
</a>
</g>
<g transform="translate(0,40)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-br+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇧🇷 90%</text>
</a>
</g>
<g transform="translate(70,40)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-pt+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="gold"/>
<text x="35" y="14.0">🇵🇹 89%</text>
</a>
</g>
<g transform="translate(140,40)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="gold"/>
<text x="35" y="14.0">🇷🇺 88%</text>
</a>
</g>
<g transform="translate(210,40)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="gold"/>
<text x="35" y="14.0">🇸🇰 86%</text>
</a>
</g>
<g transform="translate(280,40)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="gold"/>
<text x="35" y="14.0">🇹🇷 89%</text>
</a>
</g>
<g transform="translate(350,40)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-cn+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇨🇳 91%</text>
</a>
</g>
<g transform="translate(420,40)">
<a href="https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fzh-tw+%2F%28TODO%7CDIRTY%29%24%2F">
<rect rx="3" width="70" height="20" fill="green"/>
<text x="35" y="14.0">🇹🇼 91%</text>
</a>
</g>
</g>
</svg> |
|
@Alkarex Question: how are the links in the SVG going to work if GH embeds the SVG in edit: here you can see that the links do not work https://github.com/Inverle/FreshRSS/blob/test/README.md |
Thanks for the test. I did not know. I suggest removing the decimal precision in the percentages to reduce the noise |
https://github.com/FreshRSS/FreshRSS/blob/db725d9c41f51872cf518536a23788b93c324e52/README.md |
|
Is this fine? FreshRSS/cli/check.translation.php Lines 108 to 114 in 7c8d2f7 |
|
Okay |
|
|
I somehow broke the syntax highlighting |
Fixed |
|
By the way, emoji flags don't display in Chrome on Windows:
because Windows doesn't include flag emojis, and Chrome refuses to add a font for them like Firefox did |
|
Ok, it is not so bad though, with the fallback letters |
|
Yes, Microsoft Edge is based on Chromium too, so that's why.
I have been wondering recently if it would be better to change flags for names instead, but it would probably take more space in the readme if in image form. Translation progress
or hidden like this on the top of the readme (although less visible): Translation progress
Ideas are welcome |
|
How about something like this on top of readme? 🌍 Translation progress
(percentages aren't real, just an example) |
|
Looks nice. I wouldn't be inclined to go for |
|
Should it be somewhere below instead? (like other tables) Perhaps there should be an anchor link to the table in the readme on the top, or link to a markdown file |
|
Yes, I'd add something like this at the top (that's the second paragraph):
And then above or below |
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [freshrss/freshrss](https://freshrss.org/) ([source](https://github.com/FreshRSS/FreshRSS)) | minor | `1.26.3` -> `1.27.0` | --- ### Release Notes <details> <summary>FreshRSS/FreshRSS (freshrss/freshrss)</summary> ### [`v1.27.0`](https://github.com/FreshRSS/FreshRSS/blob/HEAD/CHANGELOG.md#2025-08-18-FreshRSS-1270) [Compare Source](FreshRSS/FreshRSS@1.26.3...1.27.0) - Features - Implement support for HTTP `429 Too Many Requests` and `503 Service Unavailable`, obey `Retry-After` [#​7760](FreshRSS/FreshRSS#7760) - Add sort by category title, or by feed title [#​7702](FreshRSS/FreshRSS#7702) - Add search operator `c:` for categories like `c:23,34` or `!c:45,56` [#​7696](FreshRSS/FreshRSS#7696) - Custom feed favicons [#​7646](FreshRSS/FreshRSS#7646), [#​7704](FreshRSS/FreshRSS#7704), [#​7717](FreshRSS/FreshRSS#7717), [#​7792](FreshRSS/FreshRSS#7792) - Rework fetch favicons for fewer HTTP requests [#​7767](FreshRSS/FreshRSS#7767) - Add more unicity criteria based on title and/or content [#​7789](FreshRSS/FreshRSS#7789) - Automatically restore user configuration from backup [#​7682](FreshRSS/FreshRSS#7682) - API add support for states in `s` parameter of `streamId` [#​7695](FreshRSS/FreshRSS#7695) - Improve sharing via Print [#​7728](FreshRSS/FreshRSS#7728) - Redirect to the login page from bookmarklet instead of 403 [#​7782](FreshRSS/FreshRSS#7782) - Clean local cache more often, when refreshing feeds [#​7827](FreshRSS/FreshRSS#7827) - Security - Implement reauthentication (*sudo* mode) [#​7753](FreshRSS/FreshRSS#7753) - Add `Content-Security-Policy: frame-ancestors` [#​7677](FreshRSS/FreshRSS#7677) - Ensure CSP everywhere [#​7810](FreshRSS/FreshRSS#7810) - Show warning when unsafe CSP policy is in use [#​7804](FreshRSS/FreshRSS#7804) - Fix access rights when creating a new user [#​7783](FreshRSS/FreshRSS#7783) - Improve security of form for user details [#​7771](FreshRSS/FreshRSS#7771), [#​7786](FreshRSS/FreshRSS#7786) - Disallow setting non-existent theme [#​7722](FreshRSS/FreshRSS#7722) - Regenerate cookie ID after logging out [#​7762](FreshRSS/FreshRSS#7762) - Require current password when setting new password [#​7763](FreshRSS/FreshRSS#7763) - Add missing access checks for feed-related actions [#​7768](FreshRSS/FreshRSS#7768) - Strip more unsafe attributes such as `referrerpolicy`, `ping` [#​7770](FreshRSS/FreshRSS#7770) - Remove unneeded execution permissions [#​7802](FreshRSS/FreshRSS#7802) - Bug fixing - Fix redirections when scraping from HTML [#​7654](FreshRSS/FreshRSS#7654), [#​7741](FreshRSS/FreshRSS#7741) - Fix multiple authentication HTTP headers [#​7703](FreshRSS/FreshRSS#7703) - Fix HTML queries with a single feed [#​7730](FreshRSS/FreshRSS#7730) - WebSub: only perform a redirection when coming from WebSub [#​7738](FreshRSS/FreshRSS#7738) - Include enclosures in entries’ hash [#​7719](FreshRSS/FreshRSS#7719) - Negative side-effect: users of the option to *automatically mark updated articles as unread* will once have some articles with enclosures re-appear as unread - Fix cancellation of slider exit UI [#​7705](FreshRSS/FreshRSS#7705) - Honor *disable update* on update page [#​7733](FreshRSS/FreshRSS#7733) - Fix no registration limit setting [#​7751](FreshRSS/FreshRSS#7751) - Fix XML encoding of sharing functions [#​7822](FreshRSS/FreshRSS#7822) - SimplePie - Fix propagation of HTTP error codes [#​7670](FreshRSS/FreshRSS#7670) - Fix support for XML feeds with HTML entities [#​7689](FreshRSS/FreshRSS#7689), [simplepie#915](simplepie/simplepie#915) - Fix feeds encoded in UTF-16LE [#​7691](FreshRSS/FreshRSS#7691), [simplepie#916](simplepie/simplepie#916) - Various upstream contributions [simplepie#917](simplepie/simplepie#917), [simplepie#924](simplepie/simplepie#924), [simplepie#926](simplepie/simplepie#926), [simplepie#932](simplepie/simplepie#932), [simplepie#933](simplepie/simplepie#933) - Sync upstream [#​7706](FreshRSS/FreshRSS#7706), [FreshRSS/simplepie#45](FreshRSS/simplepie#45), [#​7775](FreshRSS/FreshRSS#7775), [FreshRSS/simplepie#50](FreshRSS/simplepie#50), [#​7824](FreshRSS/FreshRSS#7824), [#​7825](FreshRSS/FreshRSS#7825), - Fix regex *Backtrack limit was exhausted* in `clean_hash()` [#​7813](FreshRSS/FreshRSS#7813), [FreshRSS/simplepie#48](FreshRSS/simplepie#48) - Deployment - Docker default image (Debian 12 Bookworm) updated to PHP 8.2.29 [#​7805](FreshRSS/FreshRSS#7805) - Docker alternative image updated to Alpine 3.22 with PHP 8.4.11 and Apache 2.4.65 [#​7740](FreshRSS/FreshRSS#7740), [#​7740](FreshRSS/FreshRSS#7740), [#​7803](FreshRSS/FreshRSS#7803) - Start supporting PHP 8.5+ [#​7787](FreshRSS/FreshRSS#7787), [#​7826](FreshRSS/FreshRSS#7826) - Docker Alpine dev image `:newest` updated to PHP 8.5-alpha and Apache 2.4.65 [#​7773](FreshRSS/FreshRSS#7773) - Docker: interpolate `FRESHRSS_INSTALL` and `FRESHRSS_USER` variables [#​7725](FreshRSS/FreshRSS#7725) - Docker: Reduce how much data needs to be chown/chmod’ed on container startup [#​7793](FreshRSS/FreshRSS#7793) - Test for database PDO typing support during install (relevant for MySQL / MariaDB with obsolete driver) [#​7651](FreshRSS/FreshRSS#7651) - Extensions - Add API endpoint for extensions [#​7576](FreshRSS/FreshRSS#7576) - Expose the reading modes for extensions [#​7668](FreshRSS/FreshRSS#7668), [#​7688](FreshRSS/FreshRSS#7688) - New extension hook `before_login_btn` [#​7761](FreshRSS/FreshRSS#7761) - UI - Improve *mark as read* request showing popup due to `onbeforeunload` [#​7554](FreshRSS/FreshRSS#7554) - Fix lazy-loading for `<video poster="...">` and `<image>` [#​7636](FreshRSS/FreshRSS#7636) - Avoid styling `<code>` inside of `<pre>` [#​7797](FreshRSS/FreshRSS#7797) - Improve confirmation logic with `data-auto-leave-validation` [#​7785](FreshRSS/FreshRSS#7785) - Update `chart.js` to 4.5.0 [#​7752](FreshRSS/FreshRSS#7752), [#​7816](FreshRSS/FreshRSS#7816) - Various UI and style improvements: [#​7616](FreshRSS/FreshRSS#7616), [#​7811](FreshRSS/FreshRSS#7811) - I18n - Show translation status in README [#​7715](FreshRSS/FreshRSS#7715) - Improve Indonesian [#​7654](FreshRSS/FreshRSS#7654), [#​7721](FreshRSS/FreshRSS#7721) - Improve Persian [#​7795](FreshRSS/FreshRSS#7795) - Misc. - Improve PHP code [#​7642](FreshRSS/FreshRSS#7642), [#​7665](FreshRSS/FreshRSS#7665), [#​7761](FreshRSS/FreshRSS#7761), [#​7781](FreshRSS/FreshRSS#7781), [#​7794](FreshRSS/FreshRSS#7794) - Update dev dependencies [#​7708](FreshRSS/FreshRSS#7708), [#​7709](FreshRSS/FreshRSS#7709), [#​7710](FreshRSS/FreshRSS#7710), [#​7711](FreshRSS/FreshRSS#7711), [#​7776](FreshRSS/FreshRSS#7776), [#​7777](FreshRSS/FreshRSS#7777) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4zNS4wIiwidXBkYXRlZEluVmVyIjoiNDEuMzUuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=--> Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/1253 Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net> Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>




Increases size of:
README.md17.5 KiB->21.3 KiBREADME.fr.md23 KiB->26.9 KiBThis should improve the visibility of which languages need help with translation and hopefully invite more contributors.
See the new
README.mdwith translation status or the newREADME.fr.md