<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: i18n</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/i18n.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2018-04-08T19:57:57+00:00</updated><author><name>Simon Willison</name></author><entry><title>awesome-falsehood: Curated list of falsehoods programmers believe in</title><link href="https://simonwillison.net/2018/Apr/8/falsehoods/#atom-tag" rel="alternate"/><published>2018-04-08T19:57:57+00:00</published><updated>2018-04-08T19:57:57+00:00</updated><id>https://simonwillison.net/2018/Apr/8/falsehoods/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/kdeldycke/awesome-falsehood"&gt;awesome-falsehood: Curated list of falsehoods programmers believe in&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I really like the general category of “falsehoods programmers believe”, and Kevin Deldyckehas done an outstanding job curating this collection. Categories covered include date and time, email, human identity, geography, addresses, internationalization and more. This is a particularly good example of the “awesome lists” format in that each link is accompanied by a useful description.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/finiteattention/status/982852339114627072"&gt;@finiteattention&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;&lt;/p&gt;



</summary><category term="i18n"/><category term="programming"/></entry><entry><title>Falsehoods Programmers Believe About Names</title><link href="https://simonwillison.net/2010/Jun/17/falsehoods/#atom-tag" rel="alternate"/><published>2010-06-17T19:44:00+00:00</published><updated>2010-06-17T19:44:00+00:00</updated><id>https://simonwillison.net/2010/Jun/17/falsehoods/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/"&gt;Falsehoods Programmers Believe About Names&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
People’s names are complicated. I’m not at all comfortable with the commonly used first name / last name distinction (as baked in to Django auth) since it doesn’t take cultural factors in to account.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/l10n"&gt;l10n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/names"&gt;names&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="i18n"/><category term="l10n"/><category term="recovered"/><category term="names"/></entry><entry><title>Language Detection: A Witch's Brew?</title><link href="https://simonwillison.net/2009/Dec/5/language/#atom-tag" rel="alternate"/><published>2009-12-05T17:30:33+00:00</published><updated>2009-12-05T17:30:33+00:00</updated><id>https://simonwillison.net/2009/Dec/5/language/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.flickr.com/blog/2009/12/04/language-detection-a-witchs-brew/"&gt;Language Detection: A Witch&amp;#x27;s Brew?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The Flickr team make the case for using the Accept-Language header over IP detection to pick a site’s language, with a simple UI for switching languages in case you get it wrong. They’ve been using this for two and a half years without any significant problems.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/flickr"&gt;flickr&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/http"&gt;http&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/l10n"&gt;l10n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/languagdetection"&gt;languagdetection&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/language"&gt;language&lt;/a&gt;&lt;/p&gt;



</summary><category term="flickr"/><category term="http"/><category term="i18n"/><category term="l10n"/><category term="languagdetection"/><category term="language"/></entry><entry><title>The TimeToLead.eu technical stack: Django and Flex</title><link href="https://simonwillison.net/2008/Sep/11/graceful/#atom-tag" rel="alternate"/><published>2008-09-11T20:33:07+00:00</published><updated>2008-09-11T20:33:07+00:00</updated><id>https://simonwillison.net/2008/Sep/11/graceful/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.jpstacey.info/blog/2008/09/11/the-timetoleadeu-technical-stack-django-and-flex/"&gt;The TimeToLead.eu technical stack: Django and Flex&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Nice case study of a site using Django’s i18n support along with django-rosetta.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/flex"&gt;flex&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jp-stacey"&gt;jp-stacey&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rosetta"&gt;rosetta&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/timetolead"&gt;timetolead&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/torchbox"&gt;torchbox&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="flex"/><category term="i18n"/><category term="jp-stacey"/><category term="python"/><category term="rosetta"/><category term="timetolead"/><category term="torchbox"/></entry><entry><title>UnicodeDictWriter - write unicode strings out to Excel compatible CSV files using Python</title><link href="https://simonwillison.net/2008/Aug/20/excel/#atom-tag" rel="alternate"/><published>2008-08-20T12:19:59+00:00</published><updated>2008-08-20T12:19:59+00:00</updated><id>https://simonwillison.net/2008/Aug/20/excel/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.djangosnippets.org/snippets/993/"&gt;UnicodeDictWriter - write unicode strings out to Excel compatible CSV files using Python&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Stuart Langridge and I spent quite a while this morning battling with Excel. The magic combination for storing unicode text in a CSV file such that Excel correctly reads it is UTF-16, a byte order mark and tab delimiters rather than commas.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/byteordermark"&gt;byteordermark&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/csv"&gt;csv&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/excel"&gt;excel&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/stuart-langridge"&gt;stuart-langridge&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unicode"&gt;unicode&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unicodedictwriter"&gt;unicodedictwriter&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/utf16"&gt;utf16&lt;/a&gt;&lt;/p&gt;



