Felix ソフトウェアとスクリプト

Felix ソフトウェアのほとんどの機能は、Visual Basic (VB)、Visual Basic for Applications (VBA)、他の COM 対応プログラミング言語 (C++ など) のスクリプトを使用して記述することができます。そのため、Felix は非常に柔軟で強力なツールになっています。独自のカスタム スクリプトを開発すれば、さまざまなタスク(文書の前処理など)を自動的に実行することができます。

実際、Felix ソフトウェアに付属しいる Microsoft Word マクロと Microsoft Excel マクロは、VB や VBA などのスクリプトを利用して、すべての処理を実行しています。これらのスクリプトをユーザー独自の目的に応じてカスタマイズしたり、新しいスクリプトを書いたりすることができます。さらに、Felix の機能を利用する他の VB スクリプトやアプリケーションを開発することも可能です。

たとえば、Felix ソフトウェアに付属の TagAssist アプリケーション(HTML や XML などのタグ付きファイルを編集するツール)では、オートメーション関数を通じて Felix の機能を利用し、さまざまな編集タスクを実行しています。

1. オートメーション関数の仕様

プロパティ:

名前 読取り 書込み 説明
CorrectedTranslation String Yes Yes 現在表示されている訳文を取得または訂正します。
GlossaryLocation String Yes Yes メイン グロサリ(Main Glossary)ファイルの名前を取得または設定します。
GlossarySize Long Yes No メイン グロサリ(Main Glossary)ファイルのサイズを取得します。
IsVisible Boolean Yes Yes 翻訳メモリ ウィンドウの表示/非表示の状態を調べます(読み取り時)。
MemoryLocation String Yes Yes 翻訳メモリのファイル名を取得または設定します。
MemorySize Long Yes No 翻訳メモリのサイズを取得します。
NumGlossaryMatches Integer Yes No メイン グロサリ(Main Glossary)ファイル内での一致の件数を取得します。
NumMatches Long Yes No 翻訳メモリ内での一致の件数を取得します。
Query String Yes Yes 翻訳メモリ内で検索する分節(照会= クエリー)を取得または設定します。クエリーを設定ると、翻訳メモリ ウィンドウの「照会」フィールドの分節が翻訳メモリ内で検索され、(あいまい) 一致した原文/訳文ペアが翻訳メモリ ウィンドウに表示されます。 また、「照会」フィールドの分節に含まれる単語やフレーズがグロサリ内で検索され、一致したグロサリ エントリがグロサリ ウィンドウに表示されます。
RegistryValue String Yes Yes

レジストリ内の値を取得または設定します。Felix の関数を通じてレジストリを操作することは、ユーザー自身がレジストリを直接操作することと比較して、次のような利点があります。

  1. ほとんどのマクロ言語やスクリプト言語には、レジストリ値を設定する機能が備わっていないか、非常に限られた機能しかありません。
  2. Felix をアンインストールした場合、Felix を通じて設定されたレジストリ値は自動的に削除されます。 ユーザー自身が直接設定したレジストリ値は削除されません。

RegistryValue 関数を呼び出すときは、2つの文字列引数(アプリケーション名とキー)を指定します。
例:
MemoryLocation = oFelix.RegistryValue( "Word", "CurrentProjectMemory" )
oFelix.RegistryValue( "Word", "SourceWordCount" )

"1345" < /P > < /P > < /P > < /P > < /P > < /P > < /P > < /P > < /P > < /P >

Score Double Yes No 現在表示されているエントリの一致率(%)を取得します。
Translation String Yes Yes 現在のクエリー(照会フィールド)に対応する訳文を取得または設定します。訳文を設定すると、新しい翻訳エントリが作成されて、翻訳メモリに追加されます(または翻訳メモリ内の既存のエントリが置換されます)。 新しい翻訳エントリでは、クエリー(照会フィールド)が原文として使用され、翻訳者が入力した内容が訳文として使用されます。
TranslationForReview String Yes Yes 翻訳メモリ内で訳文を検索するか、現在の訳文を取り出します。

