メインコンテンツに移動
ホーム マニュアルステーション

Main navigation

  • ライティング
  • 編集
  • 翻訳

アカウント2

  • ログイン
  • 会員登録
  1. ホーム
  2. 翻訳の記事一覧
  3. 無償のツールだけでTradosの翻訳メモリをExcelに書き出す方法

無償のツールだけでTradosの翻訳メモリをExcelに書き出す方法

2017.8.22
翻訳
ピックアップ
翻訳メモリ
sdltm
Excel
正規表現
無償
シェア
ツイート このエントリーをはてなブックマークに追加
お気に入り2
印刷する
Excelイメージ

Tradosの翻訳メモリにある原文と訳文のペアを、Excelに持っていきたいと思ったことはありませんか?たとえば、原文や訳文などでソートしてメモリのメンテナンスに役立てたり、別の用途に利用したりしたいときなどです。

もしTradosに加えてMemsourceもお使いでしたら、Memsourceを使ってExcelに持っていくことができますし、Apsic Xbenchというツールを使うことでもExcelに持っていくことができます。

しかしここでは、そうした有料のツールを使わなくても、無償のツールだけでTradosの翻訳メモリをExcelに持っていく方法をご紹介します。

Tradosすら必要ありませんので「Tradosは持ってないけど、翻訳会社から納められた翻訳メモリの中身を見たい!」という方にも役立つテクニックです。

ここでは、Trados Studioの翻訳メモリであるsdltmファイルを対象に解説します。皆さんが、実際にこのようなやり方をすることはないとしても、翻訳メモリの内部構造を知ることもできますので、ご興味があればお読みください。

SQLiteを操作できるツールで翻訳メモリをCSVファイルにエクスポートする

sdltmファイルはSQLite形式で作成されているようで、SQLiteを操作できるツールであれば、中身を閲覧するなどの操作を行うことができます。

ここでは、SQLiteのデータベースを管理できるフリーソフトである「DB Browser for SQLite」を使うことにします。ネットで検索すればすぐにイントーラーが手に入りますので、まずはイントールしてください。

インストールしたら、これを起動し、以下の手順でsdltmファイルから、原文や訳文などのデータ部分をCSVファイルにエクスポートします。なお、下記の画面および操作はDB Browser for SQLiteのVersion 3.9.1のものです。

 

作業する際には、オリジナルのsdltmファイルを直接操作することは避けてください。万が一オリジナルを壊してしまうことのないよう、必ずコピーしたファイルをお使いください。

  1. DB Browser for SQLiteで[Open Database]ボタンを押します。

    Open Databaseボタン

  2. ファイルを選択するダイアログが現れますが、このままではsdltmファイルが表示されませんので、[All files (*)]を選択します。

    sdltmファイルの選択

  3. 対象のsdltmファイルを選択し、[開く]ボタンを押します。

    sdltmファイルを開く

  4. Tablesの下にあるtranslation_unitsを選択して、[Modify Table]ボタンを押します。このtranslation_unitsというテーブルに、原文と訳文、登録・更新した日やユーザー名などが格納されています。

    Modify Tableボタン

  5. Fieldsからguidを選択し、[Remove field]ボタンを押します。guidフィールドはバイナリデータが格納されていて、内容を見る上では要らないばかりか、この後CSVを処理することを難しくするので削除します。

    guidフィールドの削除

  6. 削除していいか確認するメッセージが現れますので、[Yes]ボタンを押します。

    guidフィールドの削除確認

  7. [OK]ボタンを押して、「Edit table definition」ウィンドウを閉じます。

    Edit table definitionウィンドウを閉じる

  8. [File]メニューの[Export]から[Table(s) as CSV file]を選択します。

    Table(s) as CSV fileの選択

  9. attributesテーブルが選択されているので、これを選択してハイライトを消します。これをやらないと、attributesテーブルがエクスポートされてしまい、余分なファイル「attributes.csv」ができますが、あっても問題はありません。

    attributesテーブルの選択解除

  10. スクロールして、エクスポートする対象であるtranslation_unitsを選択します。

    translation_unitsテーブルの選択

  11. 「Field separator」を「Tab」に変更して、[OK]ボタンを押します。「Field separator」のデフォルトはカンマで、それでも処理はできますが、タブにしておいたほうが、後ほどExcelに持っていきやすくなります。したがって正確に言うとCSVファイルではないのですが、ここではそう呼ぶことにします。

    Field separatorをTabに変更

  12. エクスポート先を選んで、必要があればファイル名を変更し、[保存]ボタンを押します。

    エクスポートデータの保存

  13. エクスポートの完了を知らせるメッセージが現れたら、[OK]ボタンを押します。

    エクスポートの完了

  14. ウィンドウの[×]ボタンなどでDB Browser for SQLiteを終了させます。その際データベースを保存するかどうか訊かれますので、[No]ボタンを押します。前述したように、オリジナルのsdltmではなく、そのコピーを開いている場合には、そのコピーは不要になりますので、[Yes]ボタンを押しても問題はありません。

    DB Browser for SQLiteの終了

