[orm-devel] How to handle multi language?
Ross J. Reedstrom
reedstrm at rice.edu
Wed Jun 22 20:08:11 CEST 2005
Hi Deidriech and Werner -
I've been lurking here as well, so don't think you're talking in a
vacuum. Haven't had a chance to use ORM much recently, but we _have_
been thinking aobut translation issues.
On Tue, Jun 21, 2005 at 01:18:58PM +0200, Werner F. Bruhin wrote:
> >Anyway, I'd like to have one row per country, though dispite the face
> >that there are three country names, it's only one country.
>
> You are right there should only be one row per thing (country in this
> case), I am not really happy with my solution nor with your's, so it is
> probably back to the drawing board.
>
> I use gettext for the program labels, maybe one could base it on their
> approach.
>
> The text to translate becomes the "ID" to find the translation, i.e.
> have a column type "TRANSLATE" which does a lookup in a table containing
> translations if the language ID is found for the "ID" that entry is used
> otherwise the "ID" is used.
I think this is a reasonably good idea, except for using the ID as the
default translation: even with gettext, if the string is reasonably
long, its common practice to assign an actual ID. I think for a real
database, that's the right way to go from the beginning. So defaulting
becomes using a COALESCE, with one column per language, in order of
preference:
SELECT COALESCE(gr_tran,fr_tran,en_tran) as txt FROM texts WHERE txtid = 123;
would return the first non-NULL translation for an order of
pref: German, French, and English.
Ross
--
Ross Reedstrom, Ph.D. reedstrm at rice.edu
Research Scientist phone: 713-348-6166
The Connexions Project http://cnx.rice.edu fax: 713-348-3665
Rice University MS-375, Houston, TX 77005
GPG Key fingerprint = F023 82C8 9B0E 2CC6 0D8E F888 D3AE 810E 88F0 BEDE
Ross
More information about the orm-devel
mailing list