Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Another way of doing foreign language support

by jens (Pilgrim)
on Oct 10, 2002 at 05:52 UTC ( #204099=note: print w/ replies, xml ) Need Help??


in reply to Do I need an array within an array

Another, perhaps better way, of supporting multiple
languages is to separate your document design from your
content/language design.

Here's what I mean. You can use a set of
<language_tags> to hold your language variable text
content, and design your web page separately.

Next, create as many libraries as you have languages.
Each library consists entirely of a large hash, so
French.pm might look like:

package MyWebsite::French; %translation { tag_color => 'rouge'; tag_street => 'rue'; tag_hooligan => 'anglais'; #etc }; 1;
Finally, write a brief preparsing program that takes
your one and only web page, sucks in each
library in turn, and spews out the appropriate static
web page, with your <preparsing_tags> replaced
with the correct language.

This makes maintenance a great deal easier, and saves
having to do translations on the fly.

Instead, have your CGI invoke the correct static,
translated web page on the fly, based upon their
browser preferences, or whatever.

This method can also be combined with HTML::Template
for superior results, by having preparsed, translated web pages
each of which also possess your HTML::Template tags.

Jens

--
Microsoft delendum est.


Comment on Another way of doing foreign language support
Download Code
Re: Another way of doing foreign language support
by bart (Canon) on Oct 10, 2002 at 21:28 UTC
    so French.pm might look like:
    package MyWebsite::French; my %translation { tag_color => rouge; tag_street => rue; tag_hooligan => anglais; #etc 1; }
    Would you please clean up your code, this is jibberish. You have a lexical hash, which is not accessible outside of this module file; a block of which I assume it is supposed to represent an anonymous hash AKA a hash ref, your strings on the RHS of the arrows are unquoted, you separate the key/value pairs with semicolons instead of comma's, and you have a "1;" inside the hash definition instead of after it. Plus there is no "=" sign connecting the hash and the data. Well, at least your comment uses the correct delimiter. ;-)

    Cleaned up:

    package MyWebsite::French; %translation = ( tag_color => 'rouge', tag_street => 'rue', tag_hooligan => 'anglais', #etc ); 1;
    Now, one can have access to this hash via %MyWebsite::French::translation.

    Otherwise, your suggestion to use a template module sounds good to me.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://204099]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (14)
As of 2014-08-27 13:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (238 votes), past polls