Thank you for writing this up Terence!
Some ideas about the challenges you present:
I like the idea of only displaying the countries the current country recognizes, that prevents most issues with getting browsers banned etc.
Alternatively, what if there were attributes for year and location to customize the list of countries based on the year and a base country that recognizes them? The year would default to the current year, and the base country would default to the current country. A “*” value might be useful to get the union of all lists (i.e. all countries)
We should explore if there’s a way to get a list of countries from the OS. This would also solve the issue by deferring it to the OS.
Regarding localization, another possibility to consider is to localize to the computed lang of the element, instead of the browser language. Not sure if that’s better or not.