Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
BiDi in Fluent
Bidirectionality is a complex problem in software localization.
Project Fluent aims to capitalize on those technologies in order to provide the complete solution to bidirectional software localization.
Fluent Syntax is handling utf-8 and allows for directional formatting characters to be manually inserted by the translator, but it also follows the W3C recommendations for inline BiDi markup and How to use Unicode controls for bidi text to annotate each embedded string within another string with directional formatting characters.
That means, that any placeable in Fluent Syntax that is a string will be wrapped in FSI/PDI marks in order to instruct the layout that the placeable may have different directionality.
Project Fluent uses ECMA402, or ECMA402-like APIs to format numbers, dates and other units into the appropriate script and format.
That means that any numbers passed to a Fluent Message will be formatter to use the correct format, following ECMA402
Intl.NumberFormat API, and the same will happen with dates and
In case of strings, as we previously indicated, Fluent will insert directional formatting characters to allow for unknown directionality mixes between the original string and embedded placeables.
One of the aspects of language negotiation in Fluent is that we'll try to match user requested locale using the script of choice for the user. It means that locales that can potentially have multiple scripts like
zh-Hant will have their script part be used to inform us on what fallback languages to look for.
Our aim here is to maximize the chance that all text, dates, units, numbers and other elements stay in the same script.
Our DOM bindings will be closely following HTML BiDi recommendations for structural markup.