[geeklog-devel] Question about internationalization and look-ups

Tony Bibbs tony at tonybibbs.com
Tue Feb 19 13:52:18 EST 2008


I was thinking more along the lines of having you check out the GL2 codebase and whip up a working sample ;-)

Seriously if you don't have the time I'd understand but if you do that'd fix a big problem for me. I can probably have something in SVN in alpha quality by the end of the week or early next week at the latest.

--Tony

----- Original Message ----
From: Michael Jervis <mjervis at gmail.com>
To: Geeklog Development <geeklog-devel at lists.geeklog.net>
Sent: Sunday, February 17, 2008 3:10:18 AM
Subject: Re: [geeklog-devel] Question about internationalization and look-ups


On
Feb
9,
2008
2:46
PM,
Tony
Bibbs
<tony at tonybibbs.com>
wrote:

>

I
wouldn't
suppose
someone
would
have
time
to
try
and
crack
this
one
nut
for
me?

Ok
the
way
I
do
it
is
to
use
the
attached
translate.class.php,
it's
bootstrapped
as
follows:

/*
Load
core
translation
options:
*/
require_once
'Translate.class.php';
require_once
SNMR_PATH_TO_LANG.'core.en.php';
$trans
=
new
Translate($_LANGUAGE);

I
construct
my
controllers
passing
in
the
global
translate
object
which
becomes
a
member
variable
$i,
this
is
done
in
the
base
class
for
my
controllers:


/**



*
Constructor,
does
things
like
load
the
translator,
template
and



*
cache
objects.



*



*
@param
$internationalise

object
Zend_Translate
object.



*
@param
$view







object
Zend_View
object.



*
@param
$db








object
PHPBB3
DB
layer.



*
@param
$user







object
PHPBB3
User
layer.



*
@param
$user







object
PHPBB3
Auth
layer.



*
@param
$frontendDefaults

array

Default
options
for
Zend_Cache
frontend.



*
@param
$backendDefaults


array

Default
options
for
Zend_Cache
backend.



*/


public
function
__construct(&$internationalise,
&$view,
&$db,
&$user,
&$auth,
















$frontendDefaults,
$backendDefaults)
{




$this->i

=
$internationalise;




$this->v

=
$view;




$this->d

=
$db;




$this->u

=
$user;




$this->auth
=
$auth;




/*
Cache
defaults
*/




$this->cacheOptions





=
new
StdClass();




$this->cacheOptions->frontend
=
$frontendDefaults;




$this->cacheOptions->backend
=
$backendDefaults;




/*
View
essentials
*/




$this->v->baseUrl
=
SNMR_BASE_URL;


}

Each
controller
then
adds
it's
translations
onto
the
code
language
set
in
it's
constructor:
$this->i->addTranslations('homePage',
$this->u->data['user_lang']);

I
then
translate
things
and
pass
them
into
variables
on
the
view
object
for
rendering:
$this->v->moreText
=
$this->i->_('More...');

My
core
language
file
(core.en.php)
is
actually
dull:
<?php

$_LANGUAGE
=
array(
);
?>

Then
each
module
has
it's
translation
file
(homePage.en.php
for
example):
<?php

$_LANGUAGE
=
array_merge($_LANGUAGE,
array(


'homepagewelcome'
=>
'Welcome
to
Snakenet',


'TuneInBlock'
=>
'Tune
In'
));
?>

So
just
wack
a
translation
object
into
your
view
object,
and
in
buildDropDown
throw
everything
through
$this->i->_();
and
translate
with
files.

Alternatively,
combine
that
with
a
lang
column
on
each
of
your
lookup
tables
and
frig
your
query
to
return
where
the
language
maps.

Either
way,
it's
a
pain
in
the
arse
to
keep
your
translations
in
synch,
but,
at
least
with
My
Way
you
always
get
a
default
string
(typically
in
English).

Cheers,

Mike


-----Inline Attachment Follows-----

_______________________________________________
geeklog-devel
mailing
list
geeklog-devel at lists.geeklog.net
http://eight.pairlist.net/mailman/listinfo/geeklog-devel







More information about the geeklog-devel mailing list