某社で中国関係の業務を担当しているA氏に社長が声をかけた。
「今度、中国の工場に行く件でちょっと相談なんだが、せっかくだから現地の従業員に中国語であいさつしようと思ってね。忙しいところ悪いんだが、この日本語を中国語に翻訳して中国語の読みをカタカナで下に書いてくれないか」
A氏は、ピンインと声調を覚えて発音の練習しないとカタカナ読みでは通じないですよ、と出かかった言葉を飲み込み、「なるほど、現地の従業員も喜びますね。それでは一両日中に用意してお届けします」と返事をした。波風を立てない大人の対応である。
社長はA氏の肩をポンと叩き、じゃあよろしくと背を向ける。A氏は軽く会釈をして渡された原稿を広げ、面倒なことを頼まれたなと溜息をついた。
* * *
ということで、今回はこのA氏の手助けをしようと思う。翻訳については素晴らしい中国語訳が完成しているという前提で、その中国語をカタカナに変換する。使う道具はPinconvで、段取りとしては中国語→簡易ピンイン→カタカナの順に変換を行う。拼音→pin1yin1→ピンインというかたちだ。

中国語を簡易ピンインに変換するデータファイルは、Pinconvですでに実現されているため、簡易ピンインをカタカナにするための変換データを新たに作成する。
read more…
Pinconvのマイナーバージョンアップを行いました。ステータスバーをダブルクリックまたは右クリックして変換データファイルの切り替えが出来るようになったほか、いくつか不具合を修正しています。
Pinconvの紹介はこちらのエントリ、詳しい使い方についてはPinconvの使い方を参照下さい。窓の杜による紹介記事はこちらです。
修正点

- 変換データの切り替えをステータスバーから行えるように変更
- 変換データの新規作成が正常に実行できない不具合の修正
- 変換データのインポートが正常に実行できない不具合の修正
- 置換後のハイライトが正常に動作しない不具合を修正
文字列にルビを振るためのプラグインを新たに追加したPinconv 4.01を公開します。
ダウンロードとPinconvの詳しい説明は、こちらのエントリを参照下さい。
Ruby プラグイン

Rubyプラグインは、上の画像のように文字列にルビを振るためのプラグインです。たとえばカラオケ用のアンチョコを作ったり、音読練習用のプリントを作ったりする場合に利用すると便利だと思います。出力形式にHTMLを採用していますので、ブログなどに張り付けることもできます。
利用例: 簡体字中国語にピンインのルビを振る
以下、Rubyプラグインの利用例として往年の名曲にピンインのルビを振ってみます。いくつかステップを踏む必要がありますが、それほど手間がかかるわけではありませんのでお付き合いください。
read more…
Pinconvは、漢字をピンインに変換したり、簡体字を日本の漢字に変換したり、簡体字を繁体字に変換したりするツールです。たとえば中華圏の人物や会社、建物、地名などを日本に紹介する際は、簡体字や繁体字を日本の漢字に置き換える必要がありますが、1文字ずつ対応する漢字を確認していくのは大変な作業です。Pinconvを使えば、元の中国語のテキストを張り付けて変換ボタンを押すだけで、この大変な作業をあっという間に片付けることができます。
特徴
1. 複数パターンの高速一括変換
複数の変換パターンをまとめて処理するために内部処理を最適化していますので、簡体字からピンインへの変換や繁体字から簡体字への変換など、変換パターンが数千~数万組単位で登録されていても高速に処理を行うことができます。
また、文字単位ではなく単語単位で変換を行いますので[]、たとえば簡体字から繁体字への変換では「头发」は「頭髮」に、「发布」を「發布」に変換することができますし、システムに登録されていないデータがあってもユーザが簡単に編集することができます。
2. 翻訳作業をサポートする多彩な機能
Pinconvには中国語翻訳者である作者が日々の作業を効率化するために実装した機能が多数盛り込まれています。Pinconvの変換機能を利用し、原文と変換後の文字列を対訳表示するGhost、翻訳作業後に対訳表示の原文部分を削除し、訳文のみに整形した上で対訳データベースに原文と訳文を保存するVacuum、対訳データベースから類似文字列を検索し、Pinconvを翻訳メモリツール化するあいまい検索機能などは、翻訳効率の大幅な向上を約束します。
3. 多言語対応エディタ
Pinconvは、Unicodeに対応しています。そのため、中国語と日本語など複数の言語が混在していても問題なく表示することができます。
UndoやRedo、クリッカブルURL、タブによる複数ファイルの管理、強調表示、正規表現に対応した検索と置換といったエディタとしての基本的な機能を備え、行間や折り返し、文字色や背景色など細かい部分まで設定を行うことが可能です。
また、EUC-JPやシフトJIS、UTF-8やGB2312、BIG5など複数の文字コードでのファイルの読み書きにも対応しています。
4. 豊富な検索機能


