frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

MessageFormat: Unicode standard for localizable message strings

https://github.com/unicode-org/message-format-wg
38•todsacerdoti•1h ago

Comments

rocqua•1h ago
This seems great in concept, and totally infeasible. But if anyone can do it, unicode seems like a great candidate.

Does anyone have reason for more optimism?

hobofan•58m ago
Care to explain why you think it's infeasible? Then one could provide targeted counter-optimism ;)

I don't see what's infeasible about it. It doesn't seem to different from .po files (gettext catalogs) meshed with hooks for post-processing as would see in e.g. a handlebars, both of which have individually found great adoption.

bmn__•52m ago
> why you think it's infeasible?

GP based his opinion on the assumption that this spec new and no implementations for it exist.

junon•51m ago
Unicode consortium already manages a ton of language specs. If there's any group of folks I'd trust to understand languages (natural or otherwise), it's them.
tuyiown•37m ago
I've been using this format for almost 10 years, and I only see increasing adoption. Why would I be pessimistic?
BoppreH•1h ago
The meeting notes in the repo was a nice surprise. Overall looked great, striking a good balance.

  .input {$var :number maximumFractionDigits=0}
  .local $var2 = {$var :number maximumFractionDigits=2}
  .match $var2
  0 {{The selector can apply a different function to {$var} for the purposes of selection}}
  * {{A placeholder in a pattern can apply a different function to {$var :number maximumFractionDigits=3}}}
Oof, that's a programming language already. And new syntax to be inevitably iterated on. I feel like we have too many of those already, from Python f-strings to template engines.

I wish it'll at least stay small: no nesting, no plugins, no looping, no operators, no side effects or calls to external functions (see Log4J).

silvestrov•35m ago
English has just singular and plural: one car, two cars, three cars (and zero cars).

Some languages have more variations. E.g. Czech, Slovene and Russian has 1, 2-4 and 5 as different cases.

Personally I think the syntax is too brittle. It looks too much like TeX code and it has the lisp like deal with lines ending with too many } braces.

I would separate it into two cases: simple strings with just simple interpolation and then a more fuller markup language, more like a simplified xml.

There are more example code at https://github.com/unicode-org/message-format-wg/blob/main/d...

BoppreH•29m ago
Oh, the language aspect gets a lot worse than that. They explicitly have a non-goal of "all grammatical features of all languages", but the "common" cases are hard enough. From https://github.com/unicode-org/message-format-wg/blob/main/s... :

  .local $hasCase = {$userName :ns:hasCase}
  .match $hasCase
  vocative {{Hello, {$userName :ns:person case=vocative}!}}
  accusative {{Please welcome {$userName :ns:person case=accusative}!}}
  * {{Hello!}}
But if anyone can find a good compromise, it's the Unicode team.
1116574•43m ago
Looks alot like mozilla's project fluent, atleast in the basic use case.

https://projectfluent.org/

I wonder why it hasn't been adopted more widely.

xnorswap•37m ago
I often wonder this myself, this really should be a standard by now.
hobofan•22m ago
I can't speak for the status quo, but for at least the first ~5 years (so until 3 years ago when I last attempted to use it), the JS implementation of Fluent was a mess. Constant issues with incomplete API, wrong TS typings (which at that point were external) and build/bundling issues to the point where we opted for a homebrew solution.

I imagine that I probably wasn't the only one driven away by that (and I gave it many attempts!).

hobofan•18m ago
They seems to be a strong overlap of people behind both projects, so that likely explains the similarities.
bmn__•36m ago
Looking for an expert who knows both libintl/Gettext and MessageFormat.

What is the equivalent of xgettext.pl, the file extension for the main catalog file `.po`, the __ function?

How does gender work (small example)? How does layering pt_BR on pt_PT work?

What is a compelling reason to switch?

jp1016•35m ago
One practical thing I appreciated about MessageFormat is how it eliminates a bunch of conditional UI logic.

I used to write switch/if blocks for:

• 0 rows → “No results” • 1 row → “1 result” • n rows → “{n} results”

Which seems trivial in English, but gets messy once you support languages with multiple plural categories.

I wasn’t really aware of how nuanced plural rules are until I dug into ICU. The syntax looked intimidating at first, but it actually removes a lot of branching from application code.

