because conflict of the two first letters
correct, `en` is a special case since the reference is in (some variant of) English whereas the extra is needed for `zh` to distinguish them.
nb_NO and nn_NO are quite similar, so it's probably OK to have nn_NO apply if system language/culture is anything NO and no nb_NO yet exist.
The choice is made by the gettext library, not by any Geany code, so we can't influence it AFAIK. You could probably research how it decides, but I suspect it might be simply a straight comparison of the `LANG` environment with the PO file name.
But I'd rather have it default to english when my closest language is ~17% complete
Totally understandable.
Maybe some threshold should be set for when to use translation?
I don't think thats something the Geany team should decide, remembering all translations are contributed, people spend their own time doing it, it seems rude to tell someone "no, we won't use your work as it does not reach the arbitrary x% number". If a mixed UI is difficult to use the `LANG` can always be set to `en`.
maybe some crowdsourcing in browser solution can be looked into?
Ubuntu used one of those and just had to remove its ISOs because a translation from such a source contained inappropriate material. At least the current system requires a pull request which puts the submitter's GitHub id on it so its not totally anonymous.