image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« 2007年7月7日 | トップページ | 2007年7月9日 »

2007年7月8日

2007-07-08

xfy/xvcd の言語リソース編集ツールが欲しい (その2)

すこし、つくってみた。
 * 管理ファイルの例
 * 管理ファイル-> xfy の resource ファイル変換
 * 編集 xvcd の試作
を以下に示そう。
編集画面はいまのところこんな感じ。
1_1

管理ファイルの例 (res.xml)
--------------------------------

<?xml version="1.0"?>

<?com.xfy vocabulary-connection href="resedit.xvcd" ?>
<r:categories xmlns:r="http://xmlns.example.com/developer/tutorial/resedit">
    <r:category name="label">
        <r:item id="add">
            <r:message lang="ja">追加</r:message>
            <r:message lang="en">Add</r:message>
        </r:item>
        <r:item id="del">
            <r:message lang="ja">削除</r:message>
            <r:message lang="en">Del</r:message>
        </r:item>
    </r:category>
    <r:category name="message">
        <r:item id="err-001">
            <r:message lang="ja">エラー</r:message>
            <r:message lang="en">Error</r:message>
        </r:item>
    </r:category>
</r:categories>

管理ファイル->resource ファイル変換 (res2langs.rb)
-----------------------------------------------------------------

# usage: $ ruby res2langs.rb res.xml
#        output em/*.resource, ja/*.resource

require 'rubygems'
require 'builder'
require 'xmlsimple'
require 'pp'

def generate(doc)
  res = Hash.new
  doc['category'].each {|c|
   res[c['name']] = generateByCategory(c)
  }
  return res
end

def getLangs(cat)
  langs = Array.new
  cat['item'].each { |item|
    item['message'].each { |m|
      langs << m['lang']
    }
  }
  langs.uniq!
  return langs
end

def generateByCategory(cat)
  xmls = Hash.new
  langs = getLangs(cat)
  langs.each {|lang|
    xmls[lang] = generateByLang(cat, lang)
  }
  return xmls
end

def generateByLang(cat, lang)
  str = ""
  xm = Builder::XmlMarkup.new(:indent=>2, :target=>str)
  xm.instruct!
  xm.tag!('resource:resources', 'xmlns:resource'=>'http://xmlns.xfy.com/resource') {
    cat['item'].each { |item|
      item['message'].each { |m|
        if m['lang'] == lang
          xm.tag!('resource:string-resource', {'name'=>item['id']}, m['content'])
        end
      }
    }
  }
  return str
end

#==========================================
doc = XmlSimple.xml_in File.open(ARGV[0])
xmls = generate(doc)

xmls.each {|cat,v|
  v.each {|lang, x|
    Dir::mkdir(lang) if !FileTest.exist?(lang)
    File::open("#{lang}/#{cat}.resource", "w") { |f|
      f.write x
    }
  }
}

# <?xml version="1.0" encoding="UTF-8"?>
# <categories>
#   <category name="label">
#     <item id ="add">
#       <message lang="ja">add-japanese</message>
#       <message lang="en">add-english &amp;</message>
#     </item>
#     <item id ="del">
#       <message lang="ja">del-japanese</message>
#       <message lang="en">del-english</message>
#     </item>
#   </category>
# </categories>
#
# ==>
# ----------- ja/label.resource --------
# <?xml version="1.0" encoding="UTF-8"?>
# <resource:resources xmlns:resource="http://xmlns.xfy.com/resource">
#   <resource:string-resource name="add">add-japanese</resource:string-resource>
#   <resource:string-resource name="del">del-japanese</resource:string-resource>
# </resource:resources>
# ----------- en/label.resource --------
# <?xml version="1.0" encoding="UTF-8"?>
# <resource:resources xmlns:resource="http://xmlns.xfy.com/resource">
#   <resource:string-resource name="add">add-english &amp;</resource:string-resource>
#   <resource:string-resource name="del">del-english</resource:string-resource>
# </resource:resources>

