i18n.py :  » Web-Frameworks » Nevow » Nevow-0.10.0 » examples » i18n » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Web Frameworks » Nevow 
Nevow » Nevow 0.10.0 » examples » i18n » i18n.py
import os

from twisted.python import util

from nevow import inevow,loaders,rend,tags
from nevow.i18n import _,I18NConfig


LOCALE_DIR = util.sibpath(__file__, 'locale')


langs = [d for d in os.listdir(LOCALE_DIR) if d != '.svn']
langs.sort()

class Common(rend.Page):
    
    addSlash = True
    
    def renderHTTP(self, ctx):
        
        # We're only overriding renderHTTP to look for a 'lang' query parameter
        # without cluttering up the messages renderer, below.
        
        # If 'lang' is present then we "force" the translation language. This
        # simulates how user preferences from the session might be used to
        # override the browser's language settings.
        lang = ctx.arg('lang')
        if lang is not None:
            ctx.remember([lang], inevow.ILanguages)
            
        # Let the base class handle it, really.
        return rend.Page.renderHTTP(self, ctx)

    def render_langs(self, ctx, data):
        """Render a list of links to select from the available translations.
        """
        out = [T.a(href=url.here.remove('lang'))['default'], ' | ']
        for lang in langs:
            out.append(T.a(href=url.here.replace('lang', lang))[lang])
            out.append(' | ')
        return out[:-1]

class Page(Common):
    def render_message(self, ctx, data):
        """Render a localised message. The _(..) construct looks the
        translation up at render time.
        """
        return ctx.tag.clear()[_('Hello')]

    def render_formatstrings(self, ctx, data):
        return ctx.tag.clear()[
            "Demonstration of i18n'ed string formatting: ",
            _("%(first)d plus %(second)c equals %(result)c, or %(roman)s in roman numbers")
            % { 'first': 1,
                'second': '1',
                'result': 50,
                'roman': 'II',
                },
            ]

    docFactory = loaders.stan(
        T.html[
            T.body[
                T.p['Select your preferred language: ', T.directive('langs')],
                T.p[render_message],
                T.p[render_formatstrings],
                ],
            ],
        )

def preparePage(pageFactory):
    root = pageFactory()
    # Configure the I18N stuff
    root.remember(I18NConfig(domain='test', localeDir=LOCALE_DIR), inevow.II18NConfig)
    return root

def createResource():
    return preparePage(Page)
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.