Fundraising tech/Language variants

Some rough notes for getting language variants working in the fundraising pipeline...

Wikipedias and automatic conversion

 * We may well grab the variant from the language converter, which keeps the info in the URL and persists it as you anonymously click from link to link (but apparently not beyond that). More discussion about the language converter here.
 * Do search engines emit variant-appropriate links?
 * Do we ever automatically choose the variant based on other variables (like maybe country)?

CentralNotice

 * Patch CentralNotice to show the correct variant for translatable banner messages. Variant can at least be taken from the URL (and maybe somewhere better, too) if we're using the language converter.
 * Adapt the in-banner JS to send the right variant along to Special:GlobalCollectGateway.

DonationInterface

 * A language parameter is already sent to Special:GatewayFormChooser. Apparently that param is just passed along on the redirect. In that case, there may not be much to do on this component.

CiviCRM

 * Uses unix language codes.

Libraries and bits of code we could use

 * Related Mediawiki global function
 * LanguageTag (PHP library)
 * See also this blog by Niklas.

General concerns

 * Messaging: pass variant info from the anonymous user's language variant selector all the way down the pipeline.
 * Standards: ensure language variant codes are correctly interpreted in each component. Some translation of language code standards, or conversion of components to actually use standards, may be needed. Standards and more details: IETF language tag, BCP 47, ISO 639.
 * i18n: display variant-specific messages to the user in every UI, including e-mail.
 * Tech debt - there's a library in CiviCRM that is a bit of a mess and would probably require cleanup
 * Do our processors handle variants?