I have a goal for the design. My goal is that, once a Wikilink is exploded based on the ':' character, I can do simple database lookups, and append the results together to get the target URL without having to do any parsing on the data I looked up.
For instance, let us take a link Talk:foo
I can explode this into Talk and foo.
Each namespace has an "urlprefix". For Talk, the urlprefix would be http://www.wikipedia.org/Talk
Now, let's add a (separate) language into the mix. en:Talk:foo
I can explode it into en, Talk, and foo.
Now, the urlprefix for Talk is the same. How do I say that it is an english language page? The normal, standard way to do this would be like so:
http://www.wikipedia.org/en/Talk/foo
That feels "right" to me. But doing that would require parsing the urlprefix for the namespace to figure out where to put in the language. I don't want to do that, and don't feel I should have to.
If languages are namespaces it is easy: I can make the namespace en_Talk have an urlprefix of http://www.wikipedia.org/en/Talk
However, Brion, you've made a convincing case that we do need to know the language. I have no problem having another field for each namespace, giving that namespaces language to give to browsers.
Can you think of a better way to do this?
Jonathan