(57)【特許請求の範囲】
【請求項１】
マークアップ言語文書を元の言語で受信するステップと、
前記文書の内部表現を生成するステップであって、
前記表現がノードを含み、前記ノードが1つまたは複数のテキストノードと1つまたは複数の非テキストノードとを含み、前記テキストノードがそれぞれ、それぞれの元のテキストを含む、生成するステップと、
前記テキストノードからの前記テキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信するステップと、前記マークアップ言語文書の第1の翻訳された内部表現を生成するために、前記テキストノード内の前記テキストを前記翻訳サービスから受信された対応する翻訳されたテキストに置き換えるステップであって、前記テキストノード内の前記元のテキストが前記元の言語であり、前記翻訳されたテキストが異なる第2の言語である、置き換えるステップと、
前記文書の前記第1の翻訳された内部表現を表示することによって前記異なる第2の言語でマークアップ言語文書を表示するステップと、
マークアップ言語の実行可能なスクリプトが第1のテキストノード内の第1のテキストを前記元の言語の新しいテキストに置き換えられていると判断するステップと、
前記マークアップ言語の実行可能なスクリプトが前記第1のテキストノード内の第1のテキストを前記元の言語の新しいテキストに置き換えられたと判断するステップに応答して、前記翻訳サービスへ前記新しいテキストを含むデータ構造を送信するステップと、前記翻訳サービスから、前記第2の言語の前記第1のテキストノードのための第1の翻訳されたテキストを受信するステップと、
前記文書の第2の翻訳された内部表現を生成するために、前記第1のテキストノード内の前記第1のテキストを前記第2の言語の前記第1の翻訳されたテキストに置き換えるステップと、
前記マークアップ言語文書の前記第2の翻訳された内部表現を表示することによって、前記異なる第2の言語のマークアップ言語文書を表示するステップとを含む、
方法。
【請求項２】
前記テキストノードからの前記テキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信するステップと、前記翻訳サービスへ前記新しいテキストを含むデータ構造を送信するステップが、前記テキストノードから前記テキストを抽出するステップと、前記抽出されたテキストを組み立てて前記データ構造にするステップとを含み、この場合、前記テキストのそれぞれが別個のデータエンティティとして前記データ構造内に格納される、請求項1に記載の方法。
【請求項３】
前記テキストノードからの前記テキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信するステップと、前記翻訳サービスへ前記新しいテキストを含むデータ構造を送信するステップが、前記内部表現のコピーを送信するステップを含む、請求項1に記載の方法。
【請求項４】
前記テキストノードからの前記テキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信するステップと、前記翻訳サービスへ前記新しいテキストを含むデータ構造を送信するステップが、前記データ構造を複数の区分内で送信するステップを含む、請求項1に記載の方法。
【請求項５】
前記文書の前記内部表現が、文書オブジェクトモデル表現である、請求項1に記載の方法。
【請求項６】
それぞれのテキストを前記対応する翻訳されたテキストに置き換える前に、前記元のテキストが変更されていないことを検証するステップをさらに含む、請求項1に記載の方法。
【請求項７】
1つまたは複数のテキストノードに対応する前記元のテキストを格納するステップと、
前記元の言語での前記文書の表示を要求する入力を受信するステップと、
前記第1の翻訳された内部表現内の前記テキストノード内の前記テキストを前記対応する元のテキストに置き換えるステップであって、結果として、元の言語の内部表現をもたらす、置き換えるステップとをさらに含み、
前記第1の翻訳された内部表現を表示することによって、前記マークアップ言語文書の翻訳が表示される
請求項1に記載の方法。
【請求項８】
マークアップ言語文書を元の言語で受信するステップと、
前記文書の内部表現を生成するステップであって、
前記表現がノードを含み、前記ノードが1つまたは複数のテキストノードと1つまたは複数の非テキストノードとを含み、前記テキストノードがそれぞれ、それぞれの元のテキストを含む、生成するステップと、
前記テキストノードからの第1のテキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信するステップと、前記マークアップ言語文書の第1の翻訳された内部表現を生成するために、前記テキストノード内の前記テキストを前記翻訳サービスから受信された対応する翻訳されたテキストに置き換えるステップであって、前記テキストノード内の前記元のテキストが前記元の言語であり、前記翻訳されたテキストが異なる第2の言語である、置き換えるステップと
前記文書の前記第１の翻訳された内部表現を表示することによって、前記異なる第２の言語でマークアップ言語文書を表示するステップと、
前記マークアップ言語文書の実行可能なスクリプトが第１のテキストノード内の第１のテキストが前記元の言語の新しいテキストに置き換えられたと判断するステップと、
前記マークアップ言語文書の実行可能なスクリプトが第１のテキストノード内の第１のテキストが前記元の言語の新しいテキストに置き換えられたと判断するステップに応答して、前記翻訳サービスへ前記新しいテキストを含むデータ構造を送信するステップと、
前記翻訳サービスから、前記第2の言語の前記第1のテキストノードのための第1の翻訳されたテキストを受信するステップと、
前記文書の第2の翻訳された内部表現を生成するために、前記テキストノード内の前記第１のテキストを前記第2の言語の前記第1の翻訳されたテキストに置き換えるステップと、
前記マークアップ言語文書の前記第2の翻訳された内部表現を表示することによって、前記異なる第2の言語でマークアップ言語文書を表示するステップと
を含む動作を実行するための
動作可能な1つまたは複数のコンピュータを備えるシステム。
【請求項９】
前記翻訳サービスを提供するサーバデバイスをさらに備える、請求項８に記載のシステム。
【請求項１０】
前記文書の前記第１の翻訳された内部表現を表示することによって、前記異なる第２の言語でマークアップ言語文書を表示する前記ステップと、前記マークアップ言語文書の前記第2の翻訳された内部表現を表示することによって、前記異なる第2の言語でマークアップ言語文書を表示する前記ステップとを実行するように動作可能なマークアップ言語表示プログラムを実行するクライアントデバイスと、前記テキストノードからの前記テキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信するステップと、前記翻訳サービスへ前記新しいテキストを含むデータ構造を送信するステップと、前記マークアップ言語文書の第１の翻訳された内部表現を生成するために、前記テキストノード内の前記テキストを前記翻訳サービスから受信された対応する翻訳されたテキストに置き換える前記ステップと、前記文書の第２の翻訳された内部表現を生成するために、前記テキストノード内の前記テキストを前記第２の言語の前記第１の翻訳されたテキストに置き換える前記ステップとを実行するように動作可能な前記マークアップ言語表示プログラム内で実行するアドインとを備える、請求項８に記載のシステム。
【請求項１１】
前記アドインがガジェットである、請求項１０に記載のシステム。
【請求項１２】
前記アドインがツールバーである、請求項１０に記載のシステム。
【請求項１３】
前記文書の前記第１の翻訳された内部表現を表示することによって、前記異なる第２の言語でマークアップ言語文書を表示する前記ステップと、前記マークアップ言語文書の前記第2の翻訳された内部表現を表示することによって、前記異なる第2の言語でマークアップ言語文書を表示する前記ステップと、前記テキストノードからの前記テキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信するステップと、前記翻訳サービスへ前記新しいテキストを含むデータ構造を送信するステップと、前記マークアップ言語文書の第１の翻訳された内部表現を生成するために、前記テキストノード内の前記テキストを前記翻訳サービスから受信された対応する翻訳されたテキストに置き換える前記ステップと、前記文書の第２の翻訳された内部表現を生成するために、前記テキストノード内の前記テキストを前記第２の言語の前記第１の翻訳されたテキストに置き換える前記ステップとを実行するように動作可能なウェブブラウザを実行するクライアントデバイスを備える、請求項８に記載のシステム。
【請求項１４】
前記テキストノードの前記テキストを含むデータ構造を送信するステップが、前記テキストノードから前記テキストを抽出するステップと、前記抽出されたテキストを組み立てて前記データ構造にするステップとを含み、前記テキストのそれぞれが別個のデータエンティティとして前記データ構造内に格納される、請求項８に記載のシステム。
【請求項１５】
前記テキストノードの前記テキストを含むデータ構造を送信するステップが、前記内部表現のコピーを送信するステップを含む、請求項８に記載のシステム。
【請求項１６】
前記テキストノードの前記テキストを含むデータ構造を送信するステップが、前記データ構造を複数の区分内で送信するステップを含む、請求項８に記載のシステム。
【請求項１７】
1つまたは複数のテキストノードに対応する前記元のテキストを格納するステップと、
前記元の言語での前記文書の表示を要求する入力を受信するステップと、
前記第1の翻訳された内部表現内の前記テキストノード内の前記テキストを前記対応する元のテキストに置き換えるステップであって、結果として、元の言語の内部表現をもたらす、置き換えるステップとを含むステップを実行し、
前記第1の翻訳された内部表現を表示することによって、前記マークアップ言語文書の翻訳が表示されるようにさらに動作可能な、
請求項８に記載のシステム。
【請求項１８】
元の言語内のマークアップ言語文書を受信するステップと、
前記文書の内部表現を生成するステップであって、
前記表現はノードを含み、前記ノードは、１つまたは複数のテキストノードと１つまたは複数の非テキストノードとを含み、前記テキストノードがそれぞれ、それそれぞれの元のテキストを含む、生成するステップと
翻訳サービスへ前記テキストノードから前記テキストを含むデータ構造を別個のデータエンティティとして送信するステップと、
前記マークアップ言語文書の第1の翻訳された内部表現を生成するために前記翻訳サービスから翻訳されたテキストを受信するステップであって、前記テキストノード内の前記元のテキストは、前記元の言語であり、前記翻訳されたテキストが異なる第2の言語である、受信するステップと、
前記マークアップ言語文書の第1の翻訳された内部表現を生成するために前記テキストノード内の前記元のテキストを前記翻訳サービスから受信された対応する翻訳されたテキストに置き換えるステップと、
前記元の言語の文書の前記内部表現の第1のテキストノードは、前記テキストを含むデータ構造が前記翻訳サービスに送信された後に前記マークアップ言語文書の実行可能なスクリプトによって除去されていると判断するステップと、
前記元の言語の文書の前記内部表現の第1のテキストノードが、前記テキストを含む前記データ構造を前記翻訳サービスに送信した後に前記マークアップ言語文書の実行可能なスクリプトによって削除されていると判断するステップに応答して、前記マークアップ言語文書の前記翻訳された内部表現から前記第1のテキストノードを除去するステップと、
前記マークアップ言語文書の前記翻訳された内部表現を表示することによって、前記異なる第2の言語内のマークアップ言語文書を表示するステップとを含む、
コンピュータ実装方法。
【請求項１９】
前記テキストノードの前記テキストを含むデータ構造を送信するステップが、前記テキストノードから前記テキストを抽出するステップと、前記抽出されたテキストを組み立てて前記データ構造にするステップとを含み、この場合、前記テキストのそれぞれが別個のデータエンティティとして前記データ構造内に格納される、請求項１８に記載の方法。
【請求項２０】
前記テキストノードの前記テキストを含むデータ構造を送信するステップが、前記内部表現のコピーを送信するステップを含む、請求項１８に記載の方法。
【請求項２１】
前記テキストノードの前記テキストを含むデータ構造を送信するステップが、前記データ構造を複数の区分内で送信するステップを含む、請求項１８に記載の方法。
【請求項２２】
前記文書の前記内部表現が、文書オブジェクトモデル表現である、請求項１８に記載の方法。
【請求項２３】
前記テキストノード内の前記元のテキストを前記翻訳サービスから受信された対応する翻訳されたテキストに置き換えるステップの前に、前記元のテキストが変更されていないことを検証するステップをさらに含む、請求項１８に記載の方法。
【請求項２４】
1つまたは複数のテキストノードに対応する前記元のテキストを格納するステップと、
前記元の言語での前記文書の表示を要求する入力を受信するステップと、
前記第1の翻訳された内部表現内の前記テキストノード内の前記テキストを前記対応する元のテキストに置き換えるステップであって、結果として、元の言語の内部表現をもたらす、置き換えるステップとをさらに含み、
前記第1の翻訳された内部表現を表示することによって、前記マークアップ言語文書の翻訳が表示される
請求項１８に記載の方法。
【請求項２５】
１つまたは複数のコンピュータと、複数の動作を実行することによって、前記１つまたは複数のコンピュータによって実行された場合に実行可能な命令を記憶した１つまたは複数のストレージデバイスとを含むシステムであって、
前記複数の動作は、
マークアップ言語文書を元の言語で受信するステップと
前記文書の内部表現を生成するステップであって、
前記表現がノードを含み、前記ノードが1つまたは複数のテキストノードと1つまたは複数の非テキストノードとを含み、前記テキストノードがそれぞれ、それぞれの元のテキストを含む、生成するステップと、
前記テキストノードからの前記テキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信するステップと、
前記マークアップ言語文書の第1の翻訳された内部表現を生成するために前記翻訳サービスから翻訳されたテキストを受信するステップであって、前記テキストノード内の前記元のテキストは、前記元の言語であり、前記翻訳されたテキストが異なる第2の言語である、受信するステップと、
前記マークアップ言語文書の第1の翻訳された内部表現を生成するために前記テキストノード内の前記元のテキストを前記翻訳サービスから受信された対応する翻訳されたテキストに置き換えるステップと、
前記元の言語の文書の前記内部表現の第1のテキストノードは、前記テキストを含むデータ構造が前記翻訳サービスに送信された後に前記マークアップ言語文書の実行可能なスクリプトによって除去されていると判断するステップと、
前記元の言語の文書の前記内部表現の第1のテキストノードが、前記テキストを含む前記データ構造を前記翻訳サービスに送信した後に前記マークアップ言語文書の実行可能なスクリプトによって削除されていると判断するステップに応答して、前記マークアップ言語文書の前記第1の翻訳された内部表現から前記第1のテキストノードを除去するステップと、
前記マークアップ言語文書の前記第1の翻訳された内部表現を表示することによって、前記異なる第2の言語内のマークアップ言語文書を表示するステップとを含む
システム。
【請求項２６】
前記テキストノードの前記テキストを含むデータ構造を送信するステップが、前記テキストノードから前記テキストを抽出するステップと、前記抽出されたテキストを組み立てて前記データ構造にするステップとを含み、前記テキストのそれぞれが別個のデータエンティティとして前記データ構造内に格納される、請求項２５に記載のシステム。
【請求項２７】
前記テキストノードの前記テキストを含むデータ構造を送信するステップが、前記内部表現のコピーを送信するステップを含む、請求項２５に記載のシステム。
【請求項２８】
前記テキストノードの前記テキストを含むデータ構造を送信するステップが、前記データ構造を複数の区分内で送信するステップを含む、請求項２５に記載のシステム。
【請求項２９】
前記文書の前記内部表現が、文書オブジェクトモデル表現である、請求項２５に記載のシステム。
【請求項３０】
前記テキストノード内の前記元のテキストを前記翻訳サービスから受信された対応する翻訳されたテキストに置き換えるステップの前に、前記元のテキストが変更されていないことを検証するステップをさらに含む、請求項２５に記載のシステム。
【請求項３１】
前記動作は、
1つまたは複数のテキストノードに対応する前記元のテキストを格納するステップと、
前記元の言語での前記文書の表示を要求する入力を受信するステップと、
前記第1の翻訳された内部表現内の前記テキストノード内の前記テキストを前記対応する元のテキストに置き換えるステップであって、結果として、元の言語の内部表現をもたらす、置き換えるステップとをさらに含み、
前記第1の翻訳された内部表現を表示することによって、前記マークアップ言語文書の翻訳が表示される、請求項２５に記載のシステム。
【請求項３２】
１つまたは複数の一時的ではないコンピュータ記憶メディア上で符号化された、１つまたは複数のコンピュータによって実行された際に、１つまたは複数のコンピュータに複数の動作を実行させる命令を含むコンピュータプログラムであって、
前記複数の動作は、
元の言語内のマークアップ言語文書を受信するステップと、
前記文書の内部表現を生成するステップであって、
前記表現はノードを含み、前記ノードは、１つまたは複数のテキストノードと１つまたは複数の非テキストノードとを含み、前記テキストノードがそれぞれ、それそれぞれの元のテキストを含む、生成するステップと
翻訳サービスへ前記テキストノードから前記テキストを含むデータ構造を別個のデータエンティティとして送信するステップと、
前記マークアップ言語文書の第1の翻訳された内部表現を生成するために前記翻訳サービスから翻訳されたテキストを受信するステップであって、前記テキストノード内の前記元のテキストは、前記元の言語であり、前記翻訳されたテキストが異なる第2の言語である、受信するステップと、
前記マークアップ言語文書の第1の翻訳された内部表現を生成するために前記テキストノード内の前記元のテキストを前記翻訳サービスから受信された対応する翻訳されたテキストに置き換えるステップと、
前記元の言語の文書の前記内部表現の第1のテキストノードは、前記テキストを含むデータ構造が前記翻訳サービスに送信された後に前記マークアップ言語文書の実行可能なスクリプトによって除去されていると判断するステップと、
前記元の言語の文書の前記内部表現の第1のテキストノードが、前記テキストを含む前記データ構造を前記翻訳サービスに送信した後に前記マークアップ言語文書の実行可能なスクリプトによって削除されていると判断するステップに応答して、前記マークアップ言語文書の前記翻訳された内部表現から前記第1のテキストノードを除去するステップと、
前記マークアップ言語文書の前記翻訳された内部表現を表示することによって、前記異なる第2の言語内のマークアップ言語文書を表示するステップとを含む、
コンピュータプログラム。
【請求項３３】
１つまたは複数の一時的ではないコンピュータ記憶メディア上で符号化された、１つまたは複数のコンピュータによって実行された際に、１つまたは複数のコンピュータに複数の動作を実行させる命令を含むコンピュータプログラムであって、
前記複数の動作は、
１つまたは複数のコンピュータと、
複数の動作を実行することによって、前記１つまたは複数のコンピュータによって実行された場合に実行可能な命令を記憶した１つまたは複数のストレージデバイスとを含むシステムであって、
マークアップ言語文書を元の言語で受信するステップと、
前記文書の内部表現を生成するステップであって、
前記表現がノードを含み、前記ノードが1つまたは複数のテキストノードと1つまたは複数の非テキストノードとを含み、前記テキストノードがそれぞれ、それぞれの元のテキストを含む、生成するステップと、
前記テキストノードからの前記テキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信するステップと、前記マークアップ言語文書の第1の翻訳された内部表現を生成するために、前記テキストノード内の前記テキストを前記翻訳サービスから受信された対応する翻訳されたテキストに置き換えるステップであって、前記テキストノード内の前記元のテキストが前記元の言語であり、前記翻訳されたテキストが異なる第2の言語である、置き換えるステップと、
前記文書の前記第1の翻訳された内部表現を表示することによって前記異なる第2の言語でマークアップ言語文書を表示するステップと、
マークアップ言語の実行可能なスクリプトが第1のテキストノード内の第1のテキストを前記元の言語の新しいテキストに置き換えられたと判断するステップと、
前記マークアップ言語の実行可能なスクリプトが前記第1のテキストノード内の第1のテキストを前記元の言語の新しいテキストに置き換えられたと判断するステップに応答して、前記翻訳サービスへ前記新しいテキストを含むデータ構造を送信するステップと、前記翻訳サービスから、前記第2の言語の前記第1のテキストノードのための第1の翻訳されたテキストを受信するステップと、
前記文書の第2の翻訳された内部表現を生成するために、前記第1のテキストノード内の前記第１のテキストを前記第2の言語の前記第1の翻訳されたテキストに置き換えるステップと、
前記マークアップ言語文書の前記第2の翻訳された内部表現を表示することによって、前記異なる第2の言語のマークアップ言語文書を表示するステップとを含む、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、マークアップ言語文書の翻訳に関する。
【背景技術】
【０００２】
一般に、マークアップ言語文書は、テキストとそのテキストに対するアノテーションとを含む電子文書である。アノテーションは、通常、構造情報を含み、テキストがどのようにフォーマットされて、ユーザに表示されるべきかを記述する。マークアップ言語文書の例は、ハイパーテキストマークアップ言語(HTML)文書、拡張可能マークアップ言語(XML)文書、および半拡張可能マークアップ言語(SEML)文書を含む。
【０００３】
マークアップ言語文書に関する翻訳サービスは、通常、文書の静的翻訳を提供する。文書の識別子(例えば、ユニフォームリソースロケータ(URL))が翻訳サービスに送信される。この翻訳サービスは、文書を取り出して、その文書を翻訳し、その文書の翻訳をその文書が取り出されたときに出現したように提示する。
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書は、ディスプレイ置換を用いたマークアップ言語文書の翻訳に関する技術を説明する。
【０００５】
これらの技術は、本明細書の最後および特許請求の範囲に列挙される新規性のある実施形態の形で実現可能である。
【０００６】
本明細書で説明される主題の列挙される実施形態およびその他の実施形態は、以下の利点のうちの1つまたは複数を実現するために実装可能である。サーバ上に格納されたマークアップ言語文書は、クライアント上の適切な場所で翻訳可能である。この翻訳は、ユーザが、ユーザが翻訳されていないページ上でスクリプトと相互に作用することになる場合と同様に、翻訳されたページ上でスクリプトと相互に作用することを可能にするという点で動的でありうる。安全なファイルおよびローカル(すなわち、イントラネット)ファイルは、翻訳サービスがファイルにアクセスできないときですら翻訳可能である。ユーザログインを用いてのみアクセス可能なファイルは、翻訳サービスがファイルにアクセスできないときですら翻訳可能である。クライアント機械は、サーバから文書コンテンツを再びロードせずに、マークアップ言語文書を翻訳することが可能であり、またはマークアップ言語文書をその元の言語に復帰させることが可能である。
【０００７】
本明細書で説明される主題の1つまたは複数の実施形態の詳細が添付の図面および下の説明において記載される。その他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００８】
【図１Ａ】例示的なマークアップ言語文書を示す図である。
【図１Ｂ】マークアップ言語文書の例示的なディスプレイを示す図である。
【図１Ｃ】マークアップ言語文書の内部文書オブジェクトモデル(DOM)プレゼンテーションを例示する図である。
【図２】HTMLウェブページの例示的なディスプレイ、およびウェブページの翻訳されたバージョンの例示的なディスプレイを示す図である。
【図３】マークアップ言語文書の翻訳を実現するシステムの例示的なアーキテクチャを示す図である。
【図４】アドイン構成要素の動作を介してマークアップ言語文書の翻訳が実現されるシステムの例示的なアーキテクチャを示す図である。
【図５】文書の内部表現内のテキストノード内のテキストを組み合わせて区分にし、翻訳されるようにそれらの区分を翻訳サービスに送信するための例示的な方法を示す図である。
【図６】翻訳された区分を使用して、マークアップ言語文書の内部表現を更新するための例示的な方法を示す図である。
【図７】文書の一部を動的に翻訳するための方法の例を示す図である。
【図８】キャッシュを使用して、文書の翻訳されたバージョンから文書の元の言語に切り換えるための例示的な方法を示す図である。
【図９】マークアップ言語文書のテキストを翻訳するための例示的な方法を示す図である。
【０００９】
様々な図面において類似の参照番号および表示は類似の要素を示す。
【発明を実施するための形態】
【００１０】
図1A〜１Bは、例示的なマークアップ言語文書102およびマークアップ言語文書102の例示的なディスプレイ104を示す。
【００１１】
マークアップ言語文書102は、HTML文書である。アノテーションは、文書内のタグとして表される。例えば、<html>タグ106および</html>タグ108は、それらのタグ同士の間のテキストがHTML言語であることを示す。<title>タグ110および</title>タグ112は、それらのタグ同士の間のテキストがタイトルとしてフォーマットされるべきであることを示す。<b>タグ114および</b>タグ116は、それらのタグ同士の間のテキストが太字でフォーマットされるべきであることを示す。
【００１２】
図1Bは、マークアップ言語文書102のディスプレイを例示する。マークアップ言語文書を表示するために、マークアップ言語表示プログラムは、文書の内部表現を生成して、その内部表現からの文書をアノテーションによって指定されたように表示する。このマークアップ言語表示プログラムは、ユーザがマークアップ言語文書を表示して、そのマークアップ言語文書と相互に作用することを可能にするコンピュータプログラムである。かかるプログラムの例は、ウェブブラウザ、例えば、カリフォルニア州、マウンテンビューのMozilla Projectから利用可能なFirefox(商標)およびXML文書エディタである。
【００１３】
一部のマークアップ言語文書は、画像が表示されるべきであることを示す、<img>タグ122などの画像アノテーションを含む。一部のマークアップ言語文書は、それらのスクリプトタグ同士の間のテキストがスクリプト(すなわち、実行可能なプログラムコード)であることを示す<script>タグ124および</script>タグ126などのスクリプトタグを含む。文書が表示されるとき、スクリプトはそのマークアップ言語表示プログラムによって実行可能である。スクリプトの例は、アクションスクリプト、Ｊａｖａ（登録商標）Scriptスクリプト、およびAJAXスクリプトを含む。
【００１４】
図1Cは、マークアップ言語文書102の内部文書オブジェクトモデル(DOM)表現150を例示する。この文書オブジェクトモデルは、実行スクリプトが、文書のスタイル、構造、およびコンテンツにアクセスして、これらを更新することを可能にするインターフェースを提供する。実行スクリプトは、文書を処理して、処理の結果を文書内に組み込むためにDOMを使用することが可能である。
【００１５】
図1Cに示されているように、DOMは、文書をノードオブジェクトのツリーとして表す。それぞれのノードは、文書の一部に対応する。ノードは、例えば、ルートノード(例えば、ルートノード152)、要素ノード(例えば、タイトル要素ノード154)、属性ノード(例えば、ソース属性ノード160)、テキストノード(例えば、テキストノード158)、およびスクリプトノード(例えば、スクリプトノード162)を含めて、様々なタイプであってよい。テキストノードは、文書内のテキストに対応するノードであり、ノード内に格納されたテキストを含む。要素ノードは、<html>タグまたは<title>タグなど、文書内のアノテーションに対応するノードである。属性ノードは、<image>タグに関するソースなど、要素ノードの属性に対応するノードである。スクリプトノードは、実行可能なスクリプトを含む。DOM表現は、その他のタイプのノードを含むことも可能である。
【００１６】
ツリーの構造は、ノード間の階層関係によって決定される。ノードの階層関係は、文書内のアノテーションの入れ子による。階層構造、ならびにツリーの同じレベルにおけるノードの順序は、マークアップ言語表示プログラムによって処理されて、文書を提示するために使用される。
【００１７】
図2は、HTMLウェブページ202の例示的なディスプレイ、およびウェブページの翻訳されたバージョン224の例示的なディスプレイを示す。例示されるディスプレイは、ウェブブラウザによって生成される。
【００１８】
ウェブブラウザは、当初、そのテキストをウェブページの元の言語で表示することによって、ウェブページをその元の形態で表示する。翻訳が開始されるとき、ウェブブラウザ(または、ウェブブラウザ内で実行しているアドイン)は、テキストの区分(例えば、区分A210、区分B212、および区分C214)を文書の内部表現から抽出して、それらの区分を翻訳サービス216に送信する。ウェブブラウザは、翻訳された区分(例えば、翻訳された区分A218、翻訳された区分B220、および翻訳された区分C222)を翻訳サービスから受信して、文書202の内部表現を更新するために、それらの翻訳された区分を使用し、結果として、文書の翻訳されたバージョンをもたらす。例えば、ウェブブラウザは、領域204に対応する内部表現を更新するために、翻訳された区分Aを使用し、領域206に対応する内部表現を更新するために、翻訳された区分B220を使用し、領域208に対応する内部表現を更新するために翻訳された区分C222を使用する。内部表現は更新されているため、ウェブブラウザは、ウェブページの翻訳されたバージョン224を表示する。
【００１９】
いくつかの実装形態では、ウェブブラウザは、翻訳を要求するユーザ入力に応答して翻訳を実行する。この入力は、例えば、「ページ翻訳」ボタン203をクリックすることなど、ユーザ要求であってよい。いくつかの実装形態では、ウェブブラウザは、ユーザの好ましい言語、もしくはユーザの好ましい言語のうちの1つでないすべてのウェブページを翻訳するか、または、文書のかかる1つまたは複数の言語でない部分を翻訳するように構成可能である。
【００２０】
いくつかの実装形態では、ウェブページが翻訳されると、ウェブブラウザは、そのテキストに対する変更に関してウェブページを監視する。変更は、例えば、ウェブブラウザ内で実行しているスクリプトがウェブページのテキストを修正するとき、またはユーザがウェブページ内のリンク上でクリックして、新しいテキストもしくは置換テキストをウェブページ内に挿入させたときに発生しうる。ウェブブラウザがウェブページのテキスト内に変更を検出したとき、ウェブブラウザは、新しいテキストを識別して、テキストを翻訳サービスに送信する。ウェブブラウザは、内部表現を更新するために、結果として生じた、翻訳されたテキストを使用し、次いで、その更新された内部表現に対応する、更新されたウェブページを表示する。
【００２１】
いくつかの実装形態では、ユーザは、表示されたテキスト内の句を選択して、ウェブブラウザ(または、ウェブブラウザ内で実行しているアドイン)にその選択されたテキストの翻訳を提示させることが可能である。例えば、ユーザは、マウスまたはその他のユーザ入力デバイスを用いてテキストを選択して、その選択されたテキストが翻訳されることを要求する入力を提供することが可能である。この入力は、例えば、マウスカーソルを選択されたテキスト上に重ねさせることであってよく、または翻訳が所望されることを表示するためにユーザインターフェース要素を選択することであってもよい。応答して、ウェブブラウザは、翻訳サービスを使用して、選択されたテキストを翻訳させる。ウェブブラウザが翻訳サービスから翻訳されたテキストを受信したとき、ウェブブラウザは、ツールチップ(選択されたテキスト上に表示される枠)またはその他のグラフィカルユーザインターフェース要素を介して、その翻訳されたテキストをユーザに提示することが可能である。いくつかの実装形態では、ウェブページ上に表示されたテキストは、翻訳されたテキストであり、ユーザは、ウェブブラウザに選択されたテキストをその元の言語で提示させる。元の言語のテキストは、ウェブブラウザを実行している機械上に格納可能であるか、または翻訳サービスから取り出すことも可能である。
【００２２】
図3は、マークアップ言語文書の翻訳を実現するシステムの例示的なアーキテクチャを示す。
【００２３】
クライアントデバイス302は、マークアップ言語表示プログラムを実行し、これは、現在の例ではウェブブラウザ304である。ウェブブラウザ304は、ブラウザ翻訳モジュール306と、レンダラモジュール310とを含む。
【００２４】
レンダラモジュール310は、文書オブジェクトモデル表現など、文書の内部表現を表示することによって、マークアップ言語文書を提示する。レンダラモジュール310は、ページ翻訳モジュール312を使用して、表示されたマークアップ言語文書を翻訳する。ページ翻訳モジュール312は、現在の文書の内部表現を解析して、その表現のテキストノードからテキストを抽出し、翻訳のために、そのテキストをブラウザ翻訳モジュール306に送信する。ページ翻訳モジュール312は、翻訳されたテキストをブラウザ翻訳モジュール306から受信して、内部表現を更新する。レンダラモジュール310は、次いで、更新された内部表現を表示する。ページ翻訳モジュール312およびブラウザ翻訳モジュール306は、イベント通知、例えば、機能呼戻し、イベントシンク(event sinks)、プロセス間通信(IPC)メッセージ、または任意のその他の便利な形態のモジュール間通信を介して相互に作用するように構成可能である。
【００２５】
いくつかの実装形態では、ウェブブラウザ304は、マークアップ言語文書の2つの内部表現を維持する。すなわち、元の言語の文書に対応する翻訳されていない内部表現、および文書の翻訳に対応する翻訳された内部表現である。ページ翻訳モジュール312は、翻訳された内部表現を更新し、レンダラモジュール310は、翻訳された内部表現を提示する。ウェブブラウザ内で実行されたスクリプトは、翻訳されてない内部表現を修正し、応答して、ページ翻訳モジュール312は、翻訳された内部表現を修正する。
【００２６】
翻訳構成要素314は、ページ翻訳モジュール312から内部表現内の1つまたは複数のテキストノードに対応するテキストを受信する。次いで、翻訳構成要素314は、翻訳サービス308によって処理され得る形態で1つまたは複数の区分としてそのテキストを符号化して、翻訳のためにそのテキストを翻訳サービス308に送信する。翻訳サービス308のいくつかの実装形態では、翻訳サービスは、受け入れ可能な区分サイズと符号化とを表示する翻訳ポリシーをそのクライアントに提供する。いくつかの実装形態では、これらの区分およびその翻訳は、翻訳サービスに送信される前に暗号化される。これらの区分は、標準の暗号化プロトコル、例えば、HTTPS、対称鍵暗号法または非対称(公開鍵/秘密鍵)暗号法を使用して暗号化されうる。
【００２７】
翻訳構成要素314は、それぞれの翻訳要求をその対応する区分にマッピングするデータを維持する。区分が複数のノードからのテキストを含むとき、翻訳構成要素は、それぞれの区分部分を内部文書表現内の対応するテキストノードにマッピングするデータも維持する。翻訳が翻訳サービスから受信されたとき、翻訳構成要素は、そのデータを使用して、適切なテキストノードに応答をマップする。
【００２８】
翻訳サービス308は、ブラウザ翻訳モジュールから区分を受信して、それらの区分のテキストを異なる言語に翻訳し、それらの区分の翻訳を戻す。いくつかの実装形態では、翻訳サービスは、クライアントデバイス302とは別のサーバ上で実行される。代替の実装形態では、翻訳サービスは、クライアントデバイス302上で実行される。
【００２９】
いくつかの実装形態では、それぞれの区分は、テキストの列である。あるいは、それぞれの区分(およびその翻訳)は、別個のエンティティとしてテキストノードのテキストを含むデータ構造でありうる。例えば、それぞれの区分は、いくつかの下位区分を含むことができ、この場合、それぞれの下位区分は、テキストノードからのテキストと、そのテキストに関するオプションのメタデータとを含む。翻訳サービス308に送信されたテキストは、インラインマークアップ言語タグ(例えば、テキストのブロック内で生じるタグ)を含みうる。もう1つの例として、それぞれの区分は、テキストノードを含む内部表現(または内部表現の一部、あるいは内部表現の削減されたバージョンもしくは編集されたバージョン)でありうる。内部表現が単一の内部表現として送信するには大きすぎる場合、内部表現は複数の区分内で翻訳サービスに送信される。
【００３０】
翻訳サービスが区分を受信すると、翻訳サービスは、その区分内のテキストを翻訳して、翻訳された区分を受信された区分と同じ形態(例えば、その区分がテキストの列であった場合、テキストの列、またはその区分が区分の収集物であった場合、下位区分の収集物)で戻す。あるいは、翻訳サービスは、その翻訳されたテキストがその区分内のテキストノードにマップされうるような形態で翻訳された区分を戻すことが可能である(例えば、翻訳サービスは、翻訳されたテキストをテキストノード上に格納された元のテキストにマッピングし戻すために使用されうる「元のテキスト」=「翻訳されたテキスト」の対を戻すことが可能であり、またはその区分が文書の内部表現であるとき、翻訳サービスは、文書の部分的な内部表現内のテキストノードのテキストに対応する下位区分の収集物を戻すことが可能である)。そのテキストがインラインマークアップ言語タグを含む場合、翻訳サービスは、タグなしでそのテキストを翻訳し、次いで、それらのタグを翻訳されたテキスト内の適切な場所に挿入することが可能である。例えば、そのテキストが複数の文を含み、1つの文が<b> </b>タグでマーキングされている場合、翻訳サービスは、同じタグを用いて、その翻訳された文にマーキングすることができる。
【００３１】
翻訳サービスが下位区分を含む区分を受信したとき、翻訳サービスは、それぞれの下位区分のテキストを翻訳して、それぞれの翻訳された下位区分に関するエントリーを含む、翻訳された区分を生成する。
【００３２】
いくつかの実装形態では、翻訳サービスは、その区分を有するメタデータを受信する。このメタデータは、その区分に関する追加の情報、例えば、その区分が翻訳されるべき言語、(例えば、文書内のHTTPヘッダから検出されるような)元の文書の言語、その区分が対応するテキストノードの識別、その区分に対応するマークアップアノテーション、または文書自体のメタデータ(例えば、文書のメタタグ)を指定する。
【００３３】
いくつかの実装形態では、翻訳サービスは、区分に関する情報を検出することが可能である。例えば、翻訳サービスは、区分のテキストを異なる言語のテキストと比較して、最も整合する言語を選択することによって、その区分の現在の言語を検出することが可能である。翻訳された区分と共にいずれかの検出された情報を戻すことができる。
【００３４】
図4は、マークアップ言語文書の翻訳がアドイン構成要素の動作を介して提供されるシステムの例示的なアーキテクチャを示す。この例では、システムは、ウェブブラウザ内に設置された通常のウェブブラウザ404ならびにブラウザアドイン412、例えば、DOMおよび翻訳サービスと相互に作用し、ユーザとも相互に作用することが可能なツールバーまたはガジェットを含む。
【００３５】
アドイン412は、翻訳モジュール410を含む。翻訳モジュールは、図3を参照して上で説明されたページ翻訳モジュール312とブラウザ翻訳モジュール406の両方の機能を実行するが、ただし、通常のシステムでは、ウェブブラウザおよびアドインは文書の1つの内部表現とだけ相互に作用する。
【００３６】
図5は、文書の内部表現内のテキストノード内のテキストを組み合わせて区分にし、翻訳されるようにそれらの区分を翻訳サービスに送信するための例示的な方法500を示す。現在の例では、文書は複数のフレームを含むHTML文書である。この方法は、次に、それぞれのフレームのノードを考慮して、テキストノードからテキストの区分を生成し、翻訳されるようにテキストのそれらの区分を送信する。便宜上、例示的な方法500は、方法500を実行するシステムを参照して説明される。このシステムは、例えば、ウェブブラウザ304またはアドイン412を有するウェブブラウザ404を実行しているコンピュータであってよい。
【００３７】
このシステムは、frame_index変数を0に初期化する(ステップ502)。Frame_indexは、現在のフレーム、すなわち、現在、処理されているフレームを識別する。
【００３８】
このシステムは、次に、フレームのすべてが処理されるまで、それぞれのフレームからテキストを抽出する。次いで、このシステムは、現在のフレームの第1のノードに対する基準(例えば、ポインタ)を格納するためにcurrent_node変数を初期化する(ステップ506)。このcurrent_node変数は、現在のノード、すなわち、現在、処理されているノードを指す。
【００３９】
このシステムは、現在のノードがテキストノードであるか否かを決定する(ステップ508)。これは、例えば、現在のノードのタイプを審査することによって行うことができる。
【００４０】
現在のノードがテキストノードである場合、このシステムは、現在のノード内のテキストをnode_segmentデータ構造に、かつoriginal_string_arrayデータ構造に追加する。このシステムはまた、ノード自体に対する基準をnode_arrayデータ構造に追加する(ステップ510)。このnode_arrayは、テキストノードに対する基準を文書内に格納する。このoriginal_string_arrayは、テキストノードの元の(翻訳されていない)テキストを文書内に格納し、それぞれのノード内の元のテキストのキャッシュとして機能する。このnode_segmentは、構築されている現在の区分を格納する。この区分は、例えば、翻訳サービスの翻訳ポリシーによって指定されたようにフォーマット可能である。
【００４１】
このシステムは、node_segmentが翻訳のために翻訳サービスに送信されるべきかどうかを決定する(ステップ512)。このシステムは、例えば、その区分が十分大きいかどうか(すなわち、翻訳サービスもしくはシステムの区分ポリシーによって指定されたように、十分なテキストを含んでいるかどうか)、(例えば、次のテキストノードのサイズが、その区分を翻訳サービスによって指定された最大サイズよりも大きくさせることになるため)その区分が大きくなり過ぎつつあるかどうか、またはその区分が文書構造のコヒーレントな部分を表すかどうかに基づいて、そのnode_segmentが翻訳のために送信されるべきかどうかを決定することが可能である。例えば、このシステムは、その区分が所定の数のテキストノード、少なくとも所定の数の文字、または所定の数の語を有するとき、そのnode_segmentが翻訳のために送信されるべきかどうかを決定することが可能である。この所定の数は、絶対数であってよく、または受け入れ可能な範囲であってもよい。あるいは、このシステムは、区分が、例えば、段落全体、文全体、または文書のその他の論理的な単位を含むことによって、文書構造のコヒーレントな部分を表すとき、その区分が翻訳のために送信されるべきかどうかを決定する目的で内部表現の構造を使用することが可能である。例えば、段落要素ノードに対応する区分が段落要素の派生物であるテキストノードのすべてを含むと、その段落要素ノードに対応する区分は翻訳されうる。
【００４２】
いくつかの実装形態では、このシステムは、区分が十分大きくなるとすぐ、翻訳のためにその区分を送信する。node_segmentが翻訳されるべきである場合、そのnode_segment内のテキストは翻訳サーバに送信されて、node_segmentデータ構造は消去される(ステップ514)。
【００４３】
次いで、このシステムは、フレーム内の次のノードを処理し始める。このシステムは、フレーム内の次のノードを指摘するために、current_nodeを更新する(ステップ516)。現在のノードがそのフレームに関する終端ノードでない場合、このシステムは、新しいノードがテキストノードであるか否かを決定する(ステップ518、508)。そうでない場合、このシステムは、frame_indexを増分して(ステップ518、520)、frame_indexがフレーム総数未満であるかどうかを決定する(ステップ502)。このフレーム指標がフレーム総数以上である場合(すなわち、フレームのすべてが処理されているとき)、このシステムは、翻訳されるようにnode_segment内のテキストを翻訳サービスに送信し、node_segmentデータ構造を消去する(ステップ522)。
【００４４】
図6は、翻訳された区分を使用して、マークアップ言語文書の内部表現を更新するための例示的な方法600を示す。この方法は、翻訳された区分に対応する内部表現内のテキストノードを反復し、翻訳された区分内の翻訳されたテキストを使用して、それらのノードのテキストを更新する。便宜上、例示的な方法600は、方法600を実行するシステムを参照して説明される。このシステムは、例えば、ウェブブラウザ304またはアドイン412を有するウェブブラウザ404を実行しているコンピュータであってよい。
【００４５】
このシステムは、テキストの区分に対応する翻訳された区分を文書から受信して、その翻訳された区分をtranslated_segmentデータ構造内に格納する(ステップ602)。この翻訳された区分は、例えば、翻訳サービスから受信される。この翻訳された区分は、(例えば、システムが図5を参照して上で説明された方法を実行していたとき)開始指標と終了指標との間のnode_arrayに追加されたノードに対応する。
【００４６】
このシステムは、translated_segment_index変数を0に初期化して、node_array_index変数を翻訳された区分に関する開始指標に初期化する(ステップ604)。Translated_segment_indexは、翻訳された区分の現在の下位区分、すなわち、現在処理されている下位区分を識別する。Node_array_indexは、そのテキストが更新されているノードアレイ内の現在のノードを識別する。
【００４７】
このシステムは、現在更新されている現在のノード、すなわち、node_array_indexによって識別されたノードを指摘するためにcurrent_node変数を設定して、translated_segment_indexに対応する翻訳された区分の下位区分内のテキストをcurrent_node_translationデータ構造内に格納する(ステップ608)。
【００４８】
このシステムは、現在のノードが有効なノードであることを検証する(ステップ610)。ノードが内部文書表現から除去されておらず、そのノードがnode_arrayに追加されてからそのノードのテキストが変更されていない場合、そのノードは有効である。例えば、システムが翻訳のためにノードのテキストを送った後で、文書を表示しているウェブブラウザ内で実行されたスクリプトがその文書の内部表現からそのノードを除去したとき、システムが翻訳のためにノードのテキストを送信した後で、ウェブブラウザが新しい文書をロードし始めたとき、またはシステムが翻訳のためにそのテキストを送信した後で、ノードのテキストが変更されたとき、ノードは無効になる可能性がある。無効なノードの検出は、その文書を表示しているウェブブラウザに依存しうる。例えば、いくつかの実装形態では、ノードが除去または修正されたとき、このシステムは変異イベント(mutation event)を受信する。これらの実装形態では、システムがそのノードに関する変異イベントを受信したとき、このシステムは、ノードをダーティ(dirty)としてマーキングする。ノードがマーキングされていないとき、そのノードは有効である。
【００４９】
いくつかの実装形態では、システムがノードに関する変異イベント(例えば、DOMレベル2変異イベント)を受信したとき、このシステムは、node_arrayから無効なノードを自動的に除去する。いくつかの実装形態では、このシステムは、ノードに対するアクセスを試みることによって、そのノードが有効かどうかを決定する。このシステムがノードにアクセスできない場合、そのノードは無効である。このシステムがノードにアクセスできる場合、このシステムは、ノードのテキストをそのノードに関するoriginal_string_array内に格納されたテキストと比較する。それらのテキストが整合する場合、このシステムは、そのノードが有効であることを決定する。そうでない場合、このシステムは、そのノードが無効であることを決定する。
【００５０】
現在のノードが有効なノードでない場合、このシステムは、そのノードをnode_arrayから除去する(ステップ612)。いくつかの実装形態では、システムが現在のノードをノードアレイから除去すると、このシステムは、そのノードが文書から除去されたために、またはそのノードが修正されたために、そのノードが無効であるかどうかを決定する。ノードが修正された場合、システムは、次いで、修正されたノードに対するポインタがnode_array内に格納されているかを決定する。されてない場合、このシステムは、修正されたノードをnode_arrayに追加して、修正されたノードのテキストを翻訳のために翻訳サービスに送信し、翻訳サービスから受信された翻訳されたテキストを用いて置換ノードを更新することによって、修正されたノード内のテキストを翻訳する。
【００５１】
現在のノードが有効なノードである場合、このシステムは、そのノードのテキストをcurrent_node_translation内に格納されたテキストに置き換えて、そのテキストをtranslated_string_array内のcurrent_node_translation内に格納する(ステップ614)。
【００５２】
このシステムは、次いで、translated_segment_indexおよびnode_array_indexを増分することによって、翻訳された区分に対応する次のノードの処理を開始する(ステップ616)。
【００５３】
このシステムは、translated_segment_indexを翻訳された区分内の下位区分の総数と比較し、node_array_indexを翻訳された区分に関する終了指標と比較することによって、翻訳された区分全体が処理されているかどうかを決定する(ステップ606)。このtranslated_segment_indexが要素の総数以上であり、node_array_indexが終了指標よりも大きい場合、このシステムは、この方法の実行を終了する。そうでない場合、このシステムは、current_nodeおよびcurrent_node_translationを更新する(ステップ608)。
【００５４】
図7は、文書の一部を動的に翻訳するための例示的な方法700を示す。現在の例では、文書は、1つまたは複数のフレームを含むHTML文書である。便宜上、方法700は、方法700を実行するシステムを参照して説明される。このシステムは、例えば、ウェブブラウザ304またはアドイン412を有するウェブブラウザ404を実行しているコンピュータであってよい。
【００５５】
このシステムは、文書が更新されているという通知を受信する(ステップ702)。文書は、例えば、その文書を表示しているウェブブラウザが文書内のスクリプトを実行して、実行スクリプトが文書のテキストコンテンツを修正したときに更新されうる。このシステムがウェブブラウザであるとき、この通知はレンダラモジュール310から受信可能である。このシステムがブラウザアドイン412である場合、この通知は、その文書を表示しているウェブブラウザ404から受信可能である。
【００５６】
このシステムは、node_arrayを横断して、そのアレイ内の任意の無効なノードを除去する(ステップ704)。このシステムは、例えば、図6を参照して上で説明されたように、ノードが有効かどうかを決定することが可能である。
【００５７】
このシステムは、ページ内の第1のフレームを識別するためにframe_indexを0に初期化する(ステップ706)。
【００５８】
このシステムは、現在のフレームの第1のノード、すなわち、処理されている現在のノードを指摘するためにcurrent_nodeを初期化する(ステップ710)。
【００５９】
このシステムは、現在のノードがテキストノードであるか否かを決定する(ステップ712)。そのcurrent_nodeがテキストノードである場合、このシステムは、translated_string_arrayを検査して、現在のノードのテキストがtranslated_string_array内に記録されているかどうかを決定する(ステップ714)。
【００６０】
そのcurrent_nodeのテキストがtranslated_string_array内に記録されていない場合、このシステムは、テキストノード内のテキストをnode_segmentとoriginal_string_arrayとに追加する(ステップ716)。このシステムは、node_segmentが翻訳のために送信されるべきかどうかを決定する(ステップ718)。送信されるべきである場合、このシステムは、node_segment内のテキストを翻訳サービスに送信し、次いで、node_segmentデータ構造を消去する(ステップ720)。
【００６１】
システムは、次いで、フレーム内の次のノードを指摘するために、current_nodeを更新することによって、フレーム内の次のノードの処理を開始する(ステップ722)。現在のノードがそのフレームに関する終端ノードでない場合、このシステムは、新しいノードがテキストノードであるか否かを決定する(ステップ724、712)。そうでない場合、このシステムは、frame_indexを増分して、そのframe_indexがフレームの総数未満であるかどうかを決定する(ステップ726、708)。
【００６２】
そのframe_indexがフレームの総数未満でない場合(すなわ、フレームのすべてが処理されている場合)、このシステムは、node_segment内のテキストを翻訳サービスに送信し、次いで、node_segmentデータ構造を消去する(ステップ728)。
【００６３】
図8は、キャッシュを使用して、文書の翻訳されたバージョンから文書の元の言語バージョンに切り換えるための例示的な方法800を示す。この方法は、node_arrayによって識別されたそれぞれの有効なノードを反復して、ノード内の翻訳されたテキストをノードの元のテキストに置き換える。便宜上、例示的な方法800は、方法800を実行するためのシステムを参照して説明される。このシステムは、例えば、ウェブブラウザ304またはアドイン412を有するウェブブラウザ404を実行しているコンピュータであってよい。
【００６４】
このシステムは、node_array_indexを0に初期化する(ステップ802)。このシステムは、次いで、node_array_indexにおいてnode_array内に格納されたノードを指摘するために、current_node変数を設定して、現在のノードに対応するoriginal_string_array内に格納されたテキストをcurrent_node_original_stringデータ構造内に格納する(ステップ806)。このcurrent_node_original_stringは、現在のノードの元のテキストを格納する。
【００６５】
このシステムは、例えば、図6を参照して上で説明されたように、現在のノードが有効なノードかどうかを決定する(ステップ808)。現在のノードが有効なノードである場合、このシステムは、現在のノードの現在のテキストをcurrent_node_original_string内に格納されたテキストに置き換える(ステップ810)。現在のノードが有効なノードではない場合、このシステムはそのノードを飛ばして進む。いくつかの実装形態では、このシステムは、修正されたノードが存在するかどうかを決定して、図6を参照して上で説明されたように、翻訳サービスからその修正されたノードの翻訳を要求する。
【００６６】
このシステムは、次いで、node_array_indexを増分して(ステップ812)、そのnode_array_indexがnode_array内のノードの数未満であるかどうかを決定する(ステップ804)。
【００６７】
図9は、マークアップ言語文書のテキストを翻訳するための例示的な方法900を示す。便宜上、例示的な方法900は、方法900を実行するシステムを参照して説明される。このシステムは、例えば、ウェブブラウザ304またはブラウザアドイン412を有するウェブブラウザ404を実行しているコンピュータであってよい。
【００６８】
このシステムは、マークアップ言語文書を表示する(ステップ902)。このマークアップ言語文書は、例えば、ウェブ文書またはユーザのローカルコンピュータ上の文書であってよい。ウェブ文書は、安全な転送プロトコルを使用して、例えば、安全なハイパーテキスト転送プロトコル(HTTPS)を使用して、または安全でない転送プロトコル、例えば、ハイパーテキスト転送プロトコル(HTTP)を使用して取出し可能である。
【００６９】
このシステムは、文書の内部表現、例えば、図1Cを参照して上で説明されたような文書オブジェクトモデル表現を表示することによって、マークアップ言語文書を表示する。
【００７０】
このシステムは、テキストを含むデータ構造をテキストノードから翻訳サービスに送信し、それらのテキストノード内のテキストは、マークアップ言語文書の翻訳された内部表現を生成するために、対応する翻訳されたテキストに置き換えられる(ステップ904)。いくつかの実装形態では、翻訳は、図5を参照して上で説明されたように要求され、ノードのテキストは、図6を参照して上で説明されたように翻訳されたテキストに置き換えられる。代替の実装形態では、それぞれのノードのテキストは、個々に翻訳サービスに送信される。
【００７１】
マークアップ言語文書の翻訳は、翻訳された内部表現を表示することによって表示される(ステップ906)。
【００７２】
いくつかの実装形態では、このシステムは、ノードのテキストを増分的に翻訳して、内部表現を更新する。例えば、このシステムは、テキストノードのサブセットに対応するテキストの翻訳を要求して、ノードのサブセットに対応する翻訳されたテキストを用いて内部表現を更新し、結果として、部分的に翻訳された表現をもたらし、次いで、その部分的に翻訳された表現を表示する。このシステムは、次いで、テキストノードの異なるサブセットに関してそれらのステップを繰り返すことができる。いくつかのかかる実装形態では、このシステムは、マークアップ言語文書がロードされるにつれて(例えば、内部表現の一部が受信されるにつれて)、増分的な翻訳を実行することが可能である。
【００７３】
いくつかの実装形態では、文書の翻訳されたバージョンが表示された後で、このシステムは、(例えば、ユーザ入力に応答して)文書をその元の言語に復帰させ、文書の元の言語の内部表現を表示することによって、元の言語バージョンを表示する。いくつかの実装形態では、このシステムは、例えば、図8を参照して上で説明されたように、ノードの元の言語テキストのキャッシュから元の言語の内部表現を生成する。代替の実装形態では、このシステムは、翻訳された内部表現のシャドーコピーとして元の言語の内部表現を維持して、文書のテキストに対する何らかの変更を反映するために、元の言語の内部表現を更新する。
【００７４】
いくつかの実装形態では、文書の翻訳されたバージョンが表示された後で、このシステムは、テキストノードのうちの1つの中のテキストが新しいテキストに置き換えられているという通信、または新しいテキストを含む新しいノードが内部表現に追加されているという通知を受信する。このシステムは、例えば、文書を表示しているマークアップ言語表示プログラム内で実行している、イベントハンドラからの修正イベントとして、例えば、この通知を受信することが可能である。この通知に応答して、このシステムは、新しいテキストを含むデータ構造を翻訳サービスに送信して、テキストノード内のテキストを翻訳サービスから受信された翻訳されたテキストに置き換えることが可能である。いくつかの実装形態では、この修正イベントは、修正または追加されているノードを識別し、このシステムは、そのノードのテキストを翻訳サービスに送信する。代替の実装形態では、このシステムは、例えば、図7を参照して上で説明されたように、内部表現を横断して、修正または追加されているノードを識別する。
【００７５】
本明細書で説明された主題および動作の実施形態は、デジタル電子回路の形で、または本明細書において開示された構造およびその構造上の均等物を含めて、コンピュータソフトウェア、ファームウェア、もしくはハードウェアの形で、あるいはそれらのうちの1つまたは複数の組合せの形で実装可能である。本明細書で説明された主題の実施形態は、1つもしくは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するためにコンピュータ記憶媒体上で符号化されたコンピュータプログラム命令の1つもしくは複数のモジュールとして実装可能である。その代わりに、または加えて、このプログラム命令は、データ処理装置による実行に適した受信機装置に対する送信に関する情報を符号化するために生成された、人工的に生成された伝搬信号上、例えば、機械生成された電子信号上、光信号上、または電磁信号上で符号化されうる。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基盤(computer readable storage substrate)、ランダムアクセスメモリアレイもしくはランダムアクセスメモリデバイスまたはシリアルアクセスメモリアレイもしくはシリアルアクセスメモリデバイス、あるいはそれらの1つもしくは複数の組合せであってよく、またはそれらの中に含まれてもよい。さらに、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号内で符号化されたコンピュータプログラム命令のソースまたは宛先であってよい。コンピュータ記憶媒体は、1つもしくは複数の別個の物理的な構成要素または媒体(例えば、複数のCD、ディスク、またはその他の記憶デバイス)であってもよく、あるいはそれらの中に含まれてもよい。
【００７６】
本明細書で説明された動作は、1つもしくは複数のコンピュータ可読記憶デバイス上に格納された、またはその他のソースから受信されたデータに関してデータ処理装置によって実行される動作として実装可能である。
【００７７】
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または前述の複数の装置、もしくは組合せを含めて、データを処理するためのすべての種類の装置、デバイス、および機械を含む。この装置は、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含みうる。この装置は、ハードウェアに加えて、当該コンピュータプログラムに関する実行環境を生み出すコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらのうちの1つもしくは複数の組合せを構成するコードを含むことも可能である。この装置および実行環境は、ウェブサービス、分散型コンピューティングインフラストラクチャおよびグリッドコンピューティングングインフラストラクチャなど、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【００７８】
(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)コンピュータプログラムは、コンパイラ型言語またはインタープリタ型言語、宣言型言語または手続き型言語を含めて、任意の形態のプログラミング言語で書き込まれることが可能であり、独立型プログラムとして、またはモジュール、構成要素、サブルーチン、オブジェクト、もしくはコンピューティング環境で使用するのに適したその他のユニットとしてを含めて、任意の形態で配備可能である。コンピュータプログラムは、ファイルシステム内のファイルに対応してよいが、対応しなくてもよい。プログラムは、その他のプログラムまたはデータ(例えば、マークアップ言語文書内に格納された1つもしくは複数のスクリプト)を保持するファイルの一部の中、当該プログラム専用の単一ファイル内、または複数の調整されたファイル(例えば、1つもしく複数のモジュール、サブプログラム、またはコードの部分を格納するファイル)内に格納可能である。コンピュータプログラムは、1つのコンピュータ上、または1つのサイトに配置された、もしくは複数のサイトに分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように配備可能である。
【００７９】
本明細書で説明されたプロセスおよび論理の流れは、入力データに作用して出力を生成することによって動作を実行するために、1つまたは複数のコンピュータプログラムを実行している1つまたは複数のプログラマブルプロセッサによって実行可能である。これらのプロセスおよび論理の流れは、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によっても実行可能であり、装置は専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)としても実装可能である。
【００８０】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサおよび専用マイクロプロセッサの両方と、任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサとを含む。概して、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリまたはそれらの両方から命令およびデータを受信することになる。コンピュータの必須要素は、命令に従って活動を実行するためのプロセッサ、ならびに命令およびデータを格納するための1つまたは複数のメモリデバイスである。概して、コンピュータは、データを格納するための1つもしくは複数の大容量記憶装置、例えば、磁気ディスク、光磁気ディスク、または光ディスクも含むことになるか、あるいはそれらからデータを受信するため、もしくはそれらにデータを転送するため、またはそれらの両方を行うために動作可能に結合されることにもなる。しかし、コンピュータは、かかるデバイスを有さなくてもよい。さらに、コンピュータは、別のデバイス、例えば、ほんのいくつかを挙げると、移動体電話、携帯情報端末(PDA)、携帯音声再生装置もしくは携帯ビデオ再生装置、ゲーム機、全地球測位システム(GPS)受信機、または携帯記憶デバイス(例えば、ユニバーサルシリアルバス(USB)フラッシュデバイス)の中に埋め込み可能である。コンピュータプログラム命令およびデータを格納するのに適したデバイスは、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気デバイス、例えば、内蔵ハードディスクまたは取外し可能ディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含めて、すべての形態の不揮発性のメモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完されてよく、または専用論理回路内に組み込まれてもよい。
【００８１】
ユーザとの相互作用を提供するために、本明細書で説明された本主題の実施形態は、情報をユーザに表示するためのディスプレイデバイス、例えば、CRT(陰極線管)モニタまたはLCD(液晶ディスプレイ)モニタ、ならびに、それによって、ユーザがコンピュータに入力を提供できるキーボードおよびポインティングデバイス、例えば、マウスまたはトラックボールを有するコンピュータ上で実装可能である。ユーザとの相互作用を提供するために、その他の種類のデバイスも同様に使用されうる。例えば、ユーザに提供されるフィードバックは任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってよく、ユーザからの入力は、音響入力、音声入力、または触覚入力を含めて、任意の形態で受信可能である。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、当該デバイスから文書を受信することによって、例えば、ウェブブラウザから受信された要求に応答して、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと相互に作用することが可能である。
【００８２】
本明細書で説明された本主題の実施形態は、例えば、データサーバなどのバックエンド構成要素を含むか、もしくはミドルウェア構成要素、例えば、アプリケーションサーバを含むか、または、フロントエンド構成要素、例えば、それを介してユーザが本明細書で説明された主題の実装形態と相互に作用することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータ、あるいは1つもしくは複数のかかるバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の任意の組合せを含むコンピューティングシステム内で実装可能である。このシステムのこれらの構成要素は、任意の形態のまたは任意の媒体のデジタルデータ通信、例えば、通信ネットワークによって相互接続可能である。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、インターネットワーク(例えば、インターネット)、ならびにピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)を含む。
【００８３】
コンピューティングシステムは、クライアントとサーバとを含みうる。クライアントおよびサーバは、通常、互いから遠隔にあり、典型的には、通信ネットワークを介して相互に作用する。クライアントおよびサーバの関係は、それぞれのコンピュータ上で実行しており、互いに対してクライアント・サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、(例えば、クライアントデバイスと相互に作用しているユーザにデータを表示し、当該ユーザからユーザ入力を受信するために)データ(例えば、HTMLページ)をクライアントデバイスに送信する。(例えば、ユーザ相互作用の結果として)クライアントデバイスにおいて生成されたデータは、サーバにおいてクライアントデバイスから受信可能である。
【００８４】
本明細書は多くの特定の実装形態の詳細を含むが、これらは、本発明または請求されうるものの範囲の限定と解釈されるべきではなく、むしろ、本発明の特定の実施形態に特定の特徴の説明と解釈されるべきである。個別の実施形態の関連で本明細書において説明されるある種の特徴は、単一の実施形態と組み合わせても実装可能である。逆に、単一の実施形態の関連で説明された様々な特徴は、複数の実施形態の形で別々に実装可能であり、または任意の適切なサブコンビネーションの形でも実装可能である。さらに、特徴は、上の説明において、ある種の組合せの形で動作するとして説明される場合があり、当初、そのようなものとして特許請求される場合すらあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組み合わせから削除可能であり、特許請求される組合せは、サブコンビネーションまたはサブコンビネーションの変形形態に関する場合もある。
【００８５】
同様に、動作は、図面において特定の順序で説明されているが、これは、望ましい結果を達成するために、かかる動作が示された特定の順序で、もしくは連続的な順序で実行されること、またはすべての例示された動作が実行されることが必要とされるものと理解されるべきではない。ある種の状況では、マルチタスキングおよび並列処理が有利な場合がある。さらに、上で説明された実施形態における様々なシステム構成要素の分離は、すべての実施形態においてかかる分離が必要であると理解されるべきではなく、説明されたプログラム構成要素およびシステムは、概して、単一のソフトウェア製品内に一緒に統合されてよく、または複数のソフトウェア製品内にパッケージ化されてもよい点を理解されたい。
【００８６】
これにより、本発明の特定の実施形態が説明されている。その他の実施形態は以下の特許請求の範囲内である。場合によっては、特許請求の範囲に列挙される動作は、異なる順序で実行可能であり、依然として、望まれる結果を達成する。加えて、添付の図面に示されているプロセスは、望ましい結果を達成するために、示された特定の順序、または連続的な順序を必要とするとは限らない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利な場合がある。
【００８７】
以下は、例示的な実施形態である。
【００８８】
第1の実施形態は、マークアップ言語文書の内部表現を表示することによって、その文書を元の言語で表示する動作であって、その表現がノードを含み、それらのノードが1つまたは複数のテキストノードと1つまたは複数の非テキストノードとを含み、それらのテキストノードがそれぞれ、それぞれの元のテキストを含む、表示する動作と、内部表現からの文書を表示する間に、それらのテキストノードからのテキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信する動作と、マークアップ言語文書の第1の翻訳された内部表現を生成するために、それらのテキストノード内のテキストを翻訳サービスから受信された対応する翻訳されたテキストに置き換える動作であって、この場合、それらのテキストノード内の元のテキストが元の言語であり、翻訳されたテキストが異なる第2の言語である、置き換える動作とを含み、それによって、第1の翻訳された内部表現を表示することによって、マークアップ言語文書の第1の翻訳が表示される方法である。
【００８９】
第2の実施形態は、第1の実施形態の動作を含む方法であり、テキストノードのテキストを含むデータ構造を送信する動作が、それらのテキストノードからテキストを抽出する動作と、それらの抽出されたテキストを組み立ててデータ構造にする動作とを含み、この場合、それらのテキストのそれぞれは、データ構造内に別個のデータエンティティとして格納される。
【００９０】
第3の実施形態は、第1の実施形態の動作を含む方法であり、テキストノードのテキストを含むデータ構造を送信する動作は、内部表現のコピーを送信する動作を含む。
【００９１】
第4の実施形態は、第1の実施形態の動作を含む方法であり、テキストノードのテキストを含むデータ構造を送信する動作は、データ構造を複数の区分内で送信する動作を含む。
【００９２】
第5の実施形態は、第1の実施形態の動作を含む方法であり、文書の内部表現は、文書オブジェクトモデル表現である。
【００９３】
第6の実施形態は、第1の実施形態の動作を含む方法であり、第1のテキストノード内の第1のテキストが元の言語の新しいテキストに置き換えられているという通知を受信する動作と、次いで、その新しいテキストを含むデータ構造を翻訳サービスに送信する動作と、文書の第2の翻訳された内部表現を生成するために、その第1のテキストノード内のテキストを翻訳サービスから受信された第2の言語の第1の翻訳されたテキストに置き換える動作とをさらに含み、それによって、第2の翻訳された内部表現を表示することによって、マークアップ言語文書の第2の翻訳が表示される。
【００９４】
第7の実施形態は、第6の実施形態の動作を含む方法であり、新しいテキストは、マークアップ言語表示プログラム内で実行している実行可能なスクリプトによって生成される。
【００９５】
第8の実施形態は、第1の実施形態の動作を含む方法であり、それぞれの元のテキストを対応する翻訳されたテキストに置き換える前に、その元のテキストが変更されていないことを検証する動作をさらに含む。
【００９６】
第9の実施形態は、第1の実施形態の動作を含む方法であり、1つまたは複数のテキストノードに対応する元のテキストを格納する動作と、元の言語での文書の表示を要求する入力を受信する動作と、第1の翻訳された内部表現内のテキストノード内のテキストを対応する元のテキスト置き換える動作であって、結果として、元の言語の内部表現をもたらす、置き換える動作とをさらに含み、それによって、第1の翻訳された内部表現を表示することによって、マークアップ言語文書の翻訳が表示される。
【００９７】
第10の実施形態は、文書の内部表現を表示することによって、その文書を元の言語で表示する動作であって、その表現がノードを含み、それらのノードが1つまたは複数のテキストノードと1つまたは複数の非テキストノードとを含み、それらのテキストノードがそれぞれ、それぞれの元のテキストを含む、表示する動作と、次いで、その内部表現内の第1のテキストノードを選択する動作と、その第1のテキストノード内の第1のテキストを含むデータ構造を翻訳サービスに送信する動作と、文書の第1の部分的に翻訳された内部表現を生成するために、その第1のテキストノード内の第1のテキストを翻訳サービスから受信された第1の翻訳されたテキストに置き換える動作であって、この場合、第1のテキストが元の言語であり、第1の翻訳されたテキストが異なる第2の言語である、置き換える動作とを含み、それによって、第1の部分的に翻訳された内部表現を表示することによって、マークアップ言語文書の第1の部分的な翻訳が表示され、次いで、第1の部分的に翻訳された内部表現内の第2のテキストノードを選択する動作と、第2のテキストノード内の第2のテキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信する動作と、文書の第2の部分的に翻訳された内部表現を生成するために、その第2のテキストノード内の第2のテキストを翻訳サービスから受信された対応する第2の翻訳されたテキストに置き換える動作であって、この場合、第2のテキストが元の言語であり、第2の翻訳されたテキストが第2の言語である、置き換える動作とを含み、それによって、第2の部分的に翻訳された内部表現を表示することによって、マークアップ言語文書の第2の部分的な翻訳が表示される方法である。
【００９８】
第11の実施形態は、第10の実施形態の動作を含む方法であり、テキストノードのテキストを含むデータ構造を送信する動作が、それらのテキストノードからテキストを抽出する動作と、それらの抽出されたテキストを組み立ててデータ構造にする動作とを含み、この場合、それらのテキストのそれぞれは、データ構造内に別個のデータエンティティとして格納される。
【００９９】
第12の実施形態は、第10の実施形態の動作を含む方法であり、テキストノードのテキストを含むデータ構造を送信する動作は、内部表現のコピーを送信する動作を含む。
【０１００】
第13の実施形態は、第10の実施形態の動作を含む方法であり、テキストノードのテキストを含むデータ構造を送信する動作は、データ構造を複数の区分内で送信する動作を含む。
【０１０１】
第14の実施形態は、第10の実施形態の動作を含む方法であり、文書の内部表現は、文書オブジェクトモデル表現である。
【０１０２】
第15の実施形態は、第10の実施形態の実施形態の動作を含む方法であり、第3のテキストノード内の第3のテキストが元の言語の新しいテキストに置き換えられているという通知を受信する動作と、次いで、その新しいテキストを含むデータ構造を翻訳サービスに送信する動作と、文書の第3の部分的に翻訳された内部表現を生成するために、その第3のテキストノード内のテキストを翻訳サービスから受信された第2の言語の対応する第3の翻訳されたテキストに置き換える動作とをさらに含み、それによって、第3の部分的に翻訳された内部表現を表示することによって、マークアップ言語文書の第3の部分的な翻訳が表示される。
【０１０３】
第16の実施形態は、第15の実施形態の動作を含む方法であり、新しいテキストは、マークアップ言語表示プログラム内で実行している実行可能なスクリプトによって生成される。
【０１０４】
第17の実施形態は、第10の実施形態の動作を含む方法であり、テキストノード内のそれぞれのテキストを対応する翻訳されたテキストに置き換える前に、そのテキストが変更されていないことを検証する動作をさらに含む。
【０１０５】
第18の実施形態は、第10の実施形態の動作を含む方法であり、1つまたは複数のテキストノードに対応する元のテキストを格納する動作と、元の言語での文書の表示を要求する入力を受信する動作と、第1の翻訳された内部表現内のテキストノード内のテキストを対応する元のテキストに置き換える動作であって、結果として、元の言語の内部表現をもたらす、置き換える動作とをさらに含み、それによって、第1の翻訳された内部表現を表示することによって、マークアップ言語文書の翻訳が表示される。
【０１０６】
第19の実施形態は、テキストを受信して、そのテキストの翻訳を生成する翻訳サービスを提供する動作と、マークアップ言語表示プログラム内で実行するように構成された翻訳モジュールを提供する動作であって、マークアップ言語表示プログラムが、マークアップ言語文書の内部表現を表示することによって、その文書を元の言語で表示し、その表現がノードを含み、それらのノードが1つまたは複数のテキストノードと1つまたは複数の非テキストノードとを含み、それらのテキストノードがそれぞれ、それぞれの元のテキストを含み、その翻訳モジュールが、マークアップ言語表示プログラムが内部表現からの文書を表示する間に、それらのテキストノードからのテキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信する動作と、マークアップ言語文書の第1の翻訳された内部表現を生成するために、それらのテキストノード内のテキストを翻訳サービスから受信された対応する翻訳されたテキストに置き換える動作であって、この場合、それらのテキストノード内の元のテキストが元の言語であり、翻訳されたテキストが異なる第2の言語である、置き換える動作と、第1の翻訳された内部表現を表示のためにマークアップ言語表示プログラムに提供する動作とを実行するように構成された、提供する動作と含む方法である。
【０１０７】
第20の実施形態は、第19の実施形態の動作を含む方法であって、テキストノードのテキストを含むデータ構造を送信する動作が、それらのテキストノードからテキストを抽出する動作と、それらの抽出されたテキストを組み立ててデータ構造にする動作とを含み、この場合、それらのテキストのそれぞれは、データ構造内に別個のデータエンティティとして格納される。
【０１０８】
第21の実施形態は、第19の実施形態の動作を含む方法であり、テキストノードのテキストを含むデータ構造を送信する動作は、内部表現のコピーを送信する動作を含む。
【０１０９】
第22の実施形態は、第19の実施形態の動作を含む方法であり、テキストノードのテキストを含むデータ構造を送信する動作は、データ構造を複数の区分内で送信する動作を含む。
【０１１０】
第23の実施形態は、第19の実施形態の動作を含む方法であり、文書の内部表現は、文書オブジェクトモデル表現である。
【０１１１】
第24の実施形態は、第19の実施形態の動作を含む方法であり、翻訳モジュールは、第1のテキストノード内の第1のテキストが元の言語の新しいテキストに置き換えられているという通知を受信する動作と、次いで、その新しいテキストを含むデータ構造を翻訳サービスに送信する動作と、文書の第2の翻訳された内部表現を生成するために、その第1のテキストノード内のテキストを翻訳サービスから受信された第2の言語の第1の翻訳されたテキストに置き換える動作と、次いで、第2の翻訳された内部表現を表示のためにマークアップ言語表示プログラムに提供する動作とを実行するようにさらに構成される。
【０１１２】
第25の実施形態は、第24の実施形態の動作を含む方法であり、新しいテキストは、マークアップ言語表示プログラム内で実行している実行可能なスクリプトによって生成される。
【０１１３】
第26の実施形態は、第19の実施形態の動作を含む方法であり、それぞれの元のテキストを対応する翻訳されたテキストに置き換える前に、その元のテキストが変更されていないことを検証する動作をさらに含む。
【０１１４】
第27の実施形態は、第19の実施形態の動作を含む方法であり、1つまたは複数のテキストノードに対応する元のテキストを格納する動作と、元の言語での文書の表示を要求する入力を受信する動作と、第1の翻訳された内部表現内のテキストノード内のテキストを対応する元のテキストに置き換える動作であって、結果として、元の言語の内部表現をもたらす、置き換える動作とをさらに含み、それによって、第1の翻訳された内部表現を表示することによって、マークアップ言語文書の翻訳が表示される。
【０１１５】
第28の実施形態は、クライアントデバイス上のユーザインターフェース内に表示されたマークアップ言語文書内の複数の語を含む句が選択されているという通知を受信する動作と、サーバ上で翻訳サービスからその選択された句に対応するテキストの翻訳を要求する動作と、翻訳サービスから翻訳を受信し、次いで、その翻訳をユーザインターフェース内に表示する動作とを含む方法である。
【０１１６】
第29の実施形態は、第28の実施形態の動作を含む方法であり、翻訳はツールチップ内で表示される。
【０１１７】
第30の実施形態は、翻訳されたマークアップ言語文書内の翻訳されたテキストに対応する元のテキストを格納する動作であって、この場合、元のテキストが元の言語であり、翻訳されたテキストが異なる第2の言語である、格納する動作と、翻訳されたマークアップ言語文書をユーザインターフェース内に表示する動作と、翻訳されたテキスト内の複数の語を含む句が選択されているという通知を受信する動作と、その通知に応答して、その選択された句に対応する元のテキストを表示する動作とを含む方法である。
【０１１８】
第31の実施形態は、第30の実施形態の動作を含む方法であり、その選択された句に対応する元のテキストは、ツールチップ内で表示される。
【０１１９】
第32の実施形態は、マークアップ言語文書の内部表現を表示することによって、その文書を元の言語で表示する動作であって、その表現がノードを含み、それらのノードが1つまたは複数のテキストノードと1つまたは複数の非テキストノードとを含み、それらのテキストノードがそれぞれ、それぞれの元のテキストを含む、表示する動作と、内部表現からの文書を表示する間に、それらのテキストノードからのテキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信する動作と、マークアップ言語文書の第1の翻訳された内部表現を生成するために、それらのテキストノード内のテキストを翻訳サービスから受信された対応する翻訳されたテキストに置き換える動作であって、この場合、それらのテキストノード内の元のテキストが元の言語であり、翻訳されたテキストが異なる第2の言語である、置き換える動作と含む動作を実行し、それによって、第1の翻訳された内部表現を表示することによって、マークアップ言語文書の第1の翻訳が表示されるように動作可能な1つまたは複数のコンピュータを備えるシステムである。
【０１２０】
第33の実施形態は、翻訳サービスを提供するサーバデバイスをさらに備える、第32の実施形態のシステムである。
【０１２１】
第34の実施形態は、第32の実施形態のシステムであり、このシステムは、マークアップ言語文書を表示する動作を実行するように動作可能なマークアップ言語表示プログラムを実行するクライアントデバイスと、データ構造を送信する動作と、テキストノード内のテキストを置き換える動作とを実行するように動作可能なマークアップ言語表示プログラム内で実行するアドインとを備える。
【０１２２】
第35の実施形態は、第34の実施形態のシステムであり、アドインはガジェットである。
【０１２３】
第36の実施形態は、第34の実施形態のシステムであり、アドインはツールバーである。
【０１２４】
第37の実施形態は、第32の実施形態のシステムであり、このシステムは、マークアップ言語文書を表示する動作と、データ構造を送信する動作と、テキストノード内のテキストを置き換える動作とを実行するように動作可能なウェブブラウザを実行するクライアントデバイスを備える。
【０１２５】
第38の実施形態は、第32の実施形態のシステムであり、テキストノードのテキストを含むデータ構造を送信する動作は、それらのテキストノードからテキストを抽出する動作と、それらの抽出されたテキストを組み立ててデータ構造にする動作とを含み、この場合、それらのテキストのそれぞれは、別個のデータエンティティとしてデータ構造内に格納される。
【０１２６】
第39の実施形態は、第32の実施形態のシステムであり、テキストノードのテキストを含むデータ構造を送信する動作は、内部表現のコピーを送信する動作を含む。
【０１２７】
第40の実施形態は、第32の実施形態のシステムであり、テキストノードのテキストを含むデータ構造を送信する動作は、データ構造を複数の区分内で送信する動作を含む。
【０１２８】
第41の実施形態は、第32の実施形態のシステムであり、文書の内部表現は、文書オブジェクトモデル表現である。
【０１２９】
第42の実施形態は、第1のテキストノード内の第1のテキストが元の言語の新しいテキストに置き換えられているという通知を受信する動作と、次いで、その新しいテキストを含むデータ構造を翻訳サービスに送信する動作と、文書の第2の翻訳された内部表現を生成するために、その第1のテキストノード内のテキストを翻訳サービスから受信された第2の言語の第1の翻訳されたテキストに置き換える動作とを含む動作を実行し、それによって、第2の翻訳された内部表現を表示することによって、マークアップ言語文書の第2の翻訳が表示されるようにさらに動作可能な、第32の実施形態のシステムである。
【０１３０】
第43の実施形態は、第42の実施形態のシステムであり、新しいテキストは、マークアップ言語表示プログラム内で実行している実行可能なスクリプトによって生成される。
【０１３１】
第44の実施形態は、それぞれの元のテキストを対応する翻訳されたテキストに置き換える前に、その元のテキストが変更されていないことを検証する動作を含む動作を実行するようにさらに動作可能な、第32の実施形態のシステムである。
【０１３２】
第45の実施形態は、1つまたは複数のテキストノードに対応する元のテキストを格納する動作と、元の言語での文書の表示を要求する入力を受信する動作と、第1の翻訳された内部表現内のテキストノード内のテキストを対応する元のテキストに置き換える動作であって、結果として、元の言語の内部表現をもたらす、置き換える動作とを含む動作を実行し、それによって、第1の翻訳された内部表現を表示することによって、マークアップ言語文書の翻訳が表示されるようにさらに動作可能な、第32の実施形態のシステムである。
【０１３３】
第46の実施形態は、文書の内部表現を表示することによって、その文書を元の言語で表示する動作であって、その表現がノードを含み、それらのノードが1つまたは複数のテキストノードと1つまたは複数の非テキストノードとを含み、それらのテキストノードがそれぞれ、それぞれの元のテキストを含む、表示する動作と、次いで、その表現内の第1のテキストノードを選択する動作と、その第1のテキストノード内の第1のテキストを含むデータ構造を翻訳サービスに送信する動作と、文書の第1の部分的に翻訳された内部表現を生成するために、その第1のテキストノード内の第1のテキストを翻訳サービスから受信された対応する第1の翻訳されたテキストに置き換える動作であって、この場合、第1のテキストが元の言語であり、第1の翻訳されたテキストが第2の言語である、置き換える動作とを含む動作を実行し、それによって、第1の部分的に翻訳された内部表現を表示することとによって、マークアップ言語文書の第1の部分的な翻訳が表示され、次いで、第1の部分的に翻訳された内部表現内の第2のテキストノードを選択する動作と、その第2のテキストノード内の第2のテキストを含むデータ構造を翻訳サービスに送信する動作と、文書の第2の部分的に翻訳された内部表現を生成するために、その第2のテキストノード内の第2のテキストを翻訳サービスから受信された対応する第2の翻訳されたテキストに置き換える動作であって、この場合、第2のテキストが元の言語であり、第2の翻訳されたテキストが第2の言語である、置き換える動作とを含む動作を実行し、それによって、第2の部分的に翻訳された内部表現を表示することによって、マークアップ言語文書の第2の部分的な翻訳が表示されるように動作可能な1つまたは複数のコンピュータを備えるシステムである。
【０１３４】
第47の実施形態は、翻訳サービスを提供するサーバデバイスをさらに備える、第46の実施形態のシステムである。
【０１３５】
第48の実施形態は、第46の実施形態のシステムであり、このシステムは、マークアップ言語文書を表示する動作を実行するように動作可能なマークアップ言語表示プログラムを実行するクライアントデバイスと、データ構造を送信する動作と、テキストノード内のテキストを置き換える動作とを実行するように動作可能なマークアップ言語表示プログラム内で実行するアドインとを備える。
【０１３６】
第49の実施形態は、第46の実施形態であり、アドインはガジェットである。
【０１３７】
第50の実施形態は、第46の実施形態であり、アドインはツールバーである。
【０１３８】
第51の実施形態は、第46の実施形態であり、このシステムは、マークアップ言語文書を表示する動作と、データ構造を送信する動作と、テキストノード内のテキストを置き換える動作とを実行するように動作可能なウェブブラウザを実行するクライアントデバイスを備える。
【０１３９】
第52の実施形態は、第46の実施形態のシステムであり、テキストノードのテキストを含むデータ構造を送信する動作は、それらのテキストノードからテキストを抽出する動作と、それらの抽出されたテキストを組み立ててデータ構造にする動作とを含み、この場合、それらのテキストのそれぞれは、別個のデータエンティティとしてデータ構造内に格納される。
【０１４０】
第53の実施形態は、第46の実施形態のシステムであり、テキストノードのテキストを含むデータ構造を送信する動作は、内部表現のコピーを送信する動作を含む。
【０１４１】
第54の実施形態は、第46の実施形態のシステムであり、テキストノードのテキストを含むデータ構造を送信する動作は、データ構造を複数の区分内で送信する動作を含む。
【０１４２】
第55の実施形態は、第46の実施形態のシステムであり、文書の内部表現は、文書オブジェクトモデル表現である。
【０１４３】
第56の実施形態は、第3のテキストノード内の第3のテキストが元の言語の新しいテキストに置き換えられているという通知を受信する動作と、次いで、その新しいテキストを含むデータ構造を翻訳サービスに送信する動作と、文書の第3の部分的に翻訳された内部表現を生成するために、その第3のテキストノード内のテキストを翻訳サービスから受信された第2の言語の対応する第3の翻訳されたテキストに置き換える動作とを含む動作を実行し、それによって、第3の部分的に翻訳された内部表現を表示することによって、マークアップ言語文書の第3の部分的な翻訳が表示されるようにさらに動作可能な、第46の実施形態のシステムである。
【０１４４】
第57の実施形態は、第56の実施形態のシステムであり、新しいテキストは、マークアップ言語表示プログラム内で実行している実行可能なスクリプトによって生成される。
【０１４５】
第58の実施形態は、テキストノード内のそれぞれのテキストを対応する翻訳されたテキストに置き換える前に、そのテキストが変更されていないことを検証する動作を含む動作を実行するようにさらに動作可能な、第46の実施形態のシステムである。
【０１４６】
第59の実施形態は、1つまたは複数のテキストノードに対応する元のテキストを格納する動作と、元の言語での文書の表示を要求する入力を受信する動作と、第1の翻訳された内部表現内のテキストノード内のテキストを対応する元のテキストに置き換える動作であって、結果として、元の言語の内部表現をもたらす、置き換える動作とを含む動作を実行し、それによって、第1の翻訳された内部表現を表示することによって、マークアップ言語文書の翻訳が表示されるようにさらに動作可能な、第46の実施形態のシステムである。
【０１４７】
第60の実施形態は、テキストを受信して、そのテキストの翻訳を生成する翻訳サービスを提供する動作と、マークアップ言語表示プログラム内で実行するように構成された翻訳モジュールを提供する動作であって、マークアップ言語表示プログラムが、マークアップ言語文書の内部表現を表示することによって、その文書を元の言語で表示し、その表現がノードを含み、それらのノードが1つまたは複数のテキストノードと1つまたは複数の非テキストノードとを含み、それらのテキストノードがそれぞれ、それぞれの元のテキストを含み、その翻訳モジュールが、マークアップ言語表示プログラムが内部表現からの文書を表示する間に、それらのテキストノードからのテキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信する動作と、マークアップ言語文書の第1の翻訳された内部表現を生成するために、それらのテキストノード内のテキストを翻訳サービスから受信された対応する翻訳されたテキストに置き換える動作であって、この場合、それらのテキストノード内の元のテキストが元の言語であり、翻訳されたテキストが異なる第2の言語である、置き換える動作と、第1の翻訳された内部表現を表示のためにマークアップ言語表示プログラムに提供する動作とを実行するように構成された、提供する動作とを含む動作を実行するように動作可能な1つまたは複数のコンピュータを備えるシステムである。
【０１４８】
第61の実施形態は、第60の実施形態のシステムであり、このシステムは、翻訳サービスを実行するサーバを備える。
【０１４９】
第62の実施形態は、第60の実施形態のシステムであり、翻訳モジュールは、マークアップ言語表示プログラム内で実行するアドインに関連する。
【０１５０】
第63の実施形態は、第62の実施形態のシステムであり、アドインはガジェットである。
【０１５１】
第64の実施形態は、第62の実施形態のシステムであり、アドインはツールバーである。
【０１５２】
第65の実施形態は、第60の実施形態のシステムであり、翻訳モジュールおよびマークアップ言語表示プログラムはウェブブラウザである。
【０１５３】
第66の実施形態は、第60の実施形態のシステムであり、テキストノードのテキストを含むデータ構造を送信する動作は、それらのテキストノードからテキストを抽出する動作と、それらの抽出されたテキストを組み立ててデータ構造にする動作とを含み、この場合、それらのテキストのそれぞれは、別個のデータエンティティとしてデータ構造内に格納される。
【０１５４】
第67の実施形態は、第60の実施形態のシステムであり、テキストノードのテキストを含むデータ構造を送信する動作は、内部表現のコピーを送信する動作を含む。
【０１５５】
第68の実施形態は、第60の実施形態のシステムであり、テキストノードのテキストを含むデータ構造を送信する動作は、データ構造を複数の区分内で送信する動作を含む。
【０１５６】
第69の実施形態は、第60の実施形態のシステムであり、文書の内部表現は、文書オブジェクトモデル表現である。
【０１５７】
第70の実施形態は、第60の実施形態のシステムであり、翻訳モジュールは、第1のテキストノード内の第1のテキストが元の言語の新しいテキストに置き換えられているという通知を受信する動作と、次いで、その新しいテキストを含むデータ構造を翻訳サービスに送信する動作と、文書の第2の翻訳された内部表現を生成するために、その第1のテキストノード内のテキストを翻訳サービスから受信された第2の言語の第1の翻訳されたテキストに置き換える動作と、次いで、第2の翻訳された内部表現を表示のためにマークアップ言語表示プログラムに提供する動作とを実行するようにさらに構成される。
【０１５８】
第71の実施形態は、第70の実施形態のシステムであり、新しいテキストは、マークアップ言語表示プログラム内で実行している実行可能なスクリプトによって生成される。
【０１５９】
第72の実施形態は、それぞれの元のテキストを対応する翻訳されたテキストに置き換える前に、その元のテキストが変更されていないことを検証する動作を実行するようにさらに動作可能な、第60の実施形態のシステムである。
【０１６０】
第73の実施形態は、1つまたは複数のテキストノードに対応する元のテキストを格納する動作と、元の言語での文書の表示を要求する入力を受信する動作と、第1の翻訳された内部表現内のテキストノード内のテキストを対応する元のテキストに置き換える動作であって、結果として、元の言語の内部表現をもたらす、置き換える動作とを含む動作を実行し、それによって、第1の翻訳された内部表現を表示することによって、マークアップ言語文書の翻訳が表示されるようにさらに動作可能な、第60の実施形態のシステムである。
【０１６１】
第74の実施形態は、クライアントデバイス上のユーザインターフェース内に表示されたマークアップ言語文書内の複数の語を含む句が選択されているという通知を受信する動作と、サーバ上で翻訳サービスからその選択された句に対応するテキストの翻訳を要求する動作と、翻訳サービスから翻訳を受信し、次いで、その翻訳をユーザインターフェース内に表示する動作とを含む動作を実行するように動作可能な1つまたは複数のコンピュータを備えるシステムである。
【０１６２】
第75の実施形態は、第74の実施形態のシステムであり、このシステムは、通知を受信する動作と、テキストの翻訳を要求する動作と、翻訳サービス動作から翻訳を受信する動作とを実行するように動作可能なアドインを実行するクライアントデバイスを備える。
【０１６３】
第76の実施形態は、第75の実施形態のシステムであり、アドインはガジェットである。
【０１６４】
第77の実施形態は、第75の実施形態のシステムであり、アドインはツールバーである。
【０１６５】
第78の実施形態は、第74の実施形態のシステムであり、このシステムは、通知を受信する動作と、テキストの翻訳を要求する動作と、翻訳サービス動作から翻訳を受信する動作とを実行するように動作可能なウェブブラウザを実行するクライアントデバイスを備える。
【０１６６】
第79の実施形態は、第74の実施形態のシステムであり、翻訳はツールチップ内に表示される。
【０１６７】
第80の実施形態は、翻訳されたマークアップ言語文書内の翻訳されたテキストに対応する元のテキストを格納する動作であって、この場合、元のテキストが元の言語であり、翻訳されたテキストが異なる第2の言語である、格納する動作と、翻訳されたマークアップ言語文書をユーザインターフェース内に表示する動作と、翻訳されたテキスト内の複数の語を含む句が選択されているという通知を受信する動作と、その通知に応答して、その選択された句に対応する元のテキストを表示する動作とを含む動作を実行するように動作可能な1つまたは複数のコンピュータを備えるシステムである。
【０１６８】
第81の実施形態は、第80の実施形態のシステムであり、このシステムは、元のテキストを格納する動作と、翻訳されたマークアップ言語文書を表示する動作と、通知を受信する動作と、元のテキストを表示する動作とを実行するように動作可能なアドインを実行するクライアントデバイスを備える。
【０１６９】
第82の実施形態は、第82の実施形態のシステムであり、アドインはガジェットである。
【０１７０】
第83の実施形態は、第82の実施形態のシステムであり、アドインはツールバーである。
【０１７１】
第84の実施形態は、第80の実施形態のシステムであり、このシステムは、元のテキストを格納する動作と、翻訳されたマークアップ言語文書を表示する動作と、通知を受信する動作と、元のテキストを表示する動作とを実行するように動作可能なウェブブラウザを実行するクライアントデバイスを備える。
【０１７２】
第85の実施形態は、第80の実施形態のシステムであり、選択された句に対応する元のテキストは、ツールチップ内に表示される。
【０１７３】
第86の実施形態は、データ処理装置によって実行されたとき、そのデータ処理装置に、マークアップ言語文書の内部表現を表示することによって、その文書を元の言語で表示する動作であって、その表現がノードを含み、それらのノードが1つまたは複数のテキストノードと1つまたは複数の非テキストノードとを含み、それらのテキストノードがそれぞれ、それぞれの元のテキストを含む、表示する動作と、内部表現からの文書を表示する間に、それらのテキストノードからのテキストを含むテータ構造を別個のデータエンティティとして翻訳サービスに送信する動作と、マークアップ言語文書の第1の翻訳された内部表現を生成するために、それらのテキストノード内のテキストを翻訳サービスから受信された対応する翻訳されたテキストに置き換える動作であって、それらのテキストノード内の元のテキストが元の言語であり、翻訳されたテキストが異なる第2の言語である、置き換える動作とを含む動作を実行させ、それによって、第1の翻訳された内部表現を表示することによって、マークアップ言語文書の第1の翻訳が表示される命令を備える、コンピュータ記憶媒体上で符号化されたコンピュータプログラム製品である。
【０１７４】
第87の実施形態は、第86の実施形態のコンピュータプログラム製品であり、テキストノードのテキストを含むデータ構造を送信する動作は、それらのテキストノードからテキストを抽出する動作と、それらの抽出されたテキストを組み立ててデータ構造にする動作とを含み、この場合、それらのテキストのそれぞれは、別個のデータエンティティとしてデータ構造内に格納される。
【０１７５】
第88の実施形態は、第86の実施形態のコンピュータプログラム製品であり、テキストノードのテキストを含むデータ構造を送信する動作は、内部表現のコピーを送信する動作を含む。
【０１７６】
第89の実施形態は、第86の実施形態のコンピュータプログラム製品であり、テキストノードのテキストを含むデータ構造を送信する動作は、データ構造を複数の区分内で送信する動作を含む。
【０１７７】
第90の実施形態は、第86の実施形態のコンピュータプログラム製品であり、文書の内部表現は、文書オブジェクトモデル表現である。
【０１７８】
第91の実施形態は、データ処理装置に、第1のテキストノード内の第1のテキストが元の言語の新しいテキストに置き換えられているという通知を受信する動作と、次いで、その新しいテキストを含むデータ構造を翻訳サービスに送信する動作と、文書の第2の翻訳された内部表現を生成するために、その第1のテキストノード内のテキストを翻訳サービスから受信された第2の言語の第1の翻訳されたテキストに置き換える動作とを含む動作を実行させ、それによって、第2の翻訳された内部表現を表示することによって、マークアップ言語文書の第2の翻訳が表示されるようにさらに動作可能な、第86の実施形態のコンピュータプログラム製品である。
【０１７９】
第92の実施形態は、第91の実施形態のコンピュータプログラム製品であり、新しいテキストは、マークアップ言語表示プログラム内で実行している実行可能なスクリプトからである。
【０１８０】
第93の実装形態は、データ処理装置に、それぞれの元のテキストを対応する翻訳されたテキストに置き換える前に、その元のテキストが変更されていないことを検証する動作を含む動作を実行させるようにさらに動作可能な、第86の実施形態のコンピュータプログラム製品である。
【０１８１】
第94の実施形態は、1つまたは複数のテキストノードに対応する元のテキストを格納する動作と、元の言語での文書の表示を要求する入力を受信する動作と、第1の翻訳された内部表現内のテキストノード内のテキストを対応する元のテキストに置き換える動作であって、結果として、元の言語の内部表現をもたらす、置き換える動作とを含む動作を実行させ、それによって、第1の翻訳された内部表現を表示することによって、マークアップ言語文書の翻訳が表示されるようにさらに動作可能な、第86の実施形態のコンピュータプログラム製品である。
【０１８２】
第95の実施形態は、データ処理装置によって実行されたとき、そのデータ処理装置に、文書の内部表現を表示することによって、その文書を元の言語で表示する動作であって、その表現がノードを含み、それらのノードが1つまたは複数のテキストノードと1つまたは複数の非テキストノードとを含み、それらのテキストノードがそれぞれ、それぞれの元のテキストを含む、表示する動作と、次いで、その内部表現内の第1のテキストノードを選択する動作と、その第1のテキストノード内の第1のテキストを含むデータ構造を翻訳サービスに送信する動作と、文書の第1の部分的に翻訳された内部表現を生成するために、その第1のテキストノード内の第1のテキストを翻訳サービスから受信された対応する第1の翻訳されたテキストに置き換える動作であって、この場合、第1のテキストが元の言語であり、第1の翻訳されたテキストが異なる第2の言語である、置き換える動作とを含無動作を実行させ、それによって、第1の部分的に翻訳された内部表現を表示することによって、マークアップ言語文書の第1の部分的な翻訳が表示され、次いで、第1の部分的に翻訳された内部表現内の第2のテキストノードを選択する動作と、その第2のテキストノード内の第2のテキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信する動作と、文書の第2の部分的に翻訳された内部表現を生成するために、その第2のテキストノード内の第2のテキストを翻訳サービスから受信された対応する第2の翻訳されたテキストに置き換える動作であって、この場合、第2のテキストが元の言語であり、第2の翻訳されたテキストが第2の言語である、置き換える動作とを含む動作を実行させ、それによって、第2の部分的に翻訳された内部表現を表示することによって、マークアップ言語文書の第2の部分的な翻訳が表示される命令を備える、コンピュータ記憶媒体上で符号化されたコンピュータプログラム製品である。
【０１８３】
第96の実施形態は、第95の実施形態のコンピュータプログラム製品であり、テキストノードのテキストを含むデータ構造を送信する動作は、それらのテキストノードからテキストを抽出する動作と、それらの抽出されたテキストを組み立ててデータ構造にする動作とを含み、この場合、それらのテキストのそれぞれは、別個のデータエンティティとしてデータ構造に格納される。
【０１８４】
第97の実施形態は、第95の実施形態のコンピュータプログラム製品であり、テキストノードのテキストを含むデータ構造を送信する動作は、内部表現のコピーを送信する動作を含む。
【０１８５】
第98の実施形態は、第97の実施形態のコンピュータプログラム製品であり、テキストノードのテキストを含むデータ構造を送信する動作は、データ構造を複数の区分内で送信する動作を含む。
【０１８６】
第99の実施形態は、第95の実施形態のコンピュータプログラム製品であり、文書の内部表現は、文書オブジェクトモデル表現である。
【０１８７】
第100の実施形態は、データ処理装置に、第3のテキストノード内の第3のテキストが元の言語の新しいテキストに置き換えられているという通知を受信する動作と、次いで、その新しいテキストを含むデータ構造を翻訳サービスに送信する動作と、文書の第3の部分的に翻訳された内部表現を生成するために、その第3のテキストノード内のテキストを翻訳サービスから受信された第2の言語の対応する第3の翻訳されたテキストに置き換える動作とを含む動作を実行させ、それによって、第3の部分的に翻訳された内部表現を表示することによって、マークアップ言語文書の第3の部分的な翻訳が表示されるようにさらに動作可能な、第95の実施形態のコンピュータプログラム製品である。
【０１８８】
第101の実施形態は、第100の実施形態のコンピュータプログラム製品であって、新しいテキストは、マークアップ言語表示プログラム内で実行している実行可能なスクリプトによって生成される。
【０１８９】
第102の実施形態は、データ処理装置に、テキストノード内のそれぞれのテキストを対応する翻訳されたテキストに置き換える前に、そのテキストが変更されていないことを検証する動作を含む動作を実行させるようにさらに動作可能な、第95の実施形態のコンピュータプログラム製品である。
【０１９０】
第103の実施形態は、データ処理装置に、1つまたは複数のテキストノードに対応する元のテキストを格納する動作と、元の言語での文書の表示を要求する入力を受信する動作と、第1の翻訳された内部表現内のテキストノード内のテキストを対応する元のテキストに置き換える動作であって、結果として、元の言語の内部表現をもたらす、置き換える動作とを含む動作を実行させ、それによって、第1の翻訳された内部表現を表示することによって、マークアップ言語文書の翻訳が表示されるようにさらに動作可能な、第95の実施形態のコンピュータプログラム製品である。
【０１９１】
第104の実施形態は、データ処理装置によって実行されたとき、そのデータ処理装置に、テキストを受信して、そのテキストの翻訳を生成する翻訳サービスを提供する動作と、マークアップ言語表示プログラム内で実行するように構成された翻訳モジュールを提供する動作であって、マークアップ言語表示プログラムが、マークアップ言語文書の内部表現を表示することによって、その文書を元の言語で表示し、その表現がノードを含み、それらのノードが1つまたは複数のテキストノードと1つまたは複数の非テキストノードとを含み、それらのテキストノードがそれぞれ、それぞれの元のテキストを含み、その翻訳モジュールが、マークアップ言語表示プログラムが内部表現からの文書を表示する間に、それらのテキストノードからのテキストを含むデータ構造を別個のデータエンティティとして翻訳サービスに送信する動作と、マークアップ言語文書の第1の翻訳された内部表現を生成するために、それらのテキストノード内のテキストを翻訳サービスから受信された対応する翻訳されたテキストに置き換える動作であって、この場合、それらのテキストノード内の元のテキストが元の言語であり、翻訳されたテキストが異なる第2の言語である、置き換える動作と、第1の翻訳された内部表現を表示のためにマークアップ言語表示プログラムに提供する動作とを実行するように構成された、提供する動作とを含む動作を実行させる命令を備えた、コンピュータ記憶媒体上で符号化されたコンピュータプログラム製品である。
【０１９２】
第105の実施形態は、第104の実施形態のコンピュータプログラム製品であり、テキストノードのテキストを含むデータ構造を送信する動作は、それらのテキストノードからテキストを抽出する動作と、それらの抽出されたテキストを組み立ててデータ構造にする動作とを含み、この場合、それらのテキストのそれぞれは、別個のデータエンティティとしてデータ構造内に格納される。
【０１９３】
第106の実施形態は、第104の実施形態のコンピュータプログラム製品であり、テキストノードのテキストを含むデータ構造を送信する動作は、内部表現のコピーを送信する動作を含む。
【０１９４】
第107の実施形態は、第104の実施形態のコンピュータプログラム製品であり、テキストノードのテキストを含むデータ構造を送信する動作は、データ構造を複数の区分内で送信する動作を含む。
【０１９５】
第108の実施形態は、第104の実施形態のコンピュータプログラム製品であり、文書の内部表現は、文書オブジェクトモデル表現である。
【０１９６】
第109の実施形態は、第104の実施形態のコンピュータプログラム製品であり、翻訳モジュールは、第1のテキストノード内の第1のテキストが元の言語の新しいテキストに置き換えられているという通知を受信する動作と、次いで、その新しいテキストを含むデータ構造を翻訳サービスに送信する動作と、文書の第2の翻訳された内部表現を生成するために、その第1のテキストノード内のテキストを翻訳サービスから受信された第2の言語の第1の翻訳されたテキストに置き換える動作と、次いで、第2の翻訳された内部表現を表示のためにマークアップ言語表示プログラムに提供する動作とを実行するようにさらに構成される。
【０１９７】
第110の実施形態は、第109の実施形態のコンピュータプログラム製品であり、新しいテキストは、マークアップ言語表示プログラム内で実行している実行可能なスクリプトによって生成される。
【０１９８】
第111の実施形態は、それぞれの元のテキストを対応する翻訳されたテキストに置き換える前に、その元のテキストが変更されていないことを検証する動作をさらに備える、第104の実施形態のコンピュータプログラム製品である。
【０１９９】
第112の実施形態は、1つまたは複数のテキストノードに対応する元のテキストを格納する動作と、元の言語での文書の表示を要求する入力を受信する動作と、第1の翻訳された内部表現内のテキストノード内のテキストを対応する元のテキストに置き換える動作であって、結果として、元の言語の内部表現をもたらす、置き換える動作とをさらに含み、それによって、第1の翻訳された内部表現を表示することによって、マークアップ言語文書の翻訳が表示される、第104の実施形態のコンピュータプログラム製品である。
【０２００】
第113の実施形態は、データ処理装置によって実行されたとき、そのデータ処理装置に、クライアントデバイス上のユーザインターフェース内に表示されたマークアップ言語文書内の複数の語を含む句が選択されているという通知を受信する動作と、サーバ上で翻訳サービスからその選択された句に対応するテキストの翻訳を要求する動作と、翻訳サービスから翻訳を受信し、次いで、その翻訳をユーザインターフェース内に表示する動作とを含む動作を実行させる命令を備える、コンピュータ記憶媒体上で符号化されたコンピュータプログラム製品である。
【０２０１】
第114の実施形態は、第113の実施形態のコンピュータプログラム製品であり、翻訳はツールチップ内に表示される。
【０２０２】
第115の実施形態は、データ処理装置によって実行されたとき、そのデータ処理装置に、翻訳されたマークアップ言語文書内の翻訳されたテキストに対応する元のテキストを格納する動作であって、この場合、元のテキストが元の言語であり、翻訳されたテキストが異なる第2の言語である、格納する動作と、翻訳されたマークアップ言語文書をユーザインターフェース内に表示する動作と、翻訳されたテキスト内の複数の語を含む句が選択されているという通知を受信する動作と、その通知に応答して、その選択された句に対応する元のテキストを表示す動作とを含む動作を実行させる命令を備える、コンピュータ可読記憶媒体上で符号化されたコンピュータプログラム製品である。
【０２０３】
第116の実施形態は、第115の実施形態のコンピュータプログラム製品であり、選択された句に対応する元のテキストは、ツールチップ内で表示される。
【符号の説明】
【０２０４】
210, 212, 214  区分
216  翻訳サービス
218, 220, 222  翻訳された区分
302  クライアントデバイス
304  ウェブブラウザ
306  ブラウザ翻訳モジュール
308  翻訳サービス
310  レンダラモジュール
312  ページ翻訳モジュール
314  翻訳構成要素
404  通常のウェブブラウザ
406  ブラウザ翻訳モジュール
410  翻訳モジュール
412  ブラウザアドイン
【図１Ａ】
0005897456.tif 000002
【図１Ｂ】
0005897456.tif 000003
【図１Ｃ】
0005897456.tif 000004
【図２】
0005897456.tif 000005
【図３】
0005897456.tif 000006
【図４】
0005897456.tif 000007
【図５】
0005897456.tif 000008
【図６】
0005897456.tif 000009
【図７】
0005897456.tif 000010
【図８】
0005897456.tif 000011
【図９】
0005897456.tif 000012