これでsdltmファイルから、原文や訳文などのデータ部分をCSVファイルにエクスポートすることができました。

テキストエディタでCSVファイルを加工する

エクスポートしたCSVファイルには翻訳メモリ特有のタグが含まれており、これらを削除したり変換したりしないと原文や訳文が大変読みにくい状態にあります。そこでExcelに持っていく前に、テキストエディタで以下の処理を行います。

タグの削除
原文や訳文のフィールドには、以下のような翻訳メモリ特有のタグが含まれています。これらは文章を見るのに邪魔になるので削除します。
  • <Segment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  • <TagID>bold</TagID>
  • <CultureName>en-US</CultureName>
特殊文字の置換
原文や訳文内には、「°」や「Ö」などの特殊文字が、以下のような独自のタグで表現されていることがあります。このままでは読みにくいので、これらを実際の文字に置換します。
  • <TextEquivalent>deg</TextEquivalent>(「°」を表す)
  • <TextEquivalent>Ouml</TextEquivalent>(「Ö」を表す)
  • <TextEquivalent>copy</TextEquivalent>(「©」を表す)

ここではテキストエディタとして「サクラエディタ」を使いますが、同じことができるのであれば、他のテキストエディタをお使いになっても構いません。ネットで検索していただければ、すぐに見つかりますので、ダウンロードしてインストールしてください。なお、下記の画面や操作はサクラエディタのVersion 2.2.0.1のものです。

  1. サクラエディタを起動し、[開く]ボタンを押します。

    サクラエディタの開くボタン

  2. エクスポートしたCSVファイルを選択し、[開く]ボタンを押します。

    CSVファイルの選択

  3. 文章の右端が切れて見にくい場合には、[設定]メニューの[折り返し方法]から[右端で折り返す]を選択します。

    右端で折り返す

  4. [置換]ボタンを押します。

    置換ボタン

  5. まずタグの削除をしていきましょう。基本的には「置換前」に削除したいタグを入力し、「置換後」には何も入れず、その他のオプションを下図のように設定して、[すべて置換]ボタンを押していきます。

    すべて置換

    「置換前」に入力する文字列は、効率良く削除するために正規表現を使用します。たとえば上図で示した「置換前」の文字列「</?Segment[^>]*>」という正規表現は、以下いずれの文字列にも、すなわちSegment要素の属性がどのような記述であっても、また開始タグでも終了タグでもマッチすることになります。

    <Segment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    </Segment>

    「/?」というのは、「/」が0文字か1文字という意味ですので、これによって<Segment>にも</Segment>にもマッチします。「[^>]*」というのは「>」以外の文字が0文字以上という意味ですので、これによって属性があってもなくても、また属性に何がきてもマッチすることになります。

    もうひとつ効率の良さを感じる例を示しましょう。たとえば、<CultureName>en-US</CultureName>という要素は、CultureNameタグで囲まれた文字列によって、原文や訳文の言語を表しますが、当然言語によってそこが変わってくるわけです。

    そうするとたとえば、まず<CultureName>en-US</CultureName>を削除し、次に<CultureName>it-IT</CultureName>を削除するというふうに、そのときどきの言語ごとに削除することになるわけですが、「<CultureName>[^<]+</CultureName>」という正規表現を使えば、どんな言語のときでも一度に削除できます。

    「[^<]+」というのは、「<」以外の文字が1文字以上という意味ですので、これによって<CultureName>と</CultureName>の間がどんな文字列でもマッチします。

    正規表現の詳しい説明はまたの機会に譲るとして、こちらで把握している限りでは、表1の順序で置換していくことで、きれいにタグを削除することができます。

    表1 タグの削除手順
    *1:「置換前」と「置換後」に入力する文字列は、表示上折り返していても実際は1行であり、途中に改行が入るわけではありません。
    「置換前」に入力する文字列*1 「置換後」に入力する文字列*1 マッチする例や置換の意図
    </?Segment[^>]*>   <Segment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    </Segment>
    <Type>[^<]+</Type>   <Type>Standalone</Type>
    <CanHide>[^<]+</CanHide>   <CanHide>false</CanHide>
    <Anchor>[^<]+</Anchor>   <Anchor>1</Anchor>
    <AlignmentAnchor>[^<]+</AlignmentAnchor>   <AlignmentAnchor>1</AlignmentAnchor>
    <TagID>[^<]+</TagID>   <TagID>bold</TagID>
    <CultureName>[^<]+</CultureName>   <CultureName>en-US</CultureName>
    </?Elements>   <Elements>
    </Elements>
    </?Text>   <Text>
    </Text>
    </?Tag>   <Tag>
    </Tag>
    <Value> + <Value> 「+」の前には半角スペースを1つ入れます。
    この正規表現は「Valueの開始タグの直後に半角スペースが1文字以上あった場合」という意味です。
    Valueタグは原文や訳文を直接囲むものなので、これによって原文や訳文の先頭にある半角スペースを削除することになります。
    <Value>- <Value>'- これは正規表現ではありません。単純に「Valueの開始タグの直後に『-(ハイフン)』があった場合に、ハイフンの前に『'(アポストロフィ)』を入れる」ための置換です。
    これによってExcelに持っていったときに、数値として解釈されてしまうことを防ぎます。
    <Value>= <Value>'= これは正規表現ではありません。単純に「Valueの開始タグの直後に『=(半角イコール)』があった場合に、イコールの前に『'(アポストロフィ)』を入れる」ための置換です。
    これによってExcelに持っていったときに、数式として解釈されてしまうことを防ぎます。
     *</?Value>   「*」の前には半角スペースを1つ入れます。
    この正規表現は「直前に半角スペースが0文字以上ある、<Value>か</Value>」という意味です。
    Valueタグは原文や訳文を直接囲むものなので、これによって原文や訳文の末尾に半角スペースがあればそれを削除するとともに、Valueタグ自体を削除することになります。
    ([^\r])\n \1 この正規表現は「『\r(CR:キャリッジリターン)』以外の文字の次に『\n(LF:ラインフィード)』が来る場合、『\n(LF:ラインフィード)』を削除する」という意味です。
    CSVファイルをエクスポートする際、データベース各行の改行コードは「CR:キャリッジリターン+LF:ラインフィード」で、セル(フィールド)内の改行コードは「LF:ラインフィード」になるように設定しています。
    つまり原文や訳文の途中に改行がある場合、その改行コードは「LF:ラインフィード」になっています。これをExcelに持っていった際には、それがセル内改行として機能することになります。
    ここでは、そもそも原文や訳文の途中に改行があること自体変なので、これを削除しています。ただ、もし途中に改行がある原文や訳文を探すことが目的ならば、削除しなくても構いません。
  6. 置換すると「~箇所を置換しました。」というメッセージが現れますので、[OK]ボタンを押します。そして「置換前」と「置換後」に入力する文字列を、上記表1の順序で入れ換えては置換するという行為を繰り返していきます。

    置換結果

  7. タグの削除が終わったら、次に特殊文字の置換をしていきます。まずどんなTextEquivalent要素があるか、その開始タグ「<TextEquivalent>」だけを「置換前」に入れて[下検索]ボタンを押します。

    下検索

  8. 見つかった場合には黄色くハイライトされますので、開始タグの後の文字列(下図の例では「deg」)と終了タグ「</TextEquivalent>」を「置換前」に追加します。

    TextEquivalentの置換

    これを何に置換するかを知るには、タグで囲まれた文字列がどのような文字なのかを調べる必要があります。該当の文章が実際に使われているデータを見ればわかりますが、無い、もしくは容易に探せない場合はどうすればいいでしょうか。

    この文字列はHTMLで使われる文字実体参照とほぼ同じです。したがって、たとえば以下のような一覧を参考に、その実体参照を何の文字に置換したらいいかを調べることができます。

    Character Entity Reference Chart
    https://dev.w3.org/html5/html-author/charref

    たとえば、上図の例にある「deg」の置換文字を探す場合、上記サイトの「&deg;」のところにカーソルを当てます。すると、「&#x000B0;」という数値文字参照が現れます。

    文字コード表を開き、「&#x000B0;」のうち、末尾の「;(セミコロン)」を除いた末尾4文字「00B0」を「Unicodeで指定」欄に入力します。するとそのコードに相当する文字(この場合「°」)がハイライトされます。

    文字コード表でUnicodeの指定

    [選択]ボタンを押すと、その文字が「コピーする文字」欄に入ります。そうしたら[コピー]ボタンを押して、サクラエディタの「置換後」にCtrl+Vキーで貼り付けます。

    選択してコピー

    その上で、[すべて置換]ボタンを押すと、<TextEquivalent>deg</TextEquivalent>を「°」に置換することができます。調べる手間を省くために、当方で経験したことのある、「置換前」と「置換後」の文字列例を表2に示します。

    表2 TextEquivalent要素の置換
    *1:「置換前」に入力する文字列は、表示上折り返していても実際は1行であり、途中に改行が入るわけではありません。
    「置換前」に入力する文字列*1 「置換後」に入力する文字列 文字コード:文字名称
    <TextEquivalent>sim</TextEquivalent> ∼ 223C: Tilde Operator
    <TextEquivalent>sup2</TextEquivalent> ² 00B2: Superscript Two
    <TextEquivalent>sup3</TextEquivalent> ³ 00B3: Superscript Three
    <TextEquivalent>ndash</TextEquivalent> – 2013: En Dash
    <TextEquivalent>ldquo</TextEquivalent> “ 201C: Left Double Quotation Mark
    <TextEquivalent>rdquo</TextEquivalent> ” 201D: Right Double Quotation Mark
    <TextEquivalent>rdquor</TextEquivalent> ” 201D: Right Double Quotation Mark
    <TextEquivalent>rsquo</TextEquivalent> ’ 2019: Right Single Quotation Mark
    <TextEquivalent>deg</TextEquivalent> ° 00B0: Degree Sign
    <TextEquivalent>times</TextEquivalent> × 00D7: Multiplication Sign
    <TextEquivalent>middot</TextEquivalent> · 00B7: Middle Dot
    <TextEquivalent>plusmn</TextEquivalent> ± 00B1: Plus-Minus Sign
    <TextEquivalent>Ouml</TextEquivalent> Ö 00D6: Latin Capital Letter O With Diaeresis
    <TextEquivalent>copy</TextEquivalent> © 00A9: Copyright Sign
    <TextEquivalent>rarr</TextEquivalent> → 2192: Rightwards Arrow
    <TextEquivalent>square</TextEquivalent> □ 25A1: White Square
    <TextEquivalent>trade</TextEquivalent> ™ 2122: Trade Mark Sign
    <TextEquivalent>reg</TextEquivalent> ® 00AE: Registered Sign
    <TextEquivalent>minus</TextEquivalent> − 2212: Minus Sign

    もちろん表2以外の特殊文字もあり得ますし、HTMLの文字実体参照では解決できない文字もあるかもしれません。その場合は実際に使用されているデータを確認する他ありません。

    1つの特殊文字が置換できたら、再び「置換前」を「<TextEquivalent>」だけにして検索し、次の特殊文字を置換することを繰り返していきます。最終的に1つも見つからなくなれば、TextEquivalent要素の置換は終了です。

    025

  9. 念の為「<」だけで検索して、未知のタグがないかどうか確認します。

    未知のタグの検索

  10. 最後に、TextEquivalent要素以外にも、表3のような文字実体参照の置換が必要な場合がありますので、検索して見つかったら置換していきます。
    表3 文字実体参照の置換
    「置換前」に入力する文字列 「置換後」に入力する文字列 文字コード:文字名称
    &lt; < 003C: Less-Than Sign
    &gt; > 003E: Greater-Than Sign
    &quot; " 0022: Quotation Mark
    &apos; ' 0027: Apostrophe
    &amp; & 0026: Ampersand
  11. 処理が終わったら、[名前を付けて保存]ボタンを押します。

    名前を付けて保存

  12. 「文字コードセット」を「Unicode」に変え、[保存]ボタンを押します。ここでいう「Unicode」とは「リトルエンディアンのUTF-16 」のことです。これにすると、タブ区切りのファイルを文字化けせずに直接Excelで開くことができます。

    文字コードセットをUnicodeに変えて保存

  13. ファイル名を変えなかった場合は上書きを確認するメッセージが現れますので、[はい]ボタンを押します。

    上書きを確認するメッセージ

  14. セル(フィールド)内改行の「LF:ラインフィード」を削除しなかった場合は、改行コードを統一するかどうか訊いてきますので、[いいえ]ボタンを押します。ここで改行コードを「CR+LF」に統一してしまうと、セル内改行ができなくなり、おかしなところでExcelの行が分かれてしまいますので、気をつけてください。

    改行コードをCRLFに統一するか確認するメッセージ

