Changeset 13169 for lang/python

Show
Ignore:
Timestamp:
06/04/08 02:05:03 (6 months ago)
Author:
ayu
Message:
  • implemented internationalization.
Location:
lang/python/tektekblogsrc
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • lang/python/tektekblogsrc/static/tektekblog.css

    r12461 r13169  
    252252        border : 1px dashed #D7C3C3; 
    253253} 
     254 
     255.subtitle{  
     256           font-size: 12px; 
     257           color: white; 
     258} 
  • lang/python/tektekblogsrc/tektekblog/feeds.py

    r12461 r13169  
    1313 
    1414    def items(self): 
    15         return Entry.objects.order_by('-posted') 
     15        return Entry.objects.filter(lang="ja").order_by('-posted') 
    1616    def item_link(self, entry): 
    1717        return "http://www.tektek.in/d/blog/%d/" % entry.id 
     18 
     19class LatestEntriesEn(LatestEntries): 
     20    def items(self): 
     21        return Entry.objects.filter(lang="en").order_by('-posted') 
  • lang/python/tektekblogsrc/tektekblog/models.py

    r12461 r13169  
    1717    updated = models.DateTimeField(auto_now=True) 
    1818    tags = models.ManyToManyField(Tag, blank=True) 
     19    lang = models.CharField(maxlength=2, db_index=True, choices=(("ja", u"日本語"), ("en", u"英語"))) 
    1920    def __str__(self): 
    2021        return self.title.encode("utf-8")  #最後のencodeを付けないと、Adminでエラーになるんだよ!! 
     
    2829    class Meta: 
    2930        ordering = ("-posted", ) 
     31 
     32""" 
     33class PluginType(models.Model): 
     34    name = models.CharField(maxlength=100) 
     35    def __str__(self): 
     36        return self.name 
     37 
     38class Plugin(models.Model): 
     39    plugintype = models.ManyToManyField(PluginType) 
     40    disporder = models.IntegerField(help_text=u"表示順を0から始まる整数で指定します。") 
     41    dispgroup = models.CharField(maxlength=20, help_text=u"表示箇所を特定する文字列を英数で指定します。") 
     42 
     43    def __str__(self):         
     44        return self.plugintype.name 
     45 
     46class TextPlugin(models.Model): 
     47    title = models.CharField(maxlength=255) 
     48    content = models.TextField() 
     49    plugin = models.ForeignKey(Plugin) 
     50    def __str__(self): 
     51        return self.title 
     52 
     53""" 
  • lang/python/tektekblogsrc/tektekblog/templates/tektekblog/base.html

    r12461 r13169  
    11<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
     2{% load i18n %}{% get_available_languages as LANGUAGES %}{% get_current_language as LANGUAGE_CODE %} 
    23<!-- 
    34Design by Free CSS Templates 
     
    1819<meta name="description" content="" /> 
    1920<link href="/d/static/tektekblog.css" rel="stylesheet" type="text/css" media="screen" /> 
    20 <link rel="alternate" type="application/rss+xml" title="TekTekBlog" href="/d/blog/feeds/latest/" /> 
    21  
     21<link rel="alternate" type="application/rss+xml" title="TekTekBlog" href="/d/blog/feeds/latest_{{ LANGUAGE_CODE }}/" /> 
    2222<!--Hatena Star--> 
    2323<script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script> 
     
    4343        <div id="logo"> 
    4444                <h1><a href="{% url top %}">TekTekBlog</a></h1> 
    45                 <p><a href="http://www.freecsstemplates.org/">by Hiroshi Ayukawa</a></p> 
     45                <p class="subtitle">by Hiroshi Ayukawa</p> 
     46                <p class="subtitle">{% ifequal LANGUAGE_CODE "ja" %}日本語版{% endifequal %} <a href="/d/tk/i18n/setlang/?language={% ifequal LANGUAGE_CODE "ja" %}en{% else %}ja{% endifequal %}">{% ifequal LANGUAGE_CODE "ja" %}[English]{% else %}[Japanese]{% endifequal %}</a></p> 
    4647        </div> 
    4748        <div id="menu"> 
     
    7273        <!-- start sidebar --> 
    7374        <div id="sidebar"> 
    74             <div style="text-align: right"><a href="http://b.hatena.ne.jp/entry/{{ absolute_url }}"><img src="/d/static/b_entry.gif" width="16" height="12" style="border: none;" alt="このエントリーを含むはてなブックマーク" title="このエントリーを含むはてなブックマーク" /></a> <a href="http://b.hatena.ne.jp/entry/{{ absolute_url }}"><img src="http://b.hatena.ne.jp/entry/image/{{ absolute_url }}" border="0"></a> <a href="/d/blog/feeds/latest/"><img src="/d/static/rss_green.gif" width="15" height="15" border="0" alt="rss2.0"/></a></div> 
     75            <div style="text-align: right"><a href="http://b.hatena.ne.jp/entry/{{ absolute_url }}"><img src="/d/static/b_entry.gif" width="16" height="12" style="border: none;" alt="このエントリーを含むはてなブックマーク" title="このエントリーを含むはてなブックマーク" /></a> <a href="http://b.hatena.ne.jp/entry/{{ absolute_url }}"><img src="http://b.hatena.ne.jp/entry/image/{{ absolute_url }}" border="0"></a> <a href="/d/blog/feeds/latest_{{ LANGUAGE_CODE }}/"><img src="/d/static/rss_green.gif" width="15" height="15" border="0" alt="rss2.0"/></a></div> 
    7576                <ul> 
    7677                        <li> 
  • lang/python/tektekblogsrc/tektekblog/urls.py

    r12462 r13169  
    77 
    88from tektekblog.models import Entry, Tag 
    9 from tektekblog.feeds import LatestEntries 
     9from tektekblog.feeds import LatestEntries, LatestEntriesEn 
    1010 
    1111#以下二つの変数をsettings.pyで指定しておいてください。 
     
    1717 
    1818feeds = { 
    19     'latest': LatestEntries, 
     19    'latest_ja': LatestEntries, 
     20    'latest_en': LatestEntriesEn, 
    2021} 
    2122 
     
    2627    "", 
    2728    #TOPページ 
    28     url("^$", "django.views.generic.list_detail.object_list",  
    29      dict(queryset=Entry.objects.all(),  
    30           paginate_by=10, 
    31           template_object_name="entry", 
    32           template_name="tektekblog/index.html",  
    33           extra_context=commoninfo,), 
     29    url("^$", "worldproj.tektekblog.views.top",  
    3430        name="top"), 
    3531     
    3632    #各エントリーページ 
    3733    url("^(?P<object_id>[0-9]+)/$", "django.views.generic.list_detail.object_detail", 
    38      dict(queryset=Entry.objects, template_object_name="entry", extra_context=commoninfo), 
     34     dict(queryset=Entry.objects, template_object_name="entry", extra_context=dict(commoninfo.items()+[("detailpage", True)])), 
    3935     name="detail"), 
    4036 
     
    4642        {'feed_dict': feeds}, name="rss"), 
    4743    ) 
     44 
  • lang/python/tektekblogsrc/tektekblog/views.py

    r12461 r13169  
    55from tektekblog.urls import commoninfo 
    66 
     7def get_lang(request): 
     8    if request.LANGUAGE_CODE[:2] == "ja": 
     9        return "ja" 
     10    return "en" 
     11 
     12def top(request): 
     13    return object_list( 
     14        request,  
     15        queryset=Entry.objects.filter(lang=get_lang(request)).order_by("-posted"),  
     16        paginate_by=10, 
     17        template_object_name="entry", 
     18        template_name="tektekblog/index.html",  
     19        extra_context=commoninfo) 
     20         
    721def tagpage(request, tid): 
    822    return object_list( 
    9         request, Entry.objects.filter(tags__id=int(tid)).order_by("-posted"),  
     23        request,  
     24        Entry.objects.filter(tags__id=int(tid)).filter(lang=get_lang(request)).order_by("-posted"),  
    1025        paginate_by=10, 
    1126        template_name="tektekblog/index.html",