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 r99289 and r99290. The reason is that the patches broke magic words and related parser functions (i.e. {{#lcfirst}}) on the turkish wikis.
The MediaWiki code handling magic words normalize the wordsto 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 (since we use content language) and it ends up lower cased but with a dotted i and the word is not found.
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).