後はExcelで開くだけ

ここまで処理すれば、CSVファイルをダブルクリックすることで、そのままExcelで開くことができます。後は、idやtranslation_memory_id、source_hash、target_hash、usage_counter、flagsなど不要な列を削除し、形を整え、「名前を付けて保存」でxlsxファイルにすれば完成です。

いかがでしたでしょうか。こんな面倒なことするくらいなら、Apsic Xbenchでも購入したほうが早いと思われたかもしれませんね。ただ、ご紹介したようなデータベースの操作や正規表現などのテクニックをもっていると、色々なことに応用が効くと思いますので、ご興味があれば参考にしてください。

シェア
ツイート このエントリーをはてなブックマークに追加
お気に入り2
印刷する

この記事を読んだ人はこちらの記事も読んでいます

関連記事

パソコン操作
深層学習を活用したMTと技術翻訳について
翻訳コスト削減と用語言い回しの統一 〜CATツールがもたらすメリットについて〜
翻訳コスト削減と用語言い回しの統一 〜CATツールがもたらすメリットについて〜
Google翻訳の有料APIを申請・設定する方法
Google翻訳の有料APIを申請・設定する方法
CATツールの「100%マッチ」について
CATツールの「100%マッチ」について
企業Webサイトを翻訳する際の注意点 vol.1
企業Webサイトを翻訳する際の注意点 vol.1

