GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Catalyst::Plugin::I18N::Manual(3) User Contributed Perl Documentation Catalyst::Plugin::I18N::Manual(3)

Catalyst::Plugin::I18N::Manual - (Draft) I18N and L10N with Catalyst and Template Toolkit.

    Prerequisites:
     - perl >= 5.8.0
     - Catalyst >= 5.33
     - Catalyst::Plugin::I18N >= 0.04
     - Catalyst::Plugin::Unicode >= 0.2
     - Catlayst::View::TT && Template-Toolkit >= 2.14
     - GNU gettext utilities
     - An editor that understands UTF-8 and Byte Order Mark (BOM)
    $ catalyst.pl MyApp
    created "MyApp"
    created "MyApp/script"
    created "MyApp/lib"
    created "MyApp/root"
    created "MyApp/root/static"
    created "MyApp/root/static/images"
    created "MyApp/t"
    created "MyApp/lib/MyApp"
    created "MyApp/lib/MyApp/Model"
    created "MyApp/lib/MyApp/View"
    created "MyApp/lib/MyApp/Controller"
    created "MyApp/lib/MyApp.pm"
    created "MyApp/Makefile.PL"
    created "MyApp/README"
    created "MyApp/Changes"
    created "MyApp/t/01app.t"
    created "MyApp/t/02pod.t"
    created "MyApp/t/03podcoverage.t"
    created "MyApp/root/static/images/catalyst_logo.png"
    created "MyApp/root/static/images/btn_120x50_built.png"
    created "MyApp/root/static/images/btn_120x50_built_shadow.png"
    created "MyApp/root/static/images/btn_120x50_powered.png"
    created "MyApp/root/static/images/btn_120x50_powered_shadow.png"
    created "MyApp/root/static/images/btn_88x31_built.png"
    created "MyApp/root/static/images/btn_88x31_built_shadow.png"
    created "MyApp/root/static/images/btn_88x31_powered.png"
    created "MyApp/root/static/images/btn_88x31_powered_shadow.png"
    created "MyApp/root/favicon.ico"
    created "MyApp/script/myapp_cgi.pl"
    created "MyApp/script/myapp_fastcgi.pl"
    created "MyApp/script/myapp_server.pl"
    created "MyApp/script/myapp_test.pl"
    created "MyApp/script/myapp_create.pl"
    $ cd MyApp
    $ vim lib/MyApp.pm
    use Catalyst qw/-Debug I18N Unicode/;
    
    sub begin : Private {
        my ( $self, $c ) = @_;
        
        my $locale = $c->request->param('locale');
        
        $c->response->headers->push_header( 'Vary' => 'Accept-Language' );  # hmm vary and param?
        $c->languages( $locale ? [ $locale ] : undef );
    }
    sub default : Private {
        my ( $self, $c ) = @_;
        my $name = $c->request->param('name') || $c->loc('Guest');
        $c->response->content_type('text/plain; charset=utf-8');
        $c->response->body( $c->loc( 'Welcome [_1]!', $name ) );
    }
    $ mkdir lib/MyApp/I18N
    $ xgettext.pl --output=lib/MyApp/I18N/messages.pot --directory=lib/
    $ ls lib/MyApp/I18N/
    messages.pot
    $ msginit --input=lib/MyApp/I18N/messages.pot --output=lib/MyApp/I18N/sv.po --locale=sv
    Created lib/MyApp/I18N/sv.po.
    $ vim lib/MyApp/I18N/sv.po
    "Content-Type: text/plain; charset=utf-8\n"
    #: lib/MyApp.pm:50
    msgid "Guest"
    msgstr "Gäst"
    #. ($name)
    #: lib/MyApp.pm:54
    msgid "Welcome %1!"
    msgstr "Välkommen %1!"
    $ perl script/myapp_server.pl
    [Fri Dec  2 03:52:45 2005] [catalyst] [debug] Debug messages enabled
    [Fri Dec  2 03:52:47 2005] [catalyst] [debug] Loaded plugins:
    .------------------------------------------------------------------------------.
    | Catalyst::Plugin::I18N                                                       |
    | Catalyst::Plugin::Unicode                                                    |
    '------------------------------------------------------------------------------'
    [Fri Dec  2 03:52:47 2005] [catalyst] [debug] Loaded dispatcher "Catalyst::Dispatcher"
    [Fri Dec  2 03:52:47 2005] [catalyst] [debug] Loaded engine "Catalyst::Engine::HTTP"
    [Fri Dec  2 03:52:47 2005] [catalyst] [debug] Found home "/Users/chansen/MyApp"
    [Fri Dec  2 03:52:48 2005] [catalyst] [debug] Initialized i18n "MyApp::I18N"
    [Fri Dec  2 03:52:48 2005] [catalyst] [debug] Loaded Private actions:
    .----------------------+----------------------------------------+--------------.
    | Private              | Class                                  | Method       |
    +----------------------+----------------------------------------+--------------+
    | /default             | MyApp                                  | default      |
    '----------------------+----------------------------------------+--------------'
    [Fri Dec  2 03:52:48 2005] [catalyst] [info] MyApp powered by Catalyst 5.57
    You can connect to your server at http://localhost:3000
    # point your browser to http://localhost:3000/?name=Joe
    # output should render:
    Välkommen Joe!
    $ vim lib/MyApp.pm
    sub default : Private {
        # ...
        $c->response->body( $c->loc( 'Welcome to my homepage [_1]!', $name ) );
    }
    
    $ xgettext.pl --output=lib/MyApp/I18N/messages.pot --directory=lib/
    $ msgmerge --update lib/MyApp/I18N/sv.po lib/MyApp/I18N/messages.pot
    . done.
    $ vim lib/MyApp/I18N/sv.po
    #. ($name)
    #: lib/MyApp.pm:54
    msgid "Welcome to my homepage %1!"
    msgstr "Välkommen till min hemsida %1!"
    $ perl script/myapp_server.pl
    # point your browser to http://localhost:3000/?name=Joe
    # output should render:
    Välkommen till min hemsida Joe!
    $ perl script/myapp_create.pl view TT TT
     exists "/Users/chansen/MyApp/script/../lib/MyApp/View"
     exists "/Users/chansen/MyApp/script/../t"
    created "/Users/chansen/MyApp/script/../lib/MyApp/View/TT.pm"
    created "/Users/chansen/MyApp/script/../t/view_TT.t"
    
    $ vim lib/MyApp.pm
    sub default : Private {
        my ( $self, $c ) = @_;
        my $name = $c->request->param('name') || $c->loc('Guest');
        $c->response->content_type('text/plain; charset=utf-8');
        $c->stash(
            name     => $name,
            template => 'test.tt' 
        );
        
        $c->forward('MyApp::View::TT');
    }
    $ vim root/test.tt # Save file in UTF-8 with BOM
    
    [% c.loc( 'Welcome to my place [_1]!', c.stash.name ) %]
    
    $ xgettext.pl --output=lib/MyApp/I18N/messages.pot --directory=lib/ --directory=root/
    $ msgmerge --update lib/MyApp/I18N/sv.po lib/MyApp/I18N/messages.pot
    . done.    
    
    $ vim lib/MyApp/I18N/sv.po
    #. (c.stash.name)
    #: root/test.tt:1
    msgid "Welcome to my place %1!"
    msgstr "Välkommen till mitt ställe %1!"
    
    $ perl script/myapp_server.pl 
    [Fri Dec  2 05:12:58 2005] [catalyst] [debug] Debug messages enabled
    [Fri Dec  2 05:12:58 2005] [catalyst] [debug] Loaded plugins:
    .------------------------------------------------------------------------------.
    | Catalyst::Plugin::I18N                                                       |
    | Catalyst::Plugin::Unicode                                                    |
    '------------------------------------------------------------------------------'
    [Fri Dec  2 05:12:58 2005] [catalyst] [debug] Loaded dispatcher "Catalyst::Dispatcher"
    [Fri Dec  2 05:12:58 2005] [catalyst] [debug] Loaded engine "Catalyst::Engine::HTTP"
    [Fri Dec  2 05:12:58 2005] [catalyst] [debug] Found home "/Users/chansen/MyApp"
    [Fri Dec  2 05:12:58 2005] [catalyst] [debug] Initialized i18n "MyApp::I18N"
    [Fri Dec  2 05:12:59 2005] [catalyst] [debug] Loaded components:
    .-------------------------------------------------------------------+----------.
    | Class                                                             | Type     |
    +-------------------------------------------------------------------+----------+
    | MyApp::View::TT                                                   | instance |
    '-------------------------------------------------------------------+----------'
    [Fri Dec  2 05:12:59 2005] [catalyst] [debug] Loaded Private actions:
    .----------------------+----------------------------------------+--------------.
    | Private              | Class                                  | Method       |
    +----------------------+----------------------------------------+--------------+
    | /default             | MyApp                                  | default      |
    '----------------------+----------------------------------------+--------------'
    [Fri Dec  2 05:12:59 2005] [catalyst] [info] MyApp powered by Catalyst 5.57
    You can connect to your server at http://localhost:3000
    
    # point your browser to http://localhost:3000/?name=Joe
    # output should render:
    Välkommen till mitt ställe Joe!