オンライン中日辞書 北辞郎との連携機能を備えていますので、分からない単語があっても右クリックから簡単に意味を調べることができます。読みが分からない漢字を調べるための「部首画数検索」や選択した文字列をWEBサイトで検索する「Web検索」機能も調べ物を強力にサポートします。
5. プラグインで機能拡充
Pinconv4にはプラグイン機能が用意されており、インストール時には編集作業をサポートする5つのプラグインが同梱されています。
- 日本語校閲
Yahoo!デベロッパーネットワークの校正支援を利用して編集中のファイルの校正を行うことができます。
- あいまい検索
編集中のファイルや対訳データベースを対象にあいまい検索を行うことができます。Pinconvに翻訳メモリ的な機能を追加するものです。
- Grep
フォルダ内の全ファイルを対象に検索を行います。サブフォルダの検索や正規表現を利用した検索が可能です。
- 見出し一覧
指定した文字列から始まる行を一覧表示することができます。正規表現が利用できるほか、ブックマークした行だけを一覧表示することもできます。
- 文字数カウント
コメント行とそれ以外の行を分けて文字数をカウントしたり、カーソル行までの文字数、カーソル行以降の文字数などをカウントすることができます。
read more…
中国語のかっこと句点の組み合わせについて調査。文末にかっこを置く場合、句点をかっこの後に付けるのか、前に付けるのか、またその場合かっこの中に句点を置いて良いのか悪いのか、という点をはっきりさせたい。ふだん相手にしているドキュメントではみなさん割とテキトー(失礼)であるように思われるが、こういうのはどこかにルールがあるはずである。で、調べてみたらこれがなかなかに複雑だった。
まず「句内括号」と「句外括号」という2種類の括弧がある。どちらも同じ ( と ) だが、「句内括号」は「注释句子里某种词语的,括注紧贴在被注释词语之后 」ということで、注釈をつけたい言葉の直後にかっこを置く。一方、「句外括号」は「注释整个句子的,括注放在句末标点之后」、つまりその文全体について注釈をつける場合に用い、句点の後に置かれる。
これは国家技术监督局が1995年に発布した标点符号用法の定義である。「句外括号」の定義が少し分かりにくいが、単語の補足や注釈にかっこを使う場合(句内括号、日本のかっこと同様の使い方)、かっこの前に句点は置かないという理解で問題なさそうだ。
文全体について説明を加える「句外括号」が句点の後ろに置かれることは分かったが、実際に「句外括号」がどのように使われているのか今ひとつ分かりにくかったので、ネット上の各種解説文書から例文を拾ってきた。
read more…
中国語の各種変換機能を備えたPinconv 4.00のβ版を公開します。
ダウンロード
pinconv.zip
Screenshot

Pinconvの主な機能についてはこちらを参照下さい。
β版の新機能
新たにプラグインの仕組みが導入されました。インストール時には次の5つのプラグインが同梱されています。
- 文字カウント
- コメント行とそれ以外の行を分けて文字数をカウントしたり、カーソル行までの文字数、カーソル行以降の文字数などをカウントすることができます。
- grep
- フォルダ内の全ファイルを対象に検索を行います。サブフォルダの検索や正規表現を利用した検索が可能です。
- あいまい検索
- 編集中のファイルや対訳データベースを対象にあいまい検索を行うことができます。Pinconvに翻訳メモリ的な機能を追加するものです。
- 日本語校閲
- 見出し表示
- 指定した文字列から始まる行を一覧表示することができます。正規表現が利用できるほか、ブックマークした行だけを一覧表示することもできます。
注意事項
現在、Pinconv 4.00はβ版です。不具合が残っている可能性があるほか、作者の思いつきで仕様が変わることがありますのでご注意下さい。なお、現在のところPinconvは機能制限なく利用することができますが、将来的には一部機能をシェアウェア化する予定です。あらかじめご了承下さい。
ヘルプ
作りかけですがこちらに使い方の簡単な説明があります。
中国語にかかわる各種変換機能とオンライン辞書の編集検索機能を備えたPinconv 4.00(アルファ版)を公開します。
ダウンロード
pinconv.zip
Screenshot

