From 3.1 Squid now supports Automatic Language Negotiation. There seems to be a little bit of confusion over what this means and what should be configured.
Obviously we would like people to enable and use the automatics. For some very good reasons which you shall understand at the end of this post. I would hope you agree by then too.
Most software you and the rest of the world will be familiar with comes in two forms: English, or translated into your own language. You might have your computer set to non-English language and all the software that can changes text so you can more easily read it.
All of this is very you-centric and only affects whatever machine you are using. The www is a very different beast altogether. It has to deal with everyone. At the same time too.
The best example is search engine results. You may have noticed when you do a search that some results have little tags. cached, similar pages, more, … and sometimes one called ‘translate’. This is nice, because it means the search engine has noticed that the page is in a language you may not know and its offering a link that will translate the page to one you can read.
Ever wondered ‘how does it know’? and more importantly; what does all this have to do with Squid?
Lets start with the second one: What does this have to do with Squid? well Squid. The one I run, the one you probably run, and many others around the world generate error pages. You are sure to have seen the “404 Not Found” at some point. Probably “Access Denied” and “Connection Failed” as well.
Until now Squid has been setup and managed by someone for a specific purpose. That person sets the language those pages are displaying to something they can read and see what problems are. And here is where the confusion seems to start.
One admin who setup the new Squid promptly changed the error_directory language to German (de). Quite rightly he thought. I’m German, my customers are German, who needs any other languages installed? It will only confuse me to see other language errors. And the server is set to German so it won’t show any others anyway.
At this point I’m guessing you might agree with some or all of that assumption. For your language in the same situation, you would probably do the same yes?
Lets take a look at that search engine question. We found a website. It is written strangely in Persian. We do not have a clue whats its about. Clicking on the ‘translate’ link and we read the page.
But wait, …
… we only saw one single ‘translate’ link and surely the engine knows many languages. We should see a whole bunch, one for every language the page might be translated into.
This is where we get closer to Squid again. The HTTP protocol has a header where the browser says what languages its current user would like things displayed in. The search engine is reading that header and only showing the translate link for most prefered language it can cope with.
This is precisely what Squid now does for the error pages it creates. The language displayed depends on the visitor doing the reading when the automatics are allowed to run. The server Squid runs on has nothing to do with the language.
Our German admin if you recall set the error_directory to German so he could read it.
Too bad for us if you or I non-German readers had a problem getting to one of his customers websites. Or if we were visiting one of his customers and using their Internet access from our laptop.
What he should have done was leave error_directory unset. When he visits the proxy to test a problem it shows german language, because has browser says to. The user who reported the problem might be reading the same message in Chinese, or Korean.
Squid provides error pages for two reasons, to explain whats gone wrong, and to explain to someone what to do about the problem. In this world of many international people your visitors and users could be coming from any kind of background with any kind of language needs. To help reduce the number of strange language half-understood complaints we all receive the Squid team have made Squid explain things in a language the visitor can read, so you don’t have to. All you have to do is turn it on.
Squid now speaks in over 130 national languages and dialects. 100 more than this same time just last year. Some are more complete than others, improving all the time.
Kia Ora koe.