The per-app-language store re-parses the applied locale through ICU and fills in the implied script, so a zh-CN choice reads back as zh-Hans-CN and no longer matches the tag the picker offers — the selected row lost its mark after a restart. currentTag(supported) maps it back.