</summary><category term="byteordermark"/><category term="csv"/><category term="excel"/><category term="i18n"/><category term="python"/><category term="stuart-langridge"/><category term="unicode"/><category term="unicodedictwriter"/><category term="utf16"/></entry><entry><title>He/She/They: Grammar and Facebook</title><link href="https://simonwillison.net/2008/Jun/27/facebook/#atom-tag" rel="alternate"/><published>2008-06-27T09:06:56+00:00</published><updated>2008-06-27T09:06:56+00:00</updated><id>https://simonwillison.net/2008/Jun/27/facebook/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.facebook.com/blog.php?post=21089187130"&gt;He/She/They: Grammar and Facebook&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Facebook are going to start requiring gender information because foreign language translations wind up being too confusing when that information is not available. Aside: I wish they’d implement proper title elements on their blog posts.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/facebook"&gt;facebook&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gender"&gt;gender&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/grammar"&gt;grammar&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/l10n"&gt;l10n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/usability"&gt;usability&lt;/a&gt;&lt;/p&gt;



</summary><category term="facebook"/><category term="gender"/><category term="grammar"/><category term="i18n"/><category term="l10n"/><category term="usability"/></entry><entry><title>django-rosetta - Google Code</title><link href="https://simonwillison.net/2008/Apr/11/djangorosetta/#atom-tag" rel="alternate"/><published>2008-04-11T07:31:59+00:00</published><updated>2008-04-11T07:31:59+00:00</updated><id>https://simonwillison.net/2008/Apr/11/djangorosetta/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/p/django-rosetta/"&gt;django-rosetta - Google Code&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Very classy Django-powered interface for both reading and writing your project’s gettext catalog files, hence allowing application translators to work through a web interface.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/djangorosetta"&gt;djangorosetta&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gettext"&gt;gettext&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="djangorosetta"/><category term="gettext"/><category term="i18n"/></entry><entry><title>Thai personal names</title><link href="https://simonwillison.net/2007/Dec/8/james/#atom-tag" rel="alternate"/><published>2007-12-08T16:26:53+00:00</published><updated>2007-12-08T16:26:53+00:00</updated><id>https://simonwillison.net/2007/Dec/8/james/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.jclark.com/2007/12/thai-personal-names.html"&gt;Thai personal names&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
“Family names were allocated to families systematically and the use of family names is still controlled by the government. Any two people in Thailand with the same family name are related.”

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://www.tbray.org/ongoing/When/200x/2007/12/07/JJC-on-Thai"&gt;Tim Bray&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/james-clark"&gt;james-clark&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/l10n"&gt;l10n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/thailand"&gt;thailand&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tim-bray"&gt;tim-bray&lt;/a&gt;&lt;/p&gt;



</summary><category term="i18n"/><category term="james-clark"/><category term="l10n"/><category term="thailand"/><category term="tim-bray"/></entry><entry><title>JavaScript Internationalisation, explained by reindeer</title><link href="https://simonwillison.net/2007/Dec/8/ways/#atom-tag" rel="alternate"/><published>2007-12-08T14:04:33+00:00</published><updated>2007-12-08T14:04:33+00:00</updated><id>https://simonwillison.net/2007/Dec/8/ways/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://24ways.org/2007/javascript-internationalisation"&gt;JavaScript Internationalisation, explained by reindeer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
“Santa even spooked Comet recently by talking about him as if he were some pushy web server.”


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/24-ways"&gt;24-ways&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/comet"&gt;comet&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/matthew-somerville"&gt;matthew-somerville&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/santa"&gt;santa&lt;/a&gt;&lt;/p&gt;