人気の記事

  1. 「探しやすさ」を設計するための5つのポイント33
  2. 見やすい装飾で訴求力UP!読まれる書類作りのテクニックを一挙公開!33
  3. テクニカルライティングって!?28
  4. CATツールの「100%マッチ」について26
  5. 「ファイル ~.docx は内容に問題があるため、開けません」というエラーの対処法24
  6. FrameMakerで「宋体」と「黑体」フォントが見つからないときの対処法17
  7. Wordのコメントを印刷できないときの対処方法17
  8. Illustrator CS6でテキストの水平比率を微調整する方法16
  9. ASD-STE100を学んで、誰もが理解しやすい英文を作ろう!15
  10. 企業Webサイトを翻訳する際の注意点 vol.114

マニュアルステーション会員になりませんか?

会員登録すると、マイページでお気に入り記事をリスト化したり、マニュアル制作に便利なさまざまなツールをご利用いただけます。

新規会員登録(無料)

最新記事

  • ひとつのWord文書内で離れた箇所を同時に見る方法 ひとつのWord文書内で離れた箇所を同時に見る方法
  • パソコン操作 深層学習を活用したMTと技術翻訳について
  • Excelイメージ 無償のツールだけでTradosの翻訳メモリをExcelに書き出す方法
  • メインビジュアル PowerPointのアニメーションでインタラクティブなe-Learningを作ろう
  • 見やすさ、わかりやすさの検討 マニュアルを作る際に考慮すべき「ユーザー視点」

