All use cases

lang.primary

The phone says the language, not the print run

One badge, international, three languages. The phone asks for German, French or something else — the print is the same in every country. An unknown language falls to the mandatory rule, here English.

Where it hangs
Badge, menu in a tourist town, package insert, object label.
Why the paper stays
Four printed stacks, and the English one is always the one that runs out.

Live resolution

lang.primary = de
geo.country = DEdevice.os = androidscan.count_total = 96
  1. 1German
  2. 2French
  3. alwaysOtherwise
https://summit.io/de/programm

Language the phone asks for

An event badge on a lanyard, carrying the code
The same code on every shot.Badge, menu in a tourist town, package insert, object label.

The ruleset

Valid, storable, mandatory rule last.

Not a description of what the engine could do — this is the text a code carries. The first matching rule wins, and the last one always matches.

ruleset · version 1

{
  "rules": [
    {
      "when": { "lang.primary": { "eq": "de" } },
      "then": { "type": "redirect", "url": "https://summit.io/de/programm" }
    },
    {
      "when": { "lang.primary": { "eq": "fr" } },
      "then": { "type": "redirect", "url": "https://summit.io/fr/programme" }
    },
    {
      "when": "always",
      "then": { "type": "redirect", "url": "https://summit.io/schedule" }
    }
  ]
}

Also

Same axis, different situation.

Menu
DE/FR/IT/EN off one card. The tourist town does not reprint per season.
Instructions
A PDF per language, otherwise the short HTML version.
Object label
The text at the exhibit, in the language the visitor brought.

All use cases

Reprinting is the expensive part. Stop doing it.