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


Manual Reference Pages  -  CATALYST::PLUGIN::I18N::MANUAL (3)

.ds Aq ’

NAME

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

CONTENTS

OUTLINE



    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 "Gaest"

    #. ($name)
    #: lib/MyApp.pm:54
    msgid "Welcome %1!"
    msgstr "Vaelkommen %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:

    Vaelkommen 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 "Vaelkommen till min hemsida %1!"

    $ perl script/myapp_server.pl

    # point your browser to http://localhost:3000/?name=Joe
    # output should render:

    Vaelkommen 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 "Vaelkommen till mitt staelle %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:

    Vaelkommen till mitt staelle Joe!



INTRODUCTION

INTERNATIONALIZATION

CONTENT NEGOTIATION

    Server-driven

    Agent-driven

LOCALIZATION

STAYING IN SYNC

TEMPLATE TOOLKIT

RESOURCES

    Documentation

Definitions
Internationalization and localization <http://en.wikipedia.org/wiki/Internationalization_and_localization>
Locale <http://en.wikipedia.org/wiki/Locale>
Byte Order Mark (BOM) <http://en.wikipedia.org/wiki/Byte_Order_Mark>
Character encoding <http://en.wikipedia.org/wiki/Character_encoding>
Collation <http://en.wikipedia.org/wiki/Collation>
Content Negotiation <http://en.wikipedia.org/wiki/Content_Negotiation>
Unicode <http://en.wikipedia.org/wiki/Unicode>
Guides
Guidelines, Checklists, and Resources <http://www.i18nguy.com/guidelines.html>
Localisation Guide <http://translate.sourceforge.net/wiki/guide/start>
Perl
Perl Locale handling <http://search.cpan.org/dist/perl/pod/perllocale.pod>
Perl Unicode introduction <http://search.cpan.org/dist/perl/pod/perluniintro.pod>
Perl Unicode support <http://search.cpan.org/dist/perl/pod/perlunicode.pod>
Unicode-processing issues in Perl and how to cope with it <http://www.ahinea.com/en/tech/perl-unicode-struggle.html>
Web Localization in Perl <http://search.cpan.org/dist/Locale-Maketext-Lexicon/docs/webl10n.html>
Localization and Perl: gettext breaks, Maketext fixes <http://search.cpan.org/dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod>
Lessons Learned with Perl and UTF-8 <http://www.justatheory.com/computers/programming/perl/utf8_trials.html>
UTF-8 and Perl (In Five Minutes) Slides from a talk given by Mark Fowler.

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

Perl Loves UTF-8 Slides from a talk given by Tom Insam.

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

Perl I18N Mailing List <http://lists.cpan.org/showlist.cgi?name=perl-i18n>
Perl Unicode Mailing List <http://lists.cpan.org/showlist.cgi?name=perl-unicode>
Portals
Google Directory - Computers > Software > Globalization <http://www.google.com/Top/Computers/Software/Globalization/>
Internationalization (I18N), Localization (L10N), Standards, and Amusements <http://www.i18nguy.com/>
Standards
RFC 2616 Hypertext Transfer Protocol — HTTP/1.1 <http://www.w3.org/Protocols/rfc2616/rfc2616.html>
Section 12: Content Negotiation <http://www.w3.org/Protocols/rfc2616/rfc2616-sec12.html#sec12>
Section 13: Caching in HTTP <http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13>
Section 13.6: Caching Negotiated Responses <http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.6>
RFC 3066 Tags for the Identification of Languages <http://www.faqs.org/rfcs/rfc3066.html>
Web
W3C Internationalization (I18N) Activity <http://www.w3.org/International/>
Authoring Techniques for XHTML & HTML Internationalization: Characters and Encodings 1.0 <http://www.w3.org/TR/i18n-html-tech-char/>
Authoring Techniques for XHTML & HTML Internationalization: Specifying the language of content 1.0 <http://www.w3.org/TR/i18n-html-tech-lang/>

    Locale Repositories

Common Locale Data Repository (CLDR) <http://www.unicode.org/cldr/>
International Components for Unicode (ICU) <http://www-306.ibm.com/software/globalization/icu/index.jsp>

    Modules

Character Encoding, Collation and Normalization
Encode <http://search.cpan.org/dist/Encode/>
Unicode::Collate <http://search.cpan.org/dist/Unicode-Collate/>
Unicode::Normalize <http://search.cpan.org/dist/Unicode-Normalize/>
Currency
Locale::Currency::Format <http://search.cpan.org/dist/Locale-Currency-Format/>
Math::Currency <http://search.cpan.org/dist/Math-Currency/>
Dates
DateTime <http://search.cpan.org/dist/DateTime/>
DateTime::Locale <http://search.cpan.org/dist/DateTime-Locale/>
DateTime::TimeZone <http://search.cpan.org/dist/DateTime-TimeZone/>
Language Tags, Identification and Negotiation
HTTP::Negotiate <http://search.cpan.org/dist/libwww-perl/lib/HTTP/Negotiate.pm>
I18N::AcceptLanguage <http://search.cpan.org/dist/I18N-AcceptLanguage/>
I18N::LangTags <http://search.cpan.org/dist/I18N-LangTags/>

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

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

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

Locale::Maketext::Lexicon <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>

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

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

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

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

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

    Tools

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

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

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

gtranslator Translation tool for Gnome. Supports gettext catalogs.

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

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

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

KBabel Translation tool for KDE. Supports gettext catalogs.

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

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

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

poEdit A cross-platform gettext catalogs editor.

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

AUTHOR

Christian Hansen ch@ngmedia.com

COPYRIGHT

This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 CATALYST::PLUGIN::I18N::MANUAL (3) 2009-07-30

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