Re: New class in PEAR: Translation
| From: | Markus Wolff | Date: | Tue, 01 Oct 2002 11:11:54 +0000 |
| Subject: | Re: New class in PEAR: Translation | ||
| References: | 1 | Groups: | php.pear.dev |
| Request: | Send a blank email to pear-dev+get-9738@lists.php.net to get a copy of this message | ||
Am Tue, 01 Oct 2002 12:30:35 +0200 schrieb Wojciech Zieliñski <voyteck@caffe.com.pl>:
> Can I please have some votes (if someone thinks, it's bad idea - then
> also vote against :) I will at least know, that I am not going the good
> direction :) )
> If someone wants to see this class - it is right now available on
> http://voyteck3.free.komrel.net/translation/
IMHO Wolfram´s I18N class and your new Translation class are very good
examples why it´s a good thing to have more than one solution for a
problem in PEAR - when this class will be added, there will be two
different approaches to the same problem in PEAR, but still not the one
that I would need, so there´s still room for another :-)
However, here´s my +1 for adding this class as I think it will be useful
for some people. You might consider choosing another License though as I
believe "Postcardware" is not one of the licenses that are listed as
compatible to the PHP-License :-)
In case you´re wondering what I have in mind when I think of a
translation class, it´s basically this:
When I need to output strings in a script, I make an instance of a
translation class...
$t = new Translation("DE"); // For translating into german
To get a translated string, I´d simply do something like this:
$trans = $t->get("Translation is good");
Or this:
printf($t->get("You have %s unread mails", $num);
The "get" method will look up the string in a database table that looks
like this:
BASE (Primary Key) | DE | FR
------------------------+-------------------------------+-------------------------
Translation is good | Übersetzung ist gut | Je ne parle pas Francais
You have % unread mails | Sie haben %s ungelesene Mails |
The field "BASE" will always contain the original strings in the base
language. This is the language that I´m using in my PHP code and will be
English in most cases I guess. This way my code is very easy to read and
understand. Also, it doesn´t matter on which page I am which is
especially important as I sometimes need to output stuff in scripts when
I can´t possibly know where I am at the moment.
When a string is not yet in the database, it will be added for future
reference. The other column names are identical to the language string
that is passed to the translation class constructor.
If no translation for a specific string is available (meaning the target
language´s column is empty or doesn´t exist), the string will always be
returned in the base language.
This is a drop-dead-simple method of translation that is not only easy
to use but also easy to maintain even with tools like phpMyAdmin. If
someone here knows a class that already does this or something very
similar, please drop me a line. If not, I´ll have to write this myself
as I need something like this and have no use for page-oriented
translation.
Regards,
Markus
--
*21st Media* | Consulting, Konzeption, Produktion für die Bereiche:
Markus Wolff | Internet, Intranet, eCommerce, Content Management,
Hamburg,Germany | Softwareentwicklung, 3D-Animation, Videostreaming
http://21st.de | Tel. [+49](0)40/6887949-0, Fax: [+49](0)40/6887949-1