</summary><category term="24-ways"/><category term="comet"/><category term="i18n"/><category term="javascript"/><category term="matthew-somerville"/><category term="santa"/></entry><entry><title>Django security fix released</title><link href="https://simonwillison.net/2007/Oct/26/django/#atom-tag" rel="alternate"/><published>2007-10-26T21:47:44+00:00</published><updated>2007-10-26T21:47:44+00:00</updated><id>https://simonwillison.net/2007/Oct/26/django/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.djangoproject.com/weblog/2007/oct/26/security-fix/"&gt;Django security fix released&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Django’s internationalisation system has a denial of service hole in it; you’re vulnerable if you are using the i18n middleware. Fixes have been made available for trunk, 0.96, 0.95 and 0.91.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/denial-of-service"&gt;denial-of-service&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vulnerability"&gt;vulnerability&lt;/a&gt;&lt;/p&gt;



</summary><category term="denial-of-service"/><category term="django"/><category term="i18n"/><category term="python"/><category term="security"/><category term="vulnerability"/></entry><entry><title>BabelDjango</title><link href="https://simonwillison.net/2007/Aug/20/babeldjango/#atom-tag" rel="alternate"/><published>2007-08-20T14:59:12+00:00</published><updated>2007-08-20T14:59:12+00:00</updated><id>https://simonwillison.net/2007/Aug/20/babeldjango/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://babel.edgewall.org/wiki/BabelDjango"&gt;BabelDjango&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Tools for integrating Christopher Lenz’s Babel i18n framework with Django.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/babel"&gt;babel&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/christopher-lenz"&gt;christopher-lenz&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;



</summary><category term="babel"/><category term="christopher-lenz"/><category term="django"/><category term="i18n"/><category term="python"/></entry><entry><title>Announcing Babel</title><link href="https://simonwillison.net/2007/Jul/20/aboutcmlenz/#atom-tag" rel="alternate"/><published>2007-07-20T12:20:49+00:00</published><updated>2007-07-20T12:20:49+00:00</updated><id>https://simonwillison.net/2007/Jul/20/aboutcmlenz/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.cmlenz.net/blog/2007/06/announcing_babe.html"&gt;Announcing Babel&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Impressive new Python i18n / l10n package, with improved message extraction and a huge amount of bundled locale data.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/babel"&gt;babel&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/christopher-lenz"&gt;christopher-lenz&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cldr"&gt;cldr&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/l10n"&gt;l10n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/locale"&gt;locale&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unicode"&gt;unicode&lt;/a&gt;&lt;/p&gt;



</summary><category term="babel"/><category term="christopher-lenz"/><category term="cldr"/><category term="i18n"/><category term="l10n"/><category term="locale"/><category term="python"/><category term="unicode"/></entry><entry><title>Personal names around the world</title><link href="https://simonwillison.net/2007/Jul/19/ishida/#atom-tag" rel="alternate"/><published>2007-07-19T12:54:46+00:00</published><updated>2007-07-19T12:54:46+00:00</updated><id>https://simonwillison.net/2007/Jul/19/ishida/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://people.w3.org/rishida/blog/?p=100"&gt;Personal names around the world&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I’ve always felt slightly uncomfortable about firstname/lastname fields in forms. Now I know why.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/forms"&gt;forms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/richard-ishida"&gt;richard-ishida&lt;/a&gt;&lt;/p&gt;



</summary><category term="forms"/><category term="i18n"/><category term="richard-ishida"/></entry><entry><title>Google Translate (beta)</title><link href="https://simonwillison.net/2007/Jul/3/google/#atom-tag" rel="alternate"/><published>2007-07-03T16:43:19+00:00</published><updated>2007-07-03T16:43:19+00:00</updated><id>https://simonwillison.net/2007/Jul/3/google/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://translate.google.com/translate_t"&gt;Google Translate (beta)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Google’s beta translator based on statistical analysis of things like the United Nations corpus. I have no idea how long this has been available; it isn’t linked from their homepage.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/languages"&gt;languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/translation"&gt;translation&lt;/a&gt;&lt;/p&gt;



</summary><category term="google"/><category term="i18n"/><category term="languages"/><category term="translation"/></entry></feed>