キーワード

  • トラブル対処
  • Word
  • CATツール
  • PowerPoint
  • テクニカルライティング
  • 取扱説明書
  • リライト
  • 100%マッチ
  • 機械翻訳
  • 書類作り
  • e-Learning
  • ディープニューラルネットワーク
  • NMTサービス
  • バリデーションチェック
  • ユーザー視点

ピックアップ記事

  • パソコン操作
    深層学習を活用したMTと技術翻訳について
  • Excelイメージ
    無償のツールだけでTradosの翻訳メモリをExcelに書き出す方法
  • メインビジュアル
    PowerPointのアニメーションでインタラクティブなe-Learningを作ろう
  • 見やすさ、わかりやすさの検討
    マニュアルを作る際に考慮すべき「ユーザー視点」
  • PowerPointでe-Learningコンテンツを簡単作成
    PowerPointでe-Learningコンテンツを簡単作成
マニュアルステーション

会員登録でもっと便利に!

マニュアル作成のいまがわかる!

メルマガ

毎月、マニュアル作成に関する情報をお届け致します。

マニュアル作成をバックアップ!

お役立ちツールダウンロード

マニュアル制作に便利なさまざまなツールをご利用いただけます。

気に入った記事をすぐに開ける!

お気に入り登録

記事をマイページにお気に入りとして保存できます。過去の記事もすぐに見つけられて便利!

 

