Petr Kadlec wrote:
Brion's point about template link table corruption is a good one. That would indeed cause problems.
Yes, but I wonder: How different would that be from the current situation? I can say something like {{It is {{#time:s}}}} which tries to include a template – which one is considered on render, but the templatelinks table is updated only on save. So that after the first action=purge, you have the same kind of corruption. (See [[testwiki:Parser functions vs linktables]].)
It's the same. As long as the results of the parser functions depend only on their arguments then there is no problem. But when a parser function depends on some changeable external data, cache coherency is lost.
There is a workaround for this which is used to update the templatelinks tables for pages with cascading protection. If during Article::view(), the contents of the templatelinks table differs from the results of a parse, the templatelinks table is updated. This would work quite well for time but not well at all for language dependencies.
(Agreed, it is not that big of problem currently, because the use cases for this are rare, while the {{USERLANG}} would IMHO spread very quickly, esp. on Commons.)
Right, it's the application which we have to consider, it's our job to work out how to support it. Basically this would mean that you could have language-dependent templates, but the pages using them would not have their caches invalidated on the usual triggers, such as image upload, article creation/deletion and template changes. Cascading protection would be broken, causing constant link table updates from one language version to another.
-- Tim Starling