編集 xvcd の試作 (resedit.xvcd)
-----------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!--
  2007-07-08 katoy
  xfy/xvcd の リソースファイルの編集
-->
<!--
TODO: Category 追加,削除
       ID 追加,削除, 順序変更
       Message 追加,削除, 順序変更, 言語別表示 on/off
       *.resource の import, export
       翻訳サービスとの連動
       複数行データの扱い
-->

<xvcd:xvcd xmlns="http://www.w3.org/1999/xhtml"
  xmlns:r="http://xmlns.example.com/developer/tutorial/resedit"
  xmlns:command="http://xmlns.xfy.com/command"
  xmlns:ctrl="http://xmlns.xfy.com/controls"
  xmlns:dtf="http://xmlns.xfy.com/data-transfer"
  xmlns:event="http://xmlns.xfy.com/event"
  xmlns:function="http://xmlns.xfy.com/function"
  xmlns:instruction="http://xmlns.xfy.com/instruction"
  xmlns:ui="http://xmlns.xfy.com/ui"
  xmlns:tab="http://xmlns.xfy.com/tab"
  xmlns:xvcd="http://xmlns.xfy.com/xvcd" version="1.0">

  <xvcd:vocabulary name="ResourcesEdit" match="r:categories"
    call-template="root" />

  <!-- ================= TEMPATE =============== -->
  <xvcd:template name="root">
    <tab:tabs>
      <xvcd:for-each select="r:category">
        <tab:tab title="{@name}">
          <xvcd:apply-templates select="."/>
        </tab:tab>
      </xvcd:for-each>
    </tab:tabs>
  </xvcd:template>

  <xvcd:template match="r:category">
    <html>
      <head>
        <!-- See http://icant.co.uk/csstablegallery/index.php?css=0#r0 -->
        <link rel="stylesheet" href="./plainold.css" type="text/css" />
      </head>
      <body>
        HEAD 
        <a href="#tail">TAIL</a>
        <table>
          <thead>
            <tr class="odd">
              <th>No.</th>
              <th>ID</th>
              <th width="100%">Message</th>
            </tr>
          </thead>
          <tbody>
            <xvcd:apply-templates select="r:item" />
          </tbody>
        </table>
        <a name="tail" />
        <a href="#head">HEAD</a>
         TAIL
      </body>
    </html>
  </xvcd:template>

  <xvcd:template match="r:category/r:item">
    <!-- 行の背景色を交互に変更させる -->
    <tr class="{function:if((position() mod 2 = 1), 'odd', '')}">
      <td align="right">
        <xvcd:value-of select="position()" />
      </td>
      <td nowrap="">
        <xvcd:text-of select="@id" />
      </td>
      <td>
        <xvcd:apply-templates select="r:message" />
      </td>
    </tr>
  </xvcd:template>

  <xvcd:template match="r:message">
    <table border="0">
      <tr border="0">
        <td width="20">
          <xvcd:text-of select="@lang" filler="" />
        </td>
        <td width="100%">
          [<xvcd:text-of select="text()" />]
        </td>
      </tr>
    </table>
  </xvcd:template>
</xvcd:xvcd>

ブックフェアには google が出展していた

ブックフェアには google が出展していた。
中身検索について説明していた。
- http://journal.mycom.co.jp/news/2007/07/06/041/index.html
> > Google、ブックフェアで「Google ブック検索」のデモ実施 | ネット | マイコミジャーナル

20%引きやそれ以上の値引きで購入できるものが多いのが嬉しい。
今年はちょっと活気が無かったきがする。開場が変わったせいか?
バーゲンコーナーも少し小さくなっているような気がする。
ヒッチコックについての本(日本語) があったので、それを買った。(1500円)

ロバート・A・ハインライン。1907年7月7日生まれとのことを知った。

« 2007年7月7日 | トップページ | 2007年7月9日 »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク