[Top]
このページは、たわいのない日々のウワゴトを綴るページです。
なんてツマラナソウナページなんだ(笑)
一応、内容毎にタイトルの色を変えています。
緑色はlinuxに関する話題、
黄色はコンピュータゲームに関する話題、
水色はその他の話題になっています。
なお、スタイルシートに対応していないブラウザでは、
色は変わりませんのであしからず。
とりあえず、こんな対処をしてみた。
# -*-encoding: utf-8 -*- from config import * import gettext gettext.install(PACKAGE, LOCALEDIR) import pygtk pygtk.require("2.0") import gtk import gobject import xml.parsers.expat class BuilderTranslationParser: def __init__(self): self.parser = xml.parsers.expat.ParserCreate() self.parser.XmlDeclHandler = self.xml_decl self.parser.StartElementHandler = self.start_element self.parser.EndElementHandler = self.end_element self.parser.CharacterDataHandler = self.character_data self.translating = False self.translation_text = "" self.context = "" def parse(self, file): self.parser.ParseFile(file) return self.context def put_through_tag(self, context): pos = context.find(">") if pos >= 0: self.context += context[:pos + 1] else: self.context += context def xml_decl(self, version, encoding, standalone): self.put_through_tag(self.parser.GetInputContext()) def start_element(self, name, attrs): self.put_through_tag(self.parser.GetInputContext()) if name == "property" and "translatable" in attrs and attrs["translatable"] == "yes": self.translation_text = "" self.translating = True def end_element(self, name): if name == "property" and self.translating: print("translation_text = \"%s\"." % self.translation_text) self.context += _(self.translation_text) self.translation_text = "" self.translating = False self.put_through_tag(self.parser.GetInputContext()) def character_data(self, data): if self.translating: self.translation_text += data else: self.context += data class MyApp: def __init__(self): self.builder = gtk.Builder() self.builder.set_translation_domain(PACKAGE) #self.builder.add_from_file(PKGDATADIR + "/gettext01.glade") parser = BuilderTranslationParser() file = open(PKGDATADIR + "/gettext01.glade", "r") context = parser.parse(file) file.close() self.builder.add_from_string(context) self.window = self.builder.get_object("window1") self.window.connect("destroy", gtk.main_quit) self.window.show() if __name__ == "__main__": app = MyApp() print(_("button")) gtk.main()
XMLパーサのCharacterDataHandlerに渡されるテキストデータは、特殊文字が&xxx;から元に戻されているので、変換し直してやらないとラベルに「<」などの文字が含まれているとちゃんと動かないな。
まぁ、適当に直して使ってください(笑)
This document was generated by KKDiary system (v0.3).
last modified: %LASTMODIFIED%.
[Top]