メソッド:

メソッド名 パラメータ リターン値 操作の説明
AddEntryToGlossary String Source, String Translation, String Context None グロサリ エントリをグロサリ ファイルに追加します。
AddGlossaryEntry String Translation None グロサリ エントリをグロサリ ファイルに追加します。翻訳メモリ ウィンドウに現在表示されている検索対象分節(「照会」フィールド)がグロサリ エントリの原文になります。
AddMemoryEntry String Source, String Translation None 翻訳エントリを翻訳メモリに追加します。
ClearGlossary None None メイン グロサリ ウィンドウをクリアします。
ClearMemory None None 翻訳メモリ ウィンドウをクリアします。
Concordance String Query None 翻訳メモリの「原文」フィールドに対してコンコーダンス(一致)検索を実行します。
DeleteTranslation None None 翻訳メモリ ウィンドウに現在表示されている翻訳エントリを削除します。
EditCurrentMemory None None 翻訳メモリ ウィンドウに現在表示されてい翻訳エントリを編集します。[エントリの編集] ダイアログが表示されます。
GlossMatch Integer Index String 位置 Index にあるグロサリ エントリをメイン グロサリ(Main Glossary)から取り出します。
NextTranslation None None 次の訳文候補を表示します。
PrevTranslation None None 前の訳文候補を表示します。
Quit None None Felix を終了します。
QuitSilently None None 確認用のダイアログ ボックス(翻訳メモリへの変更を保存するように指示するダイアログなど)を表示しないで、Felix を終了します。
Save None None 翻訳メモリとメイン グロサリを保存します。
ScoreAtIndex Integer Index Double 索引番号が Index であるエントリのスコアを取得します。
TranslationAtIndex Integer Index String 索引番号が Index であるエントリの訳文を取得します。
TranslationConcordance String Query None 翻訳メモリの「訳文」フィールドに対してコンコーダンス(一致)検索を実行します。

2. コードの例

VBA/Visual Basic

グロサリと翻訳メモリのクリア

    ' You could also add the type library to the references and declare
' Dim assistant As New FelixLib.App
Dim assistant As Object
Set assistant = CreateObject("Felix.App")
assistant.ClearGlossary
assistant.ClearMemory

C++

クエリー(照会)と訳文の設定

#include <string> // for wstring 

// put this in your path or use the absolute path 
#import "Felix.tlb" no_auto_exclude, raw_interfaces_only 

// Note: obviously, these functions could live in a C++ object, which would eliminate the need to call
// CoCreateInstance every time. This is the approach that TagAssist uses. However, the sample has been
// condensed into two functions for brevity.



// set the current query
inline void set_query(  const std::wstring &query )  
{ 
	CComPtr<  FelixLib::IApp > app ; 
	// error handling omitted for brevity 
	app.CoCreateInstance( L"Felix.App", NULL, CLSCTX_LOCAL_SERVER|CLSCTX_INPROC_SERVER ) ; 
	
	// make it visible 
	app->put_IsVisible( VARIANT_TRUE ) ; 

	// put the query 
	// Felix will respond by showing a list of any matches 
	CComBSTR bQuery( query.c_str() ); 
	app->put_Query( bQuery ) ;
} 

// set the translation for the current query
inline void set_trans( const std::wstring  &trans )
{ 
	CComPtr<  FelixLib::IApp > app ; 
	// error handling omitted for brevity 
	app.CoCreateInstance( L"Felix.App", NULL, CLSCTX_LOCAL_SERVER|CLSCTX_INPROC_SERVER ) ; 

	// make it visible 
	app->put_IsVisible( VARIANT_TRUE ) ; 

	// put the translation 
	// If there is a current query, this will create a new entry, with the query as the
	// source and the trans as the translation.
	CComBSTR bTrans( trans.c_str() ) ;
	app->put_Translation( bTrans ) ;
}