Re: Transparent i18n?

Поиск
Список
Период
Сортировка
От David Pratt
Тема Re: Transparent i18n?
Дата
Msg-id 40E970BF-E9D8-11D9-9AD1-000A27B3B070@eastlink.ca
обсуждение исходный текст
Ответ на Transparent i18n?  ("Steve - DND" <postgres@digitalnothing.com>)
Ответы Re: Transparent i18n?  (Greg Stark <gsstark@mit.edu>)
Re: Transparent i18n?  (Karsten Hilbert <Karsten.Hilbert@gmx.net>)
Список pgsql-general
Hi Steve.  I have been a bit puzzling over a similar issue - not i18
for interface but for text data and trying to sort out a solution so I
will be interested to hear additional advice as well.  When I wrote to
the list a couple of weeks back (look for my posting around the 17th) I
was looking at doing something with a normalized structure but now I
don't think this is going to work that well.  It was suggested that I
look at an array.  I am looking at a multidimensional array to do this.
  I am just reading up on postgres support for arrays.

I think my table will be pretty simple;
CREATE TABLE multi_language (
    id                                              SERIAL,
    lang_code_and_text            TEXT[][]
);

So records would look like:

1, {{'en','the brown cow'},{'fr','la vache brun'}}
2, {{'en','the blue turkey'},{'fr','la dandon bleu'}}

I have another table with language codes ie en, fr, etc.  When
languages are added, I would just append to array for whole table.  The
trouble for me is more of getting the data out in postgres because
retrieving the raw array will be incompatible syntax for python and I
would have to manipulate results. Quite frankly I want for this to be
done in Postgres so I only have to retrieve query results.  If I cant
it would be a pain unless I can think of something else because the
issue is going to be the keys and values in my languages table working
with the array.

For example, if I have a serial table containing my languages and add 2
entries english and french, I would then have two elements in my array
and it wouldn't be so bad because I could use the id as a key to get
the value back out through a query.  But say I delete french (and
remove second element in entries for my table) and add spanish, now I
have an language id of 3 and two elements in my array that can't call
each other properly.  In python, arrays are called dictionaries and you
can easily grab the an element doing something like
lang_code_and_text['en'] to get the value of the en (english) key.

I was hoping you could call the multi-language text out of the array
with a text key instead of a numeric index
but it appears Postgres will only let you do it this way or get results
from slices as far as I can tell.  Maybe someone else on the list has
some advice to offer here.

ie.

SELECT language_text[1][1] AS language_code,
  language[1][2] AS text
FROM language_text;


Regards,
David

В списке pgsql-general по дате отправления:

Предыдущее
От: Albert Vernon Smith
Дата:
Сообщение: Re: optimizer not optimizing
Следующее
От: "Michael Schmidt"
Дата:
Сообщение: Check constraint problem