Definitions

<http://en.wikipedia.org/wiki/Internationalization_and_localization>
<http://en.wikipedia.org/wiki/Locale>
<http://en.wikipedia.org/wiki/Byte_Order_Mark>
<http://en.wikipedia.org/wiki/Character_encoding>
<http://en.wikipedia.org/wiki/Collation>
<http://en.wikipedia.org/wiki/Content_Negotiation>
<http://en.wikipedia.org/wiki/Unicode>

Guides

<http://www.i18nguy.com/guidelines.html>
<http://translate.sourceforge.net/wiki/guide/start>

Perl

<http://search.cpan.org/dist/perl/pod/perllocale.pod>
<http://search.cpan.org/dist/perl/pod/perluniintro.pod>
<http://search.cpan.org/dist/perl/pod/perlunicode.pod>
<http://www.ahinea.com/en/tech/perl-unicode-struggle.html>
<http://search.cpan.org/dist/Locale-Maketext-Lexicon/docs/webl10n.html>
<http://search.cpan.org/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod>
<http://www.justatheory.com/computers/programming/perl/utf8_trials.html>
Slides from a talk given by Mark Fowler.

<http://www.twoshortplanks.com/talks/utf8/perlandutf8.pdf>

Slides from a talk given by Tom Insam.

<http://jerakeen.org/slush/talk-perl-loves-utf8>