Pinconvの主な機能
- 漢字の変換
- 簡体字中国語と日本語の漢字の相互変換
- 簡体字中国語と繁体字中国語の相互変換
- 簡体字中国語から発音記号(簡易ピンイン)への変換
- 簡易ピンインから声調記号付きのピンインへの変換
- 上記変換は対訳形式で出力することができ、処理結果をHTMLなどに変換することも可能です。
- オンライン辞書「北辞郎」の検索と編集
- 北辞郎APIを利用し、検索と編集を行うことができます。
- Unicode対応のエディタ
- WEB検索
- 選択した文字列をGoogleやwikipediaなどで手軽に検索することができます。
- 全画面表示
- 雑音をシャットアウトして物書きに集中したい時に便利な全画面表示機能を備えています。
- 正規表現に対応した検索と置換機能
- などなど
read more…
- edit
- a text widget with highlighting support for Tcl/Tk
NAME
edit (version 1.02 – 2010-01-21)
download: edit.zip
screenshot: demo1, demo2
REQUIREMENT
hashtrie 1.0
unicodeblock 1.1
SYNOPSIS
package require Tk
package require hashtrie 1.0
package require unicodeblock 1.1
package require edit ? 1.0 ?
edit pathName ? options ?
edit::addHighlightWord pathName word class
edit::deleteHighlightWord pathName word
edit::generateHighlightRule sourcefile rulefile
edit::addHighlightRgx pathName pattern tagname
edit::deleteHighlightRgx pathName pattern
edit::defineBrackets pathName brackets
edit::defineTextTag filename
edit::applyTextTags pathName tags
edit::linemapPopup X Y menu
edit::getAllMarkedIndex pathName startIndex endIndex
edit::getMarkedLine pathName index direction
pathName highlight startIndex endIndex
pathName copy
pathName cut
pathName paste
pathName append
pathName configure option value ? ... ?
pathName refresh
read more…
一括置換やLongest Common Prefix Searchなどを行うためのtrie風データ構造です。
今のところ、渡されるtrieの中身などはチェックしていません。そのうち直します。
拡張名:hashtrie
ダウンロード:hashtrie.zip
使い方は下記参照:
% package require hashtrie
1.0
% set trie [hashtrie::new]
{} {} 0 {}
% set trie [hashtrie::add $trie test テスト]
{t-0 1 e-1 2 s-2 3 t-3 4} {4 テスト} 4 {4 test}
% set trie [hashtrie::add $trie check チェック]
{t-0 1 e-1 2 s-2 3 t-3 4 c-0 5 h-5 6 e-6 7 c-7 8 k-8 9} {4 テスト 9 チェック} 9 {4 test 9 check}
% set d [dict create 今日 きょう 明日 あした 明後日 あさって]
今日 きょう 明日 あした 明後日 あさって
% set trie [hashtrie::import $trie $d]
{t-0 1 e-1 2 s-2 3 t-3 4 c-0 5 h-5 6 e-6 7 c-7 8 k-8 9 今-0 10 日-10 11 明-0 12 日-12 13 後-12 14 日-14 15} {4 テスト 9 チェック 11 きょう 13 あした 15 あさって} 15 {4 test 9 check 11 今日 13 明日 15 明後日}
% hashtrie::exists $trie 今日
1
% hashtrie::replace $trie "今日と明日はtestで忙しい。"
きょうとあしたはテストで忙しい。
% hashtrie::remove trie check
1
% puts $trie
{t-0 1 e-1 2 s-2 3 t-3 4 c-0 5 h-5 6 e-6 7 c-7 8 k-8 9 今-0 10 日-10 11 明-0 12 日-12 13 後-12 14 日-14 15} {4 テスト 11 きょう 13 あした 15 あさって} 15 {4 test 11 今日 13 明日 15 明後日}
read more…