Split from bug 31490.
Our Turkish language class lacks proper implementation of `lc()` and `uc()` methods for that language. It uses a dotted i and a dotless i, which mean that I and i are actually different letter in that language!
Useful context to read is https://en.wikipedia.org/wiki/Dotted_and_dotless_I
An implementation was deployed on wmf wiki for MediaWiki 1.18 but it was reverted by [[ https://www.mediawiki.org/wiki/Special:Code/MediaWiki/99289 | r99289 ]] and [[ https://www.mediawiki.org/wiki/Special:Code/MediaWiki/992290 | r99290 ]]. The reason is that the patch broke magic words and related parser functions (i.e. {{#lcfirst}}) on the turkish wikis.
The MediaWiki code handling magic words normalize them to lower case using the content language (look for` lc()` calls in the `MagicWord` class). Hence a magic word such as `lcfirst` is treated just like any Turkish word and it ends up upper cased but with a dotted i.
Two possibilities:
- magic words could optionally be made an array referencing the language. Then we could use that language to use the proper `lc` / `uc` implementations
- for Turkish language, forge magic words aliases having dotted or dot less i. i.e. 'ucfirst' (with dot) could have an alias UCFIRST (without dot). Both would then be valid.
Optionally, parser functions could use a parameter to change the language being used. This would let Turkish project to use the English lc / uc function, for example to upper case iPhone to IPhone (dotless i).