I’ve been using an online ICU message editor (https://intlpull.com/tools/icu-message-editor) to experiment with plural/select cases and different locales helped me understand edge cases much faster than reading the spec alone.

pferde•10m ago
Did not gettext have this for decades? https://www.gnu.org/software/gettext/manual/html_node/Plural...
Muromec•7m ago
Gettext has everything, it just takes knowing five languages to understand what to use for
Muromec•8m ago
I checked the spec and don't get that really. Something should specify the formula for choosing the correct form (ie 1 for 21 in Slavic languages) and the format isnt any better compared to the gettext of 30 years ago
strogonoff•30m ago
Does anyone know the status of MessageFormat 2.0? I am aware of the effort since pre-COVID times. I recall that some of the developers behind Mozilla Fluent have been among the people working on MF 2.0, and it’d be great to know whether Fluent and ICU MF are going to be interoperable in foreseeable future.
revetkn•16m ago
My project Lokalized attempts to solve many of these complex plural/gender/ordinal/etc. rules with a tiny expression language:

https://lokalized.com

frizlab•3m ago
Same here (linked to a test because I don’t have a (meaningful) readme…)

https://github.com/Frizlab/XibLoc/blob/e85a5179bdd93e0174731...

Enter your budget first–then see what you can afford

https://www.pricematcher.net
1•Yugoleliatrope2•1m ago•0 comments

Ancient Linux distros you don't remember anymore

https://www.makeuseof.com/ancient-linux-distros-you-dont-remember-anymore/
1•rbanffy•2m ago•0 comments

Ask HN: Predictions on the state of theoretical STEM research post-AGI

1•expressrisk•4m ago•0 comments

Qwen3.5

https://huggingface.co/Qwen/Qwen3.5-397B-A17B
1•Jacques2Marais•5m ago•0 comments

The Israeli spyware firm that accidentally just exposed itself

https://ahmedeldin.substack.com/p/the-israeli-spyware-firm-that-accidentally
1•0x54MUR41•5m ago•0 comments

An AI CVE scanner that adjusts CVSS scores based on actual code usage

https://github.com/IzzyMaroder/contextual-cve-engine
1•izzymaroder•6m ago•0 comments

Show HN: Npx check-AI – check your repo for AI-readiness

https://github.com/f/check-ai
1•fka•7m ago•0 comments

Hardware TOTP authenticator with 8-layer security architecture (ESP32)

https://github.com/makepkg/SecureGen
1•todsacerdoti•7m ago•0 comments

Plan it, Work it, Review it, Reflect it

https://ai.unicrons.cloud/en/2026/02/15/plan-it-work-it-review-it-reflect-it/
1•ImSolar•8m ago•0 comments

Canon Cat

https://en.wikipedia.org/wiki/Canon_Cat
1•tosh•8m ago•0 comments

Write-Only Code

https://www.heavybit.com/library/article/write-only-code
1•handfuloflight•8m ago•0 comments

Show HN: Glitchy camera – a circuit-bent camera simulator in the browser

https://glitchycam.com
1•elayabharath•9m ago•0 comments

First commercial bend-tolerant fiber optic cable with 160 microns diameter

https://www.techzine.eu/news/infrastructure/138802/fiber-optics-are-getting-even-thinner-prysmian...
1•giuliomagnifico•9m ago•0 comments

Show HN: Droptheslop.ai – pastebin alternative with human typing verification

https://www.droptheslop.ai/
3•parsabg•10m ago•0 comments

Thoughts on Peter Steinberger Joining OpenAI

https://openclaw.rocks/blog/openclaw-creator-joins-openai
1•stubbi•10m ago•0 comments

The Last Temptation of Claude

https://blog.cosmos-institute.org/p/the-last-temptation-of-claude
1•herbertl•10m ago•0 comments

Breath web app built by AI

https://zaaack.github.io/breathing/
1•zaaack•11m ago•0 comments

Speaking Mini Kore

https://minilanguage.medium.com/speaking-mini-kore-552f787dbfb1
1•bmacho•11m ago•1 comments

'Sand and a Source of Light'

https://animationobsessive.substack.com/p/sand-and-a-source-of-light
1•herbertl•12m ago•0 comments

Devcontainer-bridge: Port forwarding and browser open for the devcontainer CLI

https://bradleybeddoes.com/writing/making-devcontainers-even-better-in-the-terminal
1•vedlin•13m ago•0 comments

What Is a Jupiter Ace?

https://www.jupiter-ace.co.uk/whatisanace.html
1•tosh•15m ago•0 comments

I made Memcards to fix a bunch of things

https://www.memcards.net/en
1•rm2kdev•16m ago•1 comments

Modern UI is clean and invisible? Ha, I wish

https://rakhim.exotext.com/modern-ui-is-not-invisible
1•troupo•16m ago•0 comments

OpenAI president becomes top Trump donor with $25M gift

https://www.sfgate.com/tech/article/brockman-openai-top-trump-donor-21273419.php
4•pera•18m ago•0 comments

I received several friends' condolences written with – ChatGPT

https://dindon.one/@henry/116080083150509978
3•behindai•20m ago•0 comments

planckforth: Bootstrapping a Forth interpreter from hand-written tiny ELF binary

https://github.com/nineties/planckforth
2•tosh•22m ago•0 comments

Show HN: Agentic Shift: Peter Steinberger Joins OpenAI

https://blog.saimadugula.com/posts/steinberger-openai-openclaw.html
1•madugula•24m ago•0 comments

Programmable 200 GOPS Hopfield-inspired photonic Ising machine – Nature

https://www.nature.com/articles/s41586-025-09838-7
1•rbanffy•26m ago•0 comments

Show HN: EXIF Cleaner – Remove image metadata directly in the browser

https://exif-cleaner.com/
1•FrankTheBear•29m ago•0 comments

A.I. and the Future of Computing

https://radiant.computer/notes/ai-and-the-future-of-computing/
1•cloudhead•33m ago•0 comments