I don't quite recall, but I think ZIP may actually be a backronym; in US English, "zip" is a word that also means "to move quickly", and they wanted to evoke a feeling that postal mail gets delivered faster when you include the ZIP code, which makes sorting mail more efficient.
If it’s French from France, yes. This is the second part of the language code: fr_FR is French from France, fr_BE from Belgium, fr_BF from Burkina Faso and so on.
Also, you missed other language codes for French: fr_BI, fr_BJ, fr_BL, fr_CA, fr_CD, fr_CF, fr_CG, fr_CH, fr_CI, fr_CM, fr_DJ, fr_DZ, fr_GA, fr_GF, fr_GN, fr_GP, fr_GQ, fr_HT, fr_KM, fr_LU, fr_MA, fr_MC, fr_MF, fr_MG, fr_ML, fr_MQ, fr_MR, fr_MU, fr_NC, fr_NE, fr_PF, fr_PM, fr_RE, fr_RW, fr_SC, fr_SN, fr_SY, fr_TD, fr_TG, fr_TN, fr_VU, fr_WF, fr_YT.
However I am Canadian and I speak French. It will recognise fr-CA as "Canada".
This is accessory; the goal is to suggest relevant options for someone based on the language they configured their browser with.
> Also, you missed other language codes for French: […]
These are combinations of a language code (fr) and a region code; the list is not standardized and could theorically be extended to all the regions with an ISO code. What’s interesting here is the region code, not the language.
> I use navigator.languages to get a list of supported languages. For example, en-CA, fr-CA, de-DE. This gives me a list of countries the user might have lived in. I suggest those countries at the top of the country list.
> Usually [you get] 194 other countries in a loooooong list
(cue this website having precisely that list)