<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-4345066302652424538.post4295367758495890082..comments</id><updated>2009-03-16T13:05:08.164+01:00</updated><title type='text'>Comments on Marc Garcia &amp;amp; The Python: django-multilingual syntax poll</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vaig.be/feeds/4295367758495890082/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4345066302652424538/4295367758495890082/comments/default'/><link rel='alternate' type='text/html' href='http://vaig.be/2009/03/django-multilingual-syntax-poll.html'/><author><name>Marc Garcia</name><uri>http://www.blogger.com/profile/01286849404527531329</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4345066302652424538.post-2450147754080293807</id><published>2009-03-16T13:05:00.000+01:00</published><updated>2009-03-16T13:05:00.000+01:00</updated><title type='text'>just wondering if anyone has checked the issues on...</title><content type='html'>just wondering if anyone has checked the issues on :&lt;BR/&gt;http://code.google.com/p/django-transmeta/issues/list&lt;BR/&gt;&lt;BR/&gt;i personaly think that "column storing" is better when there are lots of languages. I found that extra table approach is very slow with lots of data also.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4345066302652424538/4295367758495890082/comments/default/2450147754080293807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4345066302652424538/4295367758495890082/comments/default/2450147754080293807'/><link rel='alternate' type='text/html' href='http://vaig.be/2009/03/django-multilingual-syntax-poll.html?showComment=1237205100000#c2450147754080293807' title=''/><author><name>Piotr</name><uri>http://www.blogger.com/profile/12839824044691448718</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://vaig.be/2009/03/django-multilingual-syntax-poll.html' ref='tag:blogger.com,1999:blog-4345066302652424538.post-4295367758495890082' source='http://www.blogger.com/feeds/4345066302652424538/posts/default/4295367758495890082' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-4345066302652424538.post-3036419184461569974</id><published>2009-03-10T06:52:00.000+01:00</published><updated>2009-03-10T06:52:00.000+01:00</updated><title type='text'>You may also want to read my entry about translati...</title><content type='html'>You may also want to read my entry about translation in Django, even if it is a completely different way, but used twice in practice: http://www.rafaljonca.org/blog/2009/03/08/third-style-django-multilingual-data-handling/</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4345066302652424538/4295367758495890082/comments/default/3036419184461569974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4345066302652424538/4295367758495890082/comments/default/3036419184461569974'/><link rel='alternate' type='text/html' href='http://vaig.be/2009/03/django-multilingual-syntax-poll.html?showComment=1236664320000#c3036419184461569974' title=''/><author><name>jeffar</name><uri>http://www.rafaljonca.org/</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://vaig.be/2009/03/django-multilingual-syntax-poll.html' ref='tag:blogger.com,1999:blog-4345066302652424538.post-4295367758495890082' source='http://www.blogger.com/feeds/4345066302652424538/posts/default/4295367758495890082' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-4345066302652424538.post-6425966896769868717</id><published>2009-03-10T01:48:00.000+01:00</published><updated>2009-03-10T01:48:00.000+01:00</updated><title type='text'>Malcolm: you are right, there is a huge difference...</title><content type='html'>Malcolm: you are right, there is a huge difference between these models.&lt;BR/&gt;&lt;BR/&gt;I'm not really convinced we should try and implement both of them in a single library; joining these implementations means increased complexity and more work for maintainers.&lt;BR/&gt;&lt;BR/&gt;But if we could make our libraries use the same API and minimize differences in behaviour, we would allow creating apps that are independent on the multilingual "backend".  You could just take, say, the multilingual flatpages app and use it without any changes both in internals and large, open source projects.&lt;BR/&gt;&lt;BR/&gt;There are still some technical problems, as in some places the abstractions crack and leak (ie. the save method), but I think we can find solutions to those.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4345066302652424538/4295367758495890082/comments/default/6425966896769868717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4345066302652424538/4295367758495890082/comments/default/6425966896769868717'/><link rel='alternate' type='text/html' href='http://vaig.be/2009/03/django-multilingual-syntax-poll.html?showComment=1236646080000#c6425966896769868717' title=''/><author><name>marcink</name><uri>http://marcinkaszynski.com/</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://vaig.be/2009/03/django-multilingual-syntax-poll.html' ref='tag:blogger.com,1999:blog-4345066302652424538.post-4295367758495890082' source='http://www.blogger.com/feeds/4345066302652424538/posts/default/4295367758495890082' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-4345066302652424538.post-3336796867578909563</id><published>2009-03-10T01:33:00.000+01:00</published><updated>2009-03-10T01:33:00.000+01:00</updated><title type='text'>Just a suggestion: maybe sending the poll link to ...</title><content type='html'>Just a suggestion: maybe sending the poll link to the django-i18n mailing-list?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4345066302652424538/4295367758495890082/comments/default/3336796867578909563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4345066302652424538/4295367758495890082/comments/default/3336796867578909563'/><link rel='alternate' type='text/html' href='http://vaig.be/2009/03/django-multilingual-syntax-poll.html?showComment=1236645180000#c3336796867578909563' title=''/><author><name>David, biologeek</name><uri>http://david.larlet.fr/</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://vaig.be/2009/03/django-multilingual-syntax-poll.html' ref='tag:blogger.com,1999:blog-4345066302652424538.post-4295367758495890082' source='http://www.blogger.com/feeds/4345066302652424538/posts/default/4295367758495890082' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-4345066302652424538.post-4766715061518063879</id><published>2009-03-10T01:08:00.000+01:00</published><updated>2009-03-10T01:08:00.000+01:00</updated><title type='text'>I'm reluctant to subscribe to yet another mailing ...</title><content type='html'>I'm reluctant to subscribe to yet another mailing list (although I suspect I might at some point), so I'm going to add my two cents here and you can use it as you wish...&lt;BR/&gt;&lt;BR/&gt;Please keep in mind that there are at least two broad groups of use-cases here that don't have a lot of overlap and which require different designs. If you're going for one-size-fits-all, you will have one size that fits few.&lt;BR/&gt;&lt;BR/&gt;The first case is common in internal applications, where the number of languages is a known quantity and/or can be controlled. For example, even if it's not known at build time that Spanish will be supported, it can be scheduled that "we'll roll out Spanish support in June" and database changes can be made to support that. If every piece of content is to be translated (e.g. a website with all content available simultanesouly in multiple languages), then including the localised copy in the same model as the original, or in one separate "translation" model makes some sense.&lt;BR/&gt;&lt;BR/&gt;The other model is the open source one. You don't know in advance which languages you will be supporting. You don't know when support for a new language will arrive and you don't have any real control over how much of the content will be translated. In that case, having a separate entity for each language (e.g. a separate model) makes more sense, since you don't want to have to add extra database columns to everything just because somebody translated 14 strings of the existing 978 into Spanish. There's also a pretty strong argument that the Open Source / bazaar style of development leads to translations into more languages than almost all internal and proprietary products.&lt;BR/&gt;&lt;BR/&gt;I think you'll need to be prepared to support both in-table and extra-table cases for holding translated copies. One might even consider also storing on-disk (file-based) copy for translated content, but that's a whole other storage model and I wouldn't do it in the initial project.&lt;BR/&gt;&lt;BR/&gt;I suspect you, Marc, already realise all this, but I've had to explain the differing models to a few people over the past 12 months or so when they've been wondering about some Grand Unifed Solution in this space, so it's probably important to be able to address both situations, at least to the point of saying "we've decided this situation is out-of-scope" and leaving that up to some other project.&lt;BR/&gt;&lt;BR/&gt;Having two or three projects for differing storage models isn't the end of the world, either, by the way. One tool to do a particular job well is a good philosophy, not just in Unix-like systems. The job might be "storing translations in related tables to support the bazaar style of addition" or "supporting fixed / small numbers of translations inline".</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4345066302652424538/4295367758495890082/comments/default/4766715061518063879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4345066302652424538/4295367758495890082/comments/default/4766715061518063879'/><link rel='alternate' type='text/html' href='http://vaig.be/2009/03/django-multilingual-syntax-poll.html?showComment=1236643680000#c4766715061518063879' title=''/><author><name>Malcolm</name><uri>http://www.pointy-stick.com/blog/</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://vaig.be/2009/03/django-multilingual-syntax-poll.html' ref='tag:blogger.com,1999:blog-4345066302652424538.post-4295367758495890082' source='http://www.blogger.com/feeds/4345066302652424538/posts/default/4295367758495890082' type='text/html'/></entry></feed>