機械翻訳について

翻訳コネクタ・ソース・コードの例の理解

サンプルの翻訳コネクタのソース・コードには、REST APIとコネクタ・ジョブの作成および永続性を処理するジョブ・マネージャが含まれています。

サンプル翻訳コネクタには、Oracle Content Managementコネクタ・インタフェースを使用して実装されたREST APIのセットが含まれています。 これはJAX-RS仕様に従って実装されます。

ジョブ・マネージャは、persistenceApiを使用して次のリソースを格納します:

  • コネクタのジョブおよび言語サービス・プロバイダで作成されたプロジェクトのMetadata
  • Oracle Content Managementからの翻訳zipファイルの内容
  • 各ファイルおよび言語サービス・プロバイダの対応するドキュメントについてのMetadata
  • 翻訳と元のファイルの組合せ
  • コネクタの翻訳済zipファイルの作成

サンプルに含まれているpersistenceApiでは、単にファイル・システムを使用してこれらのリソースを管理します。 完全翻訳コネクタの実装では、永続性レイヤーがフェイルオーバーおよびアップグレード中も引き続き機能することを確認し、格納されているリソースに安全なアクセスを提供する必要があります。

また、ジョブ・マネージャは、ポーリングまたはコールバックを介して情報を問い合せることで、言語サービス・プロバイダの翻訳ジョブのステータスに関するコネクタ・ジョブ・メタデータ・ファイルに情報を保持します。

コード構造:

コネクタ:

  • SampleConnectorRouter.js
    • リクエストを認証
    • リクエストURLからパラメータを抽出
    • リクエストURLを対応するSampleConnectorファンクションにマップします:
      	GET: /api/connector/v1/server => getServer() – metadata about the connector
      	POST: /api/connector/v1/job => createJob()
      	GET: /api/connector/v1/job/:id => getJob()
      	POST: /api/connector/v1/job/:id/translate => translateJob() – accepts a zipfile
      	GET: /api/connector/v1/job/:id/translation => getTranslation – get translated zip
      	DELETE: /api/connector/v1/job/:id => deleteJob()
      
  • SampleConnector.js
    • リクエスト・パラメータを検証
    • 適切なコネクタ・コードをコール
    • レスポンスをフォーマット
  • SampleBasicAuth.js

connector/job-manager:

  • sampleJobManager.js
    • Zipファイルを展開し、次に各ファイルについて:
      • 翻訳可能なフィールドのみを含めるようにファイルをフィルタ処理
      • 翻訳可能なフィールドをLSPに送信
      • 翻訳が行われるのを待機します(ポーリングまたはコールバックで)。
      • 翻訳可能なフィールドを元のファイルと再結合
      • すべての翻訳のZipファイルを作成
    • また、起動時に実行中のジョブも再起動してフェイルオーバーをサポート
  • sampleFileImporter.js
    • フィルタ済ドキュメントを、ソース言語を指定してLSPにインポート
  • sampleFileTranslator.js
    • ドキュメントをターゲット言語に翻訳するようLSPに要求
  • sampleFileDownloader.js
    • ドキュメントの翻訳のダウンロード

connector/apis:

  • persistenceApi.js
    • ファイルシステムを使用した基本的な実装:
      • Zipファイルを解凍し、ソースをメンテナンスしてください
      • 翻訳済ファイルを受け入れて、目的のzip構造を作成
      • Zipを稼働して、翻訳済ファイルを返します
  • filterApi.js
    • ファイル・タイプに基づいて、ソース・ファイルから翻訳可能な文字列を抽出
    • 翻訳された文字列をソース・ファイルで再結合
  • connectorApi.js
    • LSPへのリクエストを構築
  • httpApi.js
    • LSPへの実際のGET/POSTリクエストを作成
MockServer:
  • mockLSPServer.js
  • mockBearerAuth.js
    • モックLSPサーバー
    • 次のヘッダーがあるとします:
      • BearerToken - 任意のBearer ####値を指定できます
      • WorkflowId - machine-workflow-idのみをサポート

翻訳ジョブ元のZipファイル形式

コネクタは、翻訳zipファイルから翻訳するファイルを抽出し、それらをフィルタリングしてLSPに送信する役割があります。 これを行うには、コネクタがzipファイルの形式を理解している必要があります。

Oracle Content Managementには2つのタイプの翻訳ジョブがあるため、zipファイルには2つのファイル構造があります:

  • アセット翻訳
    • Zipファイル形式
      • " job.json " - ソース&ターゲット言語の詳細が含まれています。
      • "root"
        • <asset files to be translated>
  • サイト翻訳
    • Zipファイル形式
      • "site"
        • " job.json " - ソース言語およびターゲット言語の詳細が含まれています。
        • "root"
          • <site files to be translated>
      • "assets"
        • " job.json " - ソース言語およびターゲット言語の詳細が含まれています。
        • "root"
          • <asset files in the site to be translated>

翻訳ジョブ翻訳済Zipファイル・フォーマット

翻訳が成功したとき、コネクタは元のファイルとの翻訳を再結合し、元の形式に基づいてzipファイルを次の形式で作成する必要があります。

  • アセット翻訳
    • Zipファイル形式:
      • "job.json"
      • "de-DE"
        • <asset files>
      • "fr-FR"
        • <asset files>
      • "it-IT"
        • <asset files>
      • root (オプションで元のファイルを含めることができます。 また、ファイルだけでなく、ディレクトリも含める必要があります。)
        • <asset files>
  • サイト翻訳
    • Zipファイル形式:
      • "site"
        • "job.json"
        • "de-DE"
          • <site files>
        • "fr-FR"
          • <site files>
        • "it-IT"
          • <site files>
        • root (オプションで元のファイルを含めることができます。 また、ファイルだけでなく、ディレクトリも含める必要があります。)
          • <site files>
      • "assets"
        • "job.json"
        • "de-DE"
          • <asset files>
        • "fr-FR"
          • <asset files>
        • "it-IT"
          • <asset files>
        • root (オプションで元のファイルを含めることができます。 また、ファイルだけでなく、ディレクトリも含める必要があります。)
          • <asset files>