<http://lists.cpan.org/showlist.cgi?name=perl-i18n>
<http://lists.cpan.org/showlist.cgi?name=perl-unicode>

Portals

<http://www.google.com/Top/Computers/Software/Globalization/>
<http://www.i18nguy.com/>

Standards

<http://www.w3.org/Protocols/rfc2616/rfc2616.html>
<http://www.w3.org/Protocols/rfc2616/rfc2616-sec12.html#sec12>
<http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13>
<http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.6>
<http://www.faqs.org/rfcs/rfc3066.html>

Web

<http://www.w3.org/International/>
<http://www.w3.org/TR/i18n-html-tech-char/>
<http://www.w3.org/TR/i18n-html-tech-lang/>

<http://www.unicode.org/cldr/>
<http://www-306.ibm.com/software/globalization/icu/index.jsp>

Character Encoding, Collation and Normalization

<http://search.cpan.org/dist/Encode/>
<http://search.cpan.org/dist/Unicode-Collate/>
<http://search.cpan.org/dist/Unicode-Normalize/>

Currency

<http://search.cpan.org/dist/Locale-Currency-Format/>
<http://search.cpan.org/dist/Math-Currency/>

Dates

<http://search.cpan.org/dist/DateTime/>
<http://search.cpan.org/dist/DateTime-Locale/>
<http://search.cpan.org/dist/DateTime-TimeZone/>

Language Tags, Identification and Negotiation

<http://search.cpan.org/dist/libwww-perl/lib/HTTP/Negotiate.pm>
<http://search.cpan.org/dist/I18N-AcceptLanguage/>
<http://search.cpan.org/dist/I18N-LangTags/>

<http://search.cpan.org/dist/I18N-LangTags/lib/I18N/LangTags/Detect.pm>

Message Catalogs

<http://search.cpan.org/dist/Locale-Maketext/>

<http://search.cpan.org/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod>

<http://search.cpan.org/dist/Locale-Maketext-Lexicon/>

<http://search.cpan.org/dist/Locale-Maketext-Lexicon/docs/webl10n.html>

<http://search.cpan.org/dist/Locale-Maketext-Lexicon/script/xgettext.pl>

Provides a simple interface to Locale::Maketext::Lexicon.

<http://search.cpan.org/dist/Locale-Maketext-Simple/>

<http://search.cpan.org/dist/libintl-perl/lib/Locale/Messages.pm>

<http://search.cpan.org/dist/libintl-perl/lib/Locale/TextDomain.pm>

Numbers

<http://search.cpan.org/dist/Number-Format/>

<http://www.gnu.org/software/gettext/>

<http://www.gnu.org/software/gettext/manual/html_chapter/gettext.html>

<http://gnuwin32.sourceforge.net/packages/gettext.htm>

Translation tool for Gnome. Supports gettext catalogs.

<http://gtranslator.sourceforge.net/>

Translation tool for Windows 98/Me/XP/2000. Supports several formats, including gettext catalogs.

<http://initranslator.sourceforge.net/>

Translation tool for KDE. Supports gettext catalogs.

<http://i18n.kde.org/tools/kbabel/>

Translation tool for Mac OS X. Supports sevral formats, including gettext catalogs.

<http://www.triplespin.com/en/products/locfactoryeditor.html>

A cross-platform gettext catalogs editor.

<http://www.poedit.org/>

Christian Hansen "ch@ngmedia.com"

This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.

2009-07-30 perl v5.40.2

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.