# i18n

Published articles for i18n.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Babel in Khan Academy's i18n Toolchain

DevFeed: [Babel in Khan Academy's i18n Toolchain](<https://devfeed.tech/articles/babel-in-khan-academy-s-i18n-toolchain-27381.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/i18n-babel-plugin.htm>)

Author: Khan Academy

Published: 2015-06-22T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Babel](<https://devfeed.tech/topics/babel.md>), [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [ECMAScript](<https://devfeed.tech/topics/ecmascript.md>), [React](<https://devfeed.tech/topics/react.md>), [Test-driven development](<https://devfeed.tech/topics/tdd.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [argument](<https://devfeed.tech/tags/argument.md>), [arguments](<https://devfeed.tech/tags/arguments.md>), [ast](<https://devfeed.tech/tags/ast.md>), [babel](<https://devfeed.tech/tags/babel.md>), [build-system](<https://devfeed.tech/tags/build-system.md>), [callback](<https://devfeed.tech/tags/callback.md>), [class](<https://devfeed.tech/tags/class.md>), [classes](<https://devfeed.tech/tags/classes.md>), [destructuring](<https://devfeed.tech/tags/destructuring.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [es6](<https://devfeed.tech/tags/es6.md>), [eslint](<https://devfeed.tech/tags/eslint.md>), [exports](<https://devfeed.tech/tags/exports.md>), [foreach](<https://devfeed.tech/tags/foreach.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [function](<https://devfeed.tech/tags/function.md>), [functions](<https://devfeed.tech/tags/functions.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [jsx](<https://devfeed.tech/tags/jsx.md>), [news](<https://devfeed.tech/tags/news.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>)

### AI overview

Khan Academy's Babel migration preserved its custom i18n workflow by adding a Babel plugin that turns `<$_>` and `<$i18nDoNotTranslate>` JSX tags into function calls. Matching jstransform required retaining generated line numbers and exact whitespace in translation strings; the team compared Gettext `.pot` files from both build paths and used fixtures to isolate whitespace differences. Migration testing also caught two transformer issues: class output still contained `let` until `es6.blockScoping` was added to the whitelist, and Babel's function-name transformation could make a `setInterval` method call itself by shadowing the global. The article reports that Babel maintainers fixed the issues and describes the plugin as a relatively straightforward way to preserve the existing build workflow.

### Source excerpt

By Kevin Barabash We've been using ES6 (along with JSX) for sometime at Khan Academy. Right now, we're ... Read more

## postmarketOS in 2026-08: Conferences

DevFeed: [postmarketOS in 2026-08: Conferences](<https://devfeed.tech/articles/postmarketos-in-2026-08-conferences-106692.md>)

Original publisher: [Read original article](<https://nura.eco/blog/2026/09/06/pmOS-update-2026-08/>)

Published: 2026-09-06T00:00:00Z

Content type: news

Language: en

Sources: [postmarketOS](<https://devfeed.tech/sources/postmarketos-blog.md>)

Topics: [Developer Events](<https://devfeed.tech/topics/developer-events.md>), [Test automation](<https://devfeed.tech/topics/test-automation.md>), [Mobile Testing](<https://devfeed.tech/topics/mobile-testing.md>), [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [alpine](<https://devfeed.tech/tags/alpine.md>), [automated-testing](<https://devfeed.tech/tags/automated-testing.md>), [conferences](<https://devfeed.tech/tags/conferences.md>), [defcon](<https://devfeed.tech/tags/defcon.md>), [gdb](<https://devfeed.tech/tags/gdb.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [libc](<https://devfeed.tech/tags/libc.md>), [linux](<https://devfeed.tech/tags/linux.md>), [matrix](<https://devfeed.tech/tags/matrix.md>), [nura](<https://devfeed.tech/tags/nura.md>), [organizational](<https://devfeed.tech/tags/organizational.md>), [os](<https://devfeed.tech/tags/os.md>), [postmarketos](<https://devfeed.tech/tags/postmarketos.md>)

### AI overview

Conference activity was the month's main theme: postmarketOS had stands at FrOSCon, FOSSY and DEFCON, and its own conference schedule went live, though the event was already fully booked. Video recordings or streams were being explored without a guarantee. Project updates include faster GitLab hosting after repositories moved to SSDs, a production debuginfod server for postmarketOS and Alpine, and working collation in the musl locale overhaul. A newly accepted proposal aims to release an immutable postmarketOS version and improve automated hardware testing. A merged policy permits case-by-case support for bootstrap software associated with proprietary tools such as Steam, with safeguards including explicit user choice and disclosure, maintenance by at least two community members, and documentation. Other updates cover generic postmarketOS kernels for x86_64, Fairphone 5 rear camera support, and apkmr for testing merge requests.

### Source excerpt

Conferences has been the main theme of this month. We had stands at FrOSCon (photo, next to our friends from Phosh), FOSSY (pictured above) as well as DEFCON and the following postmarketOS / Linux Mobile related talks were given: Automated testing of a phone operating system (Luca at FrOSCon) Push-Benachrichtigungen. Dezentral und OpenSource (Daniel G. at FrOSCon) Random Cool Things from postmarketOS (a linux-based mobile OS) (Ranny at DEFCON) Controlling our devices: linux on mobile (Ranny at DEFCON) Besides that we have of course been very busy planning our own conference and are happy to announce that the schedule is now live! For those who did not get a ticket, the event is completely booked now but we are trying to do video recordings and/or live streams so you can watch the talks at home (no promises for that though since this is our first event). If all goes well, we might even follow up with another one next year. For those who will be there, make sure to join the Matrix chat / IRC channel. Organizational OSUOSL, who maintain gitlab.postmarketos.org, have reacted to slowdowns we have observed across the site and made it significantly faster by moving git repositories to SSDs. Thanks, Lance! Paul has joined the infrastructure team. NLnet and NGI Zero Core related news A production debuginfod server for postmarketOS and Alpine was set up, "allowing developers to automatically fetch debug symbols during crash analysis with tools like coredumpctl and gdb" (!9468, sync-debuginfod, milestone 34) An update was posted by Rich on the collation + i18n support in musl libc project: "I'm pleased to announce a big step in the #musl locale overhaul project: collation is working! This is the result of a long project to design data structures and logic that would admit honoring the full Unicode Collation Algorithm rules, including equivalence under normalization, and keep the size of collation weight tables for the entirety of Unicode under control." And last but not least,

## postmarketOS August 2026 Update: Conferences, Infrastructure, and Software Projects

DevFeed: [postmarketOS August 2026 Update: Conferences, Infrastructure, and Software Projects](<https://devfeed.tech/articles/postmarketos-in-2026-08-conferences-41779.md>)

Original publisher: [Read original article](<https://postmarketos.org/blog/2026/09/06/pmOS-update-2026-08/>)

Published: 2026-09-06T00:00:00Z

Content type: news

Language: en

Sources: [postmarketOS](<https://devfeed.tech/sources/postmarketos-blog.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Software Testing](<https://devfeed.tech/topics/software-testing.md>), [Operating system](<https://devfeed.tech/topics/operating-system.md>), [GitLab](<https://devfeed.tech/topics/gitlab.md>), [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [gdb](<https://devfeed.tech/topics/gdb.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [conferences](<https://devfeed.tech/tags/conferences.md>), [gdb](<https://devfeed.tech/tags/gdb.md>), [git](<https://devfeed.tech/tags/git.md>), [gitlab](<https://devfeed.tech/tags/gitlab.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [linux](<https://devfeed.tech/tags/linux.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [opensource](<https://devfeed.tech/tags/opensource.md>), [postmarketos](<https://devfeed.tech/tags/postmarketos.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The August 2026 postmarketOS update covers conference appearances and a newly scheduled project conference, infrastructure improvements including faster Git repositories and a new debuginfod server, progress on musl libc collation and internationalization support, and an accepted proposal for an immutable postmarketOS release with improved automated hardware testing.

### Source excerpt

Conferences has been the main theme of this month. We had stands at FrOSCon (photo, next to our friends from Phosh), FOSSY (pictured above) as well as DEFCON and the following postmarketOS / Linux Mobile related talks were given: Automated testing of a phone operating system (Luca at FrOSCon) Push-Benachrichtigungen. Dezentral und OpenSource (Daniel G. at FrOSCon) Random Cool Things from postmarketOS (a linux-based mobile OS) (Ranny at DEFCON) Controlling our devices: linux on mobile (Ranny at DEFCON) Besides that we have of course been very busy planning our own conference and are happy to announce that the schedule is now live! For those who did not get a ticket, the event is completely booked now but we are trying to do video recordings and/or live streams so you can watch the talks at home (no promises for that though since this is our first event). If all goes well, we might even follow up with another one next year. For those who will be there, make sure to join the Matrix chat / IRC channel. Organizational OSUOSL, who maintain gitlab.postmarketos.org, have reacted to slowdowns we have observed across the site and made it significantly faster by moving git repositories to SSDs. Thanks, Lance! Paul has joined the infrastructure team. NLnet and NGI Zero Core related news A production debuginfod server for postmarketOS and Alpine was set up, "allowing developers to automatically fetch debug symbols during crash analysis with tools like coredumpctl and gdb" (!9468, sync-debuginfod, milestone 34) An update was posted by Rich on the collation + i18n support in musl libc project: "I'm pleased to announce a big step in the #musl locale overhaul project: collation is working! This is the result of a long project to design data structures and logic that would admit honoring the full Unicode Collation Algorithm rules, including equivalence under normalization, and keep the size of collation weight tables for the entirety of Unicode under control." And last but not least,

## Implement RTL and bidirectional text support in web layouts

DevFeed: [Implement RTL and bidirectional text support in web layouts](<https://devfeed.tech/articles/rtl-and-bidirectional-text-89118.md>)

Original publisher: [Read original article](<https://specification.website/spec/i18n/rtl-support/>)

Author: Joost de Valk

Published: 2026-07-09T00:00:00Z

Content type: tutorial

Language: en

Sources: [The Website Specification](<https://devfeed.tech/sources/the-website-specification.md>)

Topics: [User interface design](<https://devfeed.tech/topics/ui-design.md>), [Responsive Design](<https://devfeed.tech/topics/responsive-design.md>), [Media Queries](<https://devfeed.tech/topics/media-queries.md>), [Icon font](<https://devfeed.tech/topics/icon-font.md>)

Tags: [bidi](<https://devfeed.tech/tags/bidi.md>), [css](<https://devfeed.tech/tags/css.md>), [flexbox](<https://devfeed.tech/tags/flexbox.md>), [html](<https://devfeed.tech/tags/html.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [layout](<https://devfeed.tech/tags/layout.md>), [locale](<https://devfeed.tech/tags/locale.md>), [recommended](<https://devfeed.tech/tags/recommended.md>), [rtl](<https://devfeed.tech/tags/rtl.md>)

### AI overview

The article explains how to support right-to-left scripts and bidirectional text in web interfaces. It recommends setting language and direction separately, using CSS logical properties, mirroring directional icons, and applying `dir="auto"` or `<bdi>` to handle user-generated and embedded text.

### Source excerpt

Sites that serve Arabic, Hebrew, Persian, or Urdu must set dir="rtl" and use CSS logical properties so layouts mirror correctly without hard-coded left and right.

## hreflang for language and regional URLs

DevFeed: [hreflang for language and regional URLs](<https://devfeed.tech/articles/hreflang-for-language-and-regional-urls-89110.md>)

Original publisher: [Read original article](<https://specification.website/spec/i18n/hreflang/>)

Author: Joost de Valk

Published: 2026-07-09T00:00:00Z

Content type: tutorial

Language: en

Sources: [The Website Specification](<https://devfeed.tech/sources/the-website-specification.md>)

Topics: [search-engines](<https://devfeed.tech/topics/search-engines.md>), [Microformats](<https://devfeed.tech/topics/microformats.md>)

Tags: [http](<https://devfeed.tech/tags/http.md>), [https](<https://devfeed.tech/tags/https.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [recommended](<https://devfeed.tech/tags/recommended.md>)

### AI overview

The article explains how hreflang signals equivalent language and regional URLs to search engines. It covers BCP 47 tags, reciprocal and self-referential alternate links, x-default, and choosing a single delivery method across HTML, HTTP headers, or XML sitemaps. It also identifies common implementation mistakes and explains that hreflang helps search engines serve a better-matched URL but does not affect ranking on its own.

### Source excerpt

hreflang tells search engines which language or regional version of a page to show to which user. It uses BCP 47 codes and must be reciprocal across all alternates.

## translate attribute for untranslatable content

DevFeed: [translate attribute for untranslatable content](<https://devfeed.tech/articles/translate-attribute-for-untranslatable-content-89120.md>)

Original publisher: [Read original article](<https://specification.website/spec/i18n/translate-attribute/>)

Author: Joost de Valk

Published: 2026-06-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [The Website Specification](<https://devfeed.tech/sources/the-website-specification.md>)

Topics: [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [alt text](<https://devfeed.tech/topics/alt-text.md>), [Localization (l10n)](<https://devfeed.tech/topics/localization.md>)

Tags: [alt-text](<https://devfeed.tech/tags/alt-text.md>), [astro](<https://devfeed.tech/tags/astro.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [code](<https://devfeed.tech/tags/code.md>), [edge](<https://devfeed.tech/tags/edge.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [language](<https://devfeed.tech/tags/language.md>), [optional](<https://devfeed.tech/tags/optional.md>), [safari](<https://devfeed.tech/tags/safari.md>), [translation](<https://devfeed.tech/tags/translation.md>)

### AI overview

The global HTML `translate` attribute tells machine translation systems whether to translate an element and its translatable attributes. The article explains how `translate="no"` can protect brand names, code, identifiers, and other text that should remain unchanged, and contrasts the attribute with `lang`.

### Source excerpt

The translate attribute marks content that automatic translation systems must leave alone -- brand names, code, and identifiers. Use translate="no" so Google Translate and the browser's built-in translation don't mangle terms that have no localised form.

## Locale-aware content

DevFeed: [Locale-aware content](<https://devfeed.tech/articles/locale-aware-content-89115.md>)

Original publisher: [Read original article](<https://specification.website/spec/i18n/locale-content/>)

Author: Joost de Valk

Published: 2026-05-29T18:54:03Z

Content type: tutorial

Language: en

Sources: [The Website Specification](<https://devfeed.tech/sources/the-website-specification.md>)

Topics: [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [Localization (l10n)](<https://devfeed.tech/topics/localization.md>)

Tags: [apis](<https://devfeed.tech/tags/apis.md>), [english](<https://devfeed.tech/tags/english.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [locale](<https://devfeed.tech/tags/locale.md>), [recommended](<https://devfeed.tech/tags/recommended.md>)

### AI overview

Locale-aware content adapts dates, numbers, currency, units, sorting, and other presentation details to a user's conventions. The article explains how to resolve one locale per request, format consistently with JavaScript Intl APIs and server-side ICU libraries, negotiate locale preferences, and avoid common formatting mistakes.

### Source excerpt

Dates, numbers, currency, and units should be formatted in the user's locale. Use Intl APIs in the browser and the same locale data server-side so output matches expectations.

## Avoid automatic IP-based language redirects

DevFeed: [Avoid automatic IP-based language redirects](<https://devfeed.tech/articles/avoid-automatic-ip-based-language-redirects-89109.md>)

Original publisher: [Read original article](<https://specification.website/spec/i18n/avoid-auto-geo-redirects/>)

Author: Joost de Valk

Published: 2026-05-29T18:54:03Z

Content type: tutorial

Language: en

Sources: [The Website Specification](<https://devfeed.tech/sources/the-website-specification.md>)

Topics: [Redirection](<https://devfeed.tech/topics/redirection.md>), [Search engine optimization (SEO)](<https://devfeed.tech/topics/seo.md>)

Tags: [avoid](<https://devfeed.tech/tags/avoid.md>), [i18n](<https://devfeed.tech/tags/i18n.md>)

### AI overview

Automatic IP or Accept-Language redirects can trap visitors in the wrong locale, prevent search engines from reaching translated pages, and break shared links. The article recommends letting users choose, keeping localized URLs stable, and using a non-blocking suggestion when appropriate. It also provides checks for verifying locale behavior.

### Source excerpt

Automatically redirecting visitors to a locale based on IP geolocation or Accept-Language is an anti-pattern. It traps users in the wrong language, breaks search crawlers, and breaks shared links. Let users choose.

## Internationalised Domain Names (IDN)

DevFeed: [Internationalised Domain Names (IDN)](<https://devfeed.tech/articles/internationalised-domain-names-idn-89111.md>)

Original publisher: [Read original article](<https://specification.website/spec/i18n/idn-support/>)

Author: Joost de Valk

Published: 2026-05-29T18:54:03Z

Content type: tutorial

Language: en

Sources: [The Website Specification](<https://devfeed.tech/sources/the-website-specification.md>)

Topics: [Domain Name System (DNS)](<https://devfeed.tech/topics/dns-resolution-process.md>), [DNS security](<https://devfeed.tech/topics/dns-security.md>)

Tags: [attacks](<https://devfeed.tech/tags/attacks.md>), [canonical](<https://devfeed.tech/tags/canonical.md>), [case-folding](<https://devfeed.tech/tags/case-folding.md>), [dns](<https://devfeed.tech/tags/dns.md>), [encoding](<https://devfeed.tech/tags/encoding.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [optional](<https://devfeed.tech/tags/optional.md>), [spoofing](<https://devfeed.tech/tags/spoofing.md>)

### AI overview

Internationalised domain names allow non-ASCII characters in hostnames. They are encoded as Punycode for DNS and shown in Unicode by browsers, subject to display policies designed to reduce homograph attacks. The article explains implementation practices for registration, certificates, hostname input, normalization, storage, and browser testing.

### Source excerpt

IDNs let domain names contain non-ASCII characters. They are encoded as Punycode on the wire and rendered as Unicode in the browser, subject to anti-spoofing rules.

## lang attribute on inline content

DevFeed: [lang attribute on inline content](<https://devfeed.tech/articles/lang-attribute-on-inline-content-89113.md>)

Original publisher: [Read original article](<https://specification.website/spec/i18n/lang-attribute/>)

Author: Joost de Valk

Published: 2026-05-29T18:54:03Z

Content type: tutorial

Language: en

Sources: [The Website Specification](<https://devfeed.tech/sources/the-website-specification.md>)

Topics: [Localization (l10n)](<https://devfeed.tech/topics/localization.md>), [Web Content Accessibility Guidelines](<https://devfeed.tech/topics/web-content-accessibility-guidelines.md>), [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>)

Tags: [english](<https://devfeed.tech/tags/english.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [japanese](<https://devfeed.tech/tags/japanese.md>), [required](<https://devfeed.tech/tags/required.md>), [wcag](<https://devfeed.tech/tags/wcag.md>)

### AI overview

The `lang` attribute identifies the natural language of an HTML element. This guide explains how to mark passages whose language differs from the surrounding page, use BCP 47 tags, and avoid common mistakes. It says correct declarations help screen readers pronounce text properly and support browser spelling, typography, search, and translation behavior.

### Source excerpt

Mark passages, phrases, and inline elements that differ from the document language with a lang attribute. WCAG 3.1.2 requires it so assistive tech can switch pronunciation.

## Plural rules and grammatical number

DevFeed: [Plural rules and grammatical number](<https://devfeed.tech/articles/plural-rules-and-grammatical-number-89117.md>)

Original publisher: [Read original article](<https://specification.website/spec/i18n/plural-rules/>)

Author: Joost de Valk

Published: 2026-05-29T18:54:03Z

Content type: tutorial

Language: en

Sources: [The Website Specification](<https://devfeed.tech/sources/the-website-specification.md>)

Topics: [structure](<https://devfeed.tech/topics/structure.md>), [Groovy](<https://devfeed.tech/topics/groovy.md>)

Tags: [categories](<https://devfeed.tech/tags/categories.md>), [code](<https://devfeed.tech/tags/code.md>), [costs](<https://devfeed.tech/tags/costs.md>), [developers](<https://devfeed.tech/tags/developers.md>), [go](<https://devfeed.tech/tags/go.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [implement](<https://devfeed.tech/tags/implement.md>), [language](<https://devfeed.tech/tags/language.md>), [languages](<https://devfeed.tech/tags/languages.md>), [like](<https://devfeed.tech/tags/like.md>), [number](<https://devfeed.tech/tags/number.md>), [plural](<https://devfeed.tech/tags/plural.md>), [recommended](<https://devfeed.tech/tags/recommended.md>), [review](<https://devfeed.tech/tags/review.md>), [rules](<https://devfeed.tech/tags/rules.md>), [strings](<https://devfeed.tech/tags/strings.md>), [translation](<https://devfeed.tech/tags/translation.md>), [type](<https://devfeed.tech/tags/type.md>)

### AI overview

The article explains how CLDR plural categories vary across languages and recommends using Intl.PluralRules to select localized message forms instead of hard-coded English singular/plural logic. It also covers ordinal rules, localized number formatting, and translation formats that let translators supply the needed forms.

### Source excerpt

Most languages don't pluralise like English. Use CLDR plural categories -- zero, one, two, few, many, other -- via Intl.PluralRules instead of hard-coded 'item' vs 'items' logic.

## Language switcher

DevFeed: [Language switcher](<https://devfeed.tech/articles/language-switcher-89114.md>)

Original publisher: [Read original article](<https://specification.website/spec/i18n/language-switcher/>)

Author: Joost de Valk

Published: 2026-05-29T18:54:03Z

Content type: tutorial

Language: en

Sources: [The Website Specification](<https://devfeed.tech/sources/the-website-specification.md>)

Topics: [Localization (l10n)](<https://devfeed.tech/topics/localization.md>), [CSS](<https://devfeed.tech/topics/css.md>)

Tags: [i18n](<https://devfeed.tech/tags/i18n.md>), [recommended](<https://devfeed.tech/tags/recommended.md>), [screen-readers](<https://devfeed.tech/tags/screen-readers.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A language switcher should label each locale in its own language, use per-link lang and hreflang attributes, avoid using flags to represent languages, and preserve the user's chosen page and explicit locale URL. The article also recommends making the control discoverable, indicating the current locale, and testing it with a screen reader.

### Source excerpt

List each locale in its own language ('Deutsch', '日本語', 'العربية') and mark it with the right lang attribute. Don't use flags -- flags are countries, not languages.

## Writing modes and CJK line breaking

DevFeed: [Writing modes and CJK line breaking](<https://devfeed.tech/articles/writing-modes-and-cjk-line-breaking-89121.md>)

Original publisher: [Read original article](<https://specification.website/spec/i18n/writing-modes/>)

Author: Joost de Valk

Published: 2026-05-29T18:54:03Z

Content type: tutorial

Language: en

Sources: [The Website Specification](<https://devfeed.tech/sources/the-website-specification.md>)

Topics: [User interface design](<https://devfeed.tech/topics/ui-design.md>), [Dark Mode](<https://devfeed.tech/topics/dark-mode.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [css](<https://devfeed.tech/tags/css.md>), [flexbox](<https://devfeed.tech/tags/flexbox.md>), [grid](<https://devfeed.tech/tags/grid.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [japanese](<https://devfeed.tech/tags/japanese.md>), [korean](<https://devfeed.tech/tags/korean.md>), [optional](<https://devfeed.tech/tags/optional.md>), [signage](<https://devfeed.tech/tags/signage.md>)

### AI overview

This tutorial explains how CSS writing-mode, text-orientation, line-break, and word-break support vertical layouts and script-appropriate wrapping for CJK and Thai text. It also covers language metadata, logical CSS properties, and common readability pitfalls.

### Source excerpt

Vertical text (Japanese, Traditional Chinese, Mongolian) needs CSS writing-mode. Chinese, Japanese, Korean, and Thai also need explicit line-break and word-break rules so wrapping respects script-specific conventions.

## Localised page metadata

DevFeed: [Localised page metadata](<https://devfeed.tech/articles/localised-page-metadata-89116.md>)

Original publisher: [Read original article](<https://specification.website/spec/i18n/localised-metadata/>)

Author: Joost de Valk

Published: 2026-05-29T18:54:03Z

Content type: tutorial

Language: en

Sources: [The Website Specification](<https://devfeed.tech/sources/the-website-specification.md>)

Topics: [Open Graph protocol](<https://devfeed.tech/topics/open-graph.md>), [alt text](<https://devfeed.tech/topics/alt-text.md>), [Microformats](<https://devfeed.tech/topics/microformats.md>), [RDF (Resource Description Framework)](<https://devfeed.tech/topics/rdf.md>)

Tags: [english](<https://devfeed.tech/tags/english.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [recommended](<https://devfeed.tech/tags/recommended.md>), [structured-data](<https://devfeed.tech/tags/structured-data.md>), [translation](<https://devfeed.tech/tags/translation.md>)

### AI overview

A tutorial on localizing website metadata alongside page content. It covers translating titles, descriptions, Open Graph and Twitter Card fields, JSON-LD properties, image alt text, and PWA manifest names, plus setting locale attributes and checking rendered results across search and social previews.

### Source excerpt

Translate every visible string in the head and in structured data -- title, meta description, Open Graph fields, JSON-LD names and descriptions, image alt text -- not just the body. A localised body with English metadata is a half-translation.

## hreflang in XML sitemaps

DevFeed: [hreflang in XML sitemaps](<https://devfeed.tech/articles/hreflang-in-xml-sitemaps-89119.md>)

Original publisher: [Read original article](<https://specification.website/spec/i18n/sitemap-hreflang/>)

Author: Joost de Valk

Published: 2026-05-29T18:54:03Z

Content type: tutorial

Language: en

Sources: [The Website Specification](<https://devfeed.tech/sources/the-website-specification.md>)

Topics: [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [SVG](<https://devfeed.tech/topics/svg.md>)

Tags: [google-search](<https://devfeed.tech/tags/google-search.md>), [html](<https://devfeed.tech/tags/html.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [implement](<https://devfeed.tech/tags/implement.md>), [language-en](<https://devfeed.tech/tags/language-en.md>), [locale](<https://devfeed.tech/tags/locale.md>), [optional](<https://devfeed.tech/tags/optional.md>), [sitemaps](<https://devfeed.tech/tags/sitemaps.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

Sitemaps can declare language and regional page alternates with the XML xhtml:link element, providing the same search-engine signal as inline hreflang tags. The article explains how to structure reciprocal alternate links, choose a delivery method, and verify the resulting clusters.

### Source excerpt

Declare language and regional alternates inside the XML sitemap with xhtml:link instead of in the HTML head. Easier to maintain at scale and keeps localisation metadata separate from content.

## International URL structure

DevFeed: [International URL structure](<https://devfeed.tech/articles/international-url-structure-89112.md>)

Original publisher: [Read original article](<https://specification.website/spec/i18n/international-url-structure/>)

Author: Joost de Valk

Published: 2026-05-29T18:54:03Z

Content type: tutorial

Language: en

Sources: [The Website Specification](<https://devfeed.tech/sources/the-website-specification.md>)

Topics: [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [Search engine optimization (SEO)](<https://devfeed.tech/topics/seo.md>)

Tags: [cctld](<https://devfeed.tech/tags/cctld.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [implement](<https://devfeed.tech/tags/implement.md>), [locale](<https://devfeed.tech/tags/locale.md>), [recommended](<https://devfeed.tech/tags/recommended.md>), [scope](<https://devfeed.tech/tags/scope.md>), [url](<https://devfeed.tech/tags/url.md>)

### AI overview

For multilingual or multi-regional sites, choose one URL pattern--ccTLD, subdomain, or subdirectory--and use it consistently. The guide compares their operational and locality tradeoffs, recommends pairing canonical URLs with hreflang, and advises setting locale from the URL rather than silently negotiating from the Accept-Language header.

### Source excerpt

Pick a single URL pattern for multilingual or multi-regional content -- country-code top-level domain, subdomain, or subdirectory -- and stick with it. Optionally localise the slugs too.

## Finally, Mercari Japan in English! Our Road to Cross-Platform i18n

DevFeed: [Finally, Mercari Japan in English! Our Road to Cross-Platform i18n](<https://devfeed.tech/articles/finally-mercari-japan-in-english-our-road-to-cross-platform-i18n-56794.md>)

Original publisher: [Read original article](<https://engineering.mercari.com/en/blog/entry/20251205-finally-mercari-japan-in-english-our-road-to-cross-platform-i18n/>)

Author: Andy Hall

Published: 2025-12-08T10:00:40Z

Content type: article

Language: en

Sources: [Mercari Engineering](<https://devfeed.tech/sources/mercari-engineering.md>)

Topics: [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Website](<https://devfeed.tech/topics/website.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [App](<https://devfeed.tech/topics/app.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [backend](<https://devfeed.tech/tags/backend.md>), [code](<https://devfeed.tech/tags/code.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

Mercari describes shipping English UI support for its main marketplace app across iOS, Android, and the web. The post explains how earlier engineering work using internationalization libraries and patterns prepared the codebase, why the release was delayed, and how internal English locale overrides reduced the urgency to ship the feature.

### Source excerpt

This post is for Day 8 of Merpay & Mercoin Advent Calendar 2025. For more than a decade, Mercari's Marketplace has been a Japanese service - sometimes to the annoyance of our many, many employees who don't speak Japanese. But as of late November, we've finally shipped English UI support for our main flea market [...]

## Docusaurus 3.9

DevFeed: [Docusaurus 3.9](<https://devfeed.tech/articles/docusaurus-3-9-40950.md>)

Original publisher: [Read original article](<https://docusaurus.io/blog/releases/3.9>)

Author: Sébastien Lorber

Published: 2025-09-25T00:00:00Z

Content type: release

Language: en

Sources: [Docusaurus Blog](<https://devfeed.tech/sources/docusaurus-blog.md>)

Topics: [releases](<https://devfeed.tech/topics/releases.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [Algolia](<https://devfeed.tech/topics/algolia.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [layout](<https://devfeed.tech/topics/layout.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [algolia](<https://devfeed.tech/tags/algolia.md>), [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [layout](<https://devfeed.tech/tags/layout.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [release](<https://devfeed.tech/tags/release.md>), [releases](<https://devfeed.tech/tags/releases.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

Docusaurus 3.9 drops support for Node.js 18, raising the minimum required version to Node.js 20. It adds Algolia DocSearch v4 with AskAI, improves internationalization support, adds Mermaid ELK layout support, and includes other improvements and bug fixes.

### Source excerpt

We are happy to announce Docusaurus 3.9.

## ScreenshotWhale Generates App Store Screenshots with a Layer-Based Editor and Automatic Localization

DevFeed: [ScreenshotWhale Generates App Store Screenshots with a Layer-Based Editor and Automatic Localization](<https://devfeed.tech/articles/coded-a-little-sass-to-help-me-generate-store-app-screenshots-quick-37911.md>)

Original publisher: [Read original article](<https://newsletter.jorgecastillo.dev/p/coded-a-little-sass-to-help-me-generate>)

Author: Jorge Castillo

Published: 2025-09-16T16:36:22Z

Content type: article

Language: en

Sources: [Effective Android](<https://devfeed.tech/sources/effective-android.md>)

Topics: [App](<https://devfeed.tech/topics/app.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Vibe coding](<https://devfeed.tech/topics/vibe-coding.md>), [Figma](<https://devfeed.tech/topics/figma.md>), [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [app-store](<https://devfeed.tech/tags/app-store.md>), [building](<https://devfeed.tech/tags/building.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [editor](<https://devfeed.tech/tags/editor.md>), [export](<https://devfeed.tech/tags/export.md>), [figma](<https://devfeed.tech/tags/figma.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [ios](<https://devfeed.tech/tags/ios.md>), [languages](<https://devfeed.tech/tags/languages.md>), [phones](<https://devfeed.tech/tags/phones.md>), [templates](<https://devfeed.tech/tags/templates.md>)

### AI overview

The article introduces ScreenshotWhale, a cloud-based service for creating app store screenshots. It offers a Figma-style layer-based editor, templates, support for Android and iOS device formats, and automatic internationalization during export. The product is in its initial stages and is presented as seeking user feedback.

### Source excerpt

Some words for the people who joined the newsletter these days.

## Launching ScreenshotWhale.com 🐋

DevFeed: [Launching ScreenshotWhale.com 🐋](<https://devfeed.tech/articles/launching-screenshotwhale-com-37919.md>)

Original publisher: [Read original article](<https://newsletter.jorgecastillo.dev/p/launching-screenshotwhalecom>)

Author: Jorge Castillo

Published: 2025-09-13T15:03:52Z

Content type: release

Language: en

Sources: [Effective Android](<https://devfeed.tech/sources/effective-android.md>)

Topics: [App](<https://devfeed.tech/topics/app.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [export](<https://devfeed.tech/topics/export.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [editor](<https://devfeed.tech/tags/editor.md>), [export](<https://devfeed.tech/tags/export.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [image](<https://devfeed.tech/tags/image.md>), [ios](<https://devfeed.tech/tags/ios.md>), [layer](<https://devfeed.tech/tags/layer.md>), [screenshots](<https://devfeed.tech/tags/screenshots.md>), [templates](<https://devfeed.tech/tags/templates.md>)

### AI overview

ScreenshotWhale has launched as a cloud-based tool for creating app screenshots. It includes an online editor, templates, multilingual export, support for iOS and Android form factors, a mirror feature, app store layout settings, and layered editing.

### Source excerpt

The wait is over, screenshotwhale is live today 🎉

## Bluesky Likes Web Components

DevFeed: [Bluesky Likes Web Components](<https://devfeed.tech/articles/bluesky-likes-web-components-52161.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2025/bluesky-likes/>)

Author: Lea Verou

Published: 2025-06-17T00:00:00Z

Content type: article

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [Web Components](<https://devfeed.tech/topics/web-components.md>), [API](<https://devfeed.tech/topics/api.md>), [Bluesky](<https://devfeed.tech/topics/bluesky-social.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [a11y](<https://devfeed.tech/tags/a11y.md>), [api](<https://devfeed.tech/tags/api.md>), [api-design](<https://devfeed.tech/tags/api-design.md>), [article](<https://devfeed.tech/tags/article.md>), [blog](<https://devfeed.tech/tags/blog.md>), [bluesky](<https://devfeed.tech/tags/bluesky.md>), [components](<https://devfeed.tech/tags/components.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [launch](<https://devfeed.tech/tags/launch.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [web-components](<https://devfeed.tech/tags/web-components.md>), [web-standards](<https://devfeed.tech/tags/web-standards.md>)

### AI overview

The author presents web components for displaying Bluesky post likes and discusses the practical challenges of building accessible, localizable components that consume public API data. The article highlights Bluesky's open API, which allows unauthenticated access to public data without an API key.

### Source excerpt

Just want the components? Here you go: Demo Repo NPM A love letter to the Bluesky API I'm old enough to remember the golden Web 2.0 era, when many of today's big social media platforms grew up. A simpler time, when the Web was much more extroverted. It was common for websites to embed data from others (the peak of mashups), and prominently feature widgets from various platforms to showcase a post's likes or shares. Especially Twitter was so ubiquitous that the number of Twitter shares was my primary metric for how much people were interested in a blog post I wrote. Then, websites started progressively becoming walled gardens, guarding their data with more fervor than Gollum guarding the Precious. Features disappeared or got locked behind API keys, ridiculous rate limits, expensive paywalls, and other restrictions. Don't get me wrong, I get it. A lot of it was reactionary, a response to abuse -- the usual reason we can't have nice things. And even when it was to stimulate profit -- it is understandable that they want to monetize their platforms. People gotta eat. I was recently reading this interesting article by Salma Alam-Naylor. The article makes some great points, but it was something else that caught my eye: the widget of Bluesky likes at the bottom. Salma's Bluesky likes widget that inspired these I mentioned it to my trusty apprentice Dmitry who discovered the API was actually much simpler than what we've come to expect. Later, it turned out Salma has even written an entire post on how to implement the same thing on your own site. The openness of the API was so refreshing. Not only can you read public data without being authenticated, you don't even need an API key! Major nostalgia vibes. It seemed the perfect candidate for a web component that you can just drop in to a page, give it a post URL, and it will display the likes for that post. I just had to make it, and of course use it right here. Web Components that use API data have been historically awkward. Let

## postmarketOS in 2025-03: OP6 & MSM89x7 Camera, Generic SM7150, COSMIC, Musl Collation + I18n

DevFeed: [postmarketOS in 2025-03: OP6 & MSM89x7 Camera, Generic SM7150, COSMIC, Musl Collation + I18n](<https://devfeed.tech/articles/postmarketos-in-2025-03-op6-msm89x7-camera-generic-sm7150-cosmic-musl-collation-i18n-41754.md>)

Original publisher: [Read original article](<https://postmarketos.org/blog/2025/04/09/pmOS-update-2025-03/>)

Published: 2025-04-09T00:00:00Z

Content type: news

Language: en

Sources: [postmarketOS](<https://devfeed.tech/sources/postmarketos-blog.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [Continuous integration](<https://devfeed.tech/topics/continuous-integration.md>), [gitlab-ci](<https://devfeed.tech/topics/gitlab-ci.md>), [Matrix](<https://devfeed.tech/topics/matrix-org.md>), [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [ASUS](<https://devfeed.tech/topics/asus.md>), [Pinebook-Pro](<https://devfeed.tech/topics/pinebook-pro.md>), [Pinephone](<https://devfeed.tech/topics/pinephone.md>), [Pinephone-Pro](<https://devfeed.tech/topics/pinephone-pro.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [asus](<https://devfeed.tech/tags/asus.md>), [devices](<https://devfeed.tech/tags/devices.md>), [gitlab](<https://devfeed.tech/tags/gitlab.md>), [gitlab-ci](<https://devfeed.tech/tags/gitlab-ci.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [linux](<https://devfeed.tech/tags/linux.md>), [matrix](<https://devfeed.tech/tags/matrix.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [pinebook-pro](<https://devfeed.tech/tags/pinebook-pro.md>), [pinephone](<https://devfeed.tech/tags/pinephone.md>), [pinephone-pro](<https://devfeed.tech/tags/pinephone-pro.md>), [postmarketos](<https://devfeed.tech/tags/postmarketos.md>), [self-hosted](<https://devfeed.tech/tags/self-hosted.md>)

### AI overview

A postmarketOS monthly update covering device support, an accepted grant for musl libc collation and internationalization, community contributions, a self-hosted Matrix/IRC bridge, reliable GitLab CI, and GNOME 48 changes for mobile.

### Source excerpt

The calendar has turned another page, and it's finally time for our eagerly awaited monthly update! We're thrilled to share what our community has been building and improving since last month. Before we get to that, let's talk about the most recent Linux After Dark episode: It seems when the four hosts do a distro challenge, they do it properly. They didn't just try postmarketOS on one or two devices, but on all of these: ASUS Transformer Pad 3G, Linx 7 tablet (Generic X86_64), Motorola Moto G 2015, PinePhone Pro, PinePhone, Pinebook Pro and Acer R11/ASUS C200/Lenovo Duet 3 (Chromebooks). The resulting episode is not only very entertaining, but also gives many insights into first use experiences! Organizational We have applied for an NGI0 grant for Collation + i18n support in musl libc and it has been accepted! Collation allows set ordering based on locales, and follows a certain set of established rules and standards. Internationalization provides basic functionality in the language of choice for the user like dates, times, numbers, and monetary symbols. The implementation will be done by main author and maintainer of musl libc Rich and will benefit postmarketOS, Alpine Linux and all other users of musl libc. Thanks Rich, Pablo and NLNet! knuxify is our newest Trusted Contributor! They work a lot on the postmarketOS wiki, are mainlining the Broadcom Kona series chipsets, co-maintaining the Exynos 4 close to mainline kernel fork and more. Read their TC page for more information. Thanks knuxify! We wrote detailed blog posts on finances and priorities for 2025. Thanks Pablo and Oliver! Our Matrix/IRC bridge is now self-hosted. Thanks Luca, Ferass, Oliver! GitLab CI with our custom runner now works reliably (#101). Thanks Oliver! GNOME 48 GNOME 48 is now in Alpine edge and it brings massive performance improvements with dynamic triple buffering and more, new fonts, notification stacking and many other great changes! Shortly afterwards, GNOME Shell on Mobile has been re

## postmarketOS in 2025-03: OP6 & MSM89x7 Camera, Generic SM7150, COSMIC, Musl Collation + I18n

DevFeed: [postmarketOS in 2025-03: OP6 & MSM89x7 Camera, Generic SM7150, COSMIC, Musl Collation + I18n](<https://devfeed.tech/articles/postmarketos-in-2025-03-op6-msm89x7-camera-generic-sm7150-cosmic-musl-collation-i18n-106667.md>)

Original publisher: [Read original article](<https://nura.eco/blog/2025/04/09/pmOS-update-2025-03/>)

Published: 2025-04-09T00:00:00Z

Content type: news

Language: en

Sources: [postmarketOS](<https://devfeed.tech/sources/postmarketos-blog.md>)

Topics: [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [camera](<https://devfeed.tech/tags/camera.md>), [cosmic](<https://devfeed.tech/tags/cosmic.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [musl](<https://devfeed.tech/tags/musl.md>), [nura](<https://devfeed.tech/tags/nura.md>), [postmarketos](<https://devfeed.tech/tags/postmarketos.md>)

### AI overview

The March 2025 update reports initial camera support merged for the OnePlus 6 and several MSM89x7 phones, plus a new generic Qualcomm SM7150 package that replaces device-specific packages and boots through a second-stage bootloader and systemd-boot. COSMIC is available in Alpine and postmarketOS, with prebuilt edge images for generic x86_64 and ThinkPad X13s; GNOME 48 brings dynamic triple buffering and mobile shell window placement and input improvements. Other practical changes include Firefox per-site user-agent spoofing and user-overridable preferences, pmbootstrap support for setting the FDE passphrase through an environment variable, and initramfs support for multi-device btrfs. The project also secured funding for musl collation and internationalization support. The source is a broad monthly changelog, so these highlights do not cover every change.

### Source excerpt

The calendar has turned another page, and it's finally time for our eagerly awaited monthly update! We're thrilled to share what our community has been building and improving since last month. Before we get to that, let's talk about the most recent Linux After Dark episode: It seems when the four hosts do a distro challenge, they do it properly. They didn't just try postmarketOS on one or two devices, but on all of these: ASUS Transformer Pad 3G, Linx 7 tablet (Generic X86_64), Motorola Moto G 2015, PinePhone Pro, PinePhone, Pinebook Pro and Acer R11/ASUS C200/Lenovo Duet 3 (Chromebooks). The resulting episode is not only very entertaining, but also gives many insights into first use experiences! Organizational We have applied for an NGI0 grant for Collation + i18n support in musl libc and it has been accepted! Collation allows set ordering based on locales, and follows a certain set of established rules and standards. Internationalization provides basic functionality in the language of choice for the user like dates, times, numbers, and monetary symbols. The implementation will be done by main author and maintainer of musl libc Rich and will benefit postmarketOS, Alpine Linux and all other users of musl libc. Thanks Rich, Pablo and NLNet! knuxify is our newest Trusted Contributor! They work a lot on the postmarketOS wiki, are mainlining the Broadcom Kona series chipsets, co-maintaining the Exynos 4 close to mainline kernel fork and more. Read their TC page for more information. Thanks knuxify! We wrote detailed blog posts on finances and priorities for 2025. Thanks Pablo and Oliver! Our Matrix/IRC bridge is now self-hosted. Thanks Luca, Ferass, Oliver! GitLab CI with our custom runner now works reliably (#101). Thanks Oliver! GNOME 48 GNOME 48 is now in Alpine edge and it brings massive performance improvements with dynamic triple buffering and more, new fonts, notification stacking and many other great changes! Shortly afterwards, GNOME Shell on Mobile has been re

## How to Let Google Know of Other Languages in Your Django Site

DevFeed: [How to Let Google Know of Other Languages in Your Django Site](<https://devfeed.tech/articles/how-to-let-google-know-of-other-languages-in-your-django-site-33898.md>)

Original publisher: [Read original article](<https://hakibenita.com/django-multi-language-site-hreflang>)

Author: Haki Benita

Published: 2019-05-06T21:00:00Z

Content type: tutorial

Language: en

Sources: [Haki Benita](<https://devfeed.tech/sources/haki-benita.md>)

Topics: [Django](<https://devfeed.tech/topics/django.md>), [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [Code](<https://devfeed.tech/topics/code.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [articles](<https://devfeed.tech/tags/articles.md>), [code](<https://devfeed.tech/tags/code.md>), [django](<https://devfeed.tech/tags/django.md>), [google](<https://devfeed.tech/tags/google.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [language](<https://devfeed.tech/tags/language.md>), [seo](<https://devfeed.tech/tags/seo.md>), [translation](<https://devfeed.tech/tags/translation.md>)

### AI overview

A tutorial on configuring a multilingual Django site and adding hreflang links so Google and other search engines can identify localized versions of pages. It covers Django internationalization setup, localized URLs, absolute URLs, query parameters and hashes, and limitations when translating non-localized URLs.

### Source excerpt

If you have a public facing Django site in multiple languages, you probably want to let Google and other search engines know about it.

[Next page](<https://devfeed.tech/tags/i18n.md?cursor=WyIyMDE5LTA1LTA2VDIxOjAwOjAwKzAwOjAwIiwgIjVhZDVhYzhmLWUxNmQtNGNmOS05ZTE5LWVkYzc2NzAyMGFkYSJd>)