マニュアルステーションに登録する

お問い合わせ

本サイトに関するご質問・お問い合わせは下記フォームからお願い致します。

もしマニュアル制作や翻訳に関するご相談・ご依頼がありましたら、こちらよりお問い合わせください。

*印は必須項目です
※自動送信の確認メールが届かない場合は、メールアドレスの間違いが考えられますので、再度お送りください。

 
 
これは必須項目です
これは必須項目です
これは必須項目です

プライバシーポリシーを見る

 

Footer menu

  • チャットボットで質問
  • マニュアルステーションについて
  • 利用規約
  • プライバシーポリシー

social-footer-block

マニュアルステーション

copyright-block

マニュアルステーションにログイン

パスワードを忘れた方はこちら
Facebookでログイン
Twitterでログイン
Googleでログイン
新規会員登録はこちら

パスワードの再設定

マニュアルステーションに登録しているメールアドレスを入力してください。
ご登録のアドレス宛に、パスワード再設定のURLが届きます。

マニュアルステーション新規会員登録

マニュアルステーションに会員登録してできることは「マニュアルステーションについて」ページをご覧ください。

*印は必須項目です

Facebookで登録
Twitterで登録
Googleで登録
Facebook・Twitterで登録の際、勝手に投稿されることはありません。
適切なメールアドレス。システムが送信するすべてのメールは、このアドレスに送られます。メールアドレスは非公開となり、新しいパスワードを受け取ったり、特定のニュースやお知らせをメールで受け取ることを希望した場合にだけ使用されます。

ここでしか読めないお役立ち情報やセミナーのご案内などを掲載したメールを定期的にお届けいたします。

「利用規約」を必ずお読みいただき、利用規約にご同意の上、確認画面へお進みください

[利用規約を読む]
ログインはこちら