IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ セールスフォース ドット コム インコーポレイティッドの特許一覧

特許7507564ローカライズされたアプリケーションにおける翻訳テキストの位置の自動的な発見
<>
  • 特許-ローカライズされたアプリケーションにおける翻訳テキストの位置の自動的な発見 図1
  • 特許-ローカライズされたアプリケーションにおける翻訳テキストの位置の自動的な発見 図2
  • 特許-ローカライズされたアプリケーションにおける翻訳テキストの位置の自動的な発見 図3
  • 特許-ローカライズされたアプリケーションにおける翻訳テキストの位置の自動的な発見 図4
  • 特許-ローカライズされたアプリケーションにおける翻訳テキストの位置の自動的な発見 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-20
(45)【発行日】2024-06-28
(54)【発明の名称】ローカライズされたアプリケーションにおける翻訳テキストの位置の自動的な発見
(51)【国際特許分類】
   G06F 3/0481 20220101AFI20240621BHJP
   G06F 9/451 20180101ALI20240621BHJP
【FI】
G06F3/0481
G06F9/451
【請求項の数】 21
【外国語出願】
(21)【出願番号】P 2020013156
(22)【出願日】2020-01-30
(65)【公開番号】P2020126649
(43)【公開日】2020-08-20
【審査請求日】2023-01-27
(31)【優先権主張番号】16/263978
(32)【優先日】2019-01-31
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ヘンドリック リプカ
(72)【発明者】
【氏名】コルネリア シャルロッテ シッテル
【審査官】相川 俊
(56)【参考文献】
【文献】米国特許第06735759(US,B1)
【文献】米国特許出願公開第2012/0166984(US,A1)
【文献】米国特許出願公開第2016/0283204(US,A1)
【文献】特開2006-260558(JP,A)
【文献】米国特許第9971767(US,B1)
【文献】特表2003-505787(JP,A)
【文献】"[Drupal 8入門]コンテンツの翻訳と多言語設定(後編)",Think IT[online],2016年09月21日,[2023年11月27日検索], <https://thinkit.co.jp/article/10081>
【文献】"バグ追跡ソフトウェア Bugzilla(バグジラ)をお客様向けに提供開始",RisuMail[online],2009年09月28日,[2023年11月27日検索], <http://www.risumail.jp/news/bugzilla-announce>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/0481
G06F 9/451
(57)【特許請求の範囲】
【請求項1】
ソフトウェアローカライゼーションにおける翻訳テキストの位置の自動的な発見のための方法であって、
少なくとも1つのコンピュータプロセッサによって、ユーザインタフェース(UI)出力を、コードベースインデックス内の対応するローカライゼーションオブジェクトに関連付けるステップと;
前記少なくとも1つのコンピュータプロセッサによって、一意の識別子の第1インスタンスを前記一意の識別子の第2インスタンスとマッチングするステップであって、
前記一意の識別子の前記第1インスタンスは、前記コードベースインデックスに対応するコードベース内に位置し、
前記一意の識別子の前記第2インスタンスは、前記UI出力に対応し、
前記コードベースは、所与のコンテキストにおいて前記一意の識別子を含むように構造化される、ステップと;
前記少なくとも1つのコンピュータプロセッサによって、不完全な合意のパターンを識別するように構成されるルールに従って、前記UI出力がローカライゼーション対象に関して前記所与のコンテキストと不一致であるという決定に応答して、前記UI出力に関連する前記対応するローカライゼーションオブジェクトへのリファレンスを取り出すステップと;
前記少なくとも1つのコンピュータプロセッサによって、前記UI出力が不一致であるという決定に応答して、前記コードベースインデックス内の前記対応するローカライゼーションオブジェクトへの前記リファレンスを問題追跡システムのチケットに出力するステップであって、前記対応するローカライゼーションオブジェクトは、前記対応するローカライゼーションオブジェクトへの前記リファレンスを使用して前記チケットからアクセス可能である、ステップと;
を含む、方法。
【請求項2】
前記所与のコンテキストは、フォームフィールド入力検証の結果を含む、
請求項1に記載の方法。
【請求項3】
前記所与のコンテキストは、マルチレベルナビゲーションパスの結果を含む、
請求項1に記載の方法。
【請求項4】
前記少なくとも1つのコンピュータプロセッサによって、前記マルチレベルナビゲーションパスを表すブレッドクラムを生成するステップ、
を更に含む、請求項3に記載の方法。
【請求項5】
前記少なくとも1つのコンピュータプロセッサによって、前記所与のコンテキスト内の前記UI出力に対応するスクリーンショットをキャプチャするステップ、
を更に含む、請求項1に記載の方法。
【請求項6】
ソフトウェアローカライゼーションにおける翻訳テキストの位置の自動的な発見のためのシステムであって、
メモリと;
前記メモリに結合される少なくとも1つのコンピュータプロセッサであって、
ユーザインタフェース(UI)出力を、コードベースインデックス内の対応するローカライゼーションオブジェクトに関連付け、
一意の識別子の第1インスタンスを前記一意の識別子の第2インスタンスとマッチングし、
ここで、前記一意の識別子の前記第1インスタンスは、前記コードベースインデックスに対応するコードベース内に位置し、
前記一意の識別子の前記第2インスタンスは、前記UI出力に対応し、
前記コードベースは、所与のコンテキストにおいて前記一意の識別子を含むように構造化され、
不完全な合意のパターンを識別するように構成されるルールに従って、前記UI出力がローカライゼーション対象に関して前記所与のコンテキストと不一致であるという決定に応答して、前記UI出力に関連する前記対応するローカライゼーションオブジェクトへのリファレンスを取り出し、
前記UI出力が不一致であるという決定に応答して、前記コードベースインデックス内の前記対応するローカライゼーションオブジェクトへの前記リファレンスを問題追跡システムのチケットに出力し、前記対応するローカライゼーションオブジェクトは、前記対応するローカライゼーションオブジェクトへの前記リファレンスを使用して前記チケットからアクセス可能である
ように構成される少なくとも1つのコンピュータプロセッサと;
を備える、システム。
【請求項7】
前記所与のコンテキストは、フォームフィールド入力検証の結果を含む、
請求項に記載のシステム。
【請求項8】
前記所与のコンテキストは、マルチレベルナビゲーションパスの結果を含む、
請求項に記載のシステム。
【請求項9】
前記少なくとも1つのコンピュータプロセッサは、前記マルチレベルナビゲーションパスを表すブレッドクラムを生成するように更に構成される、
請求項に記載のシステム。
【請求項10】
前記少なくとも1つのコンピュータプロセッサは、前記所与のコンテキスト内の前記UI出力に対応するスクリーンショットをキャプチャするように更に構成される、
請求項に記載のシステム。
【請求項11】
ソフトウェアローカライゼーションにおける翻訳テキストの位置の自動的な発見のための非一時的なコンピュータ読み取り可能媒体であって、
少なくとも1つのコンピューティングデバイスによって実行されると、該少なくとも1つのコンピューティングデバイスに:
ユーザインタフェース(UI)出力を、コードベースインデックス内の対応するローカライゼーションオブジェクトに関連付けることと;
一意の識別子の第1インスタンスを前記一意の識別子の第2インスタンスとマッチングすることであって、
ここで、前記一意の識別子の前記第1インスタンスは、前記コードベースインデックスに対応するコードベース内に位置し、
前記一意の識別子の前記第2インスタンスは、前記UI出力に対応し、
前記コードベースは、所与のコンテキストにおいて前記一意の識別子を含むように構造化されることと;
不完全な合意のパターンを識別するように構成されるルールに従って、前記UI出力がローカライゼーション対象に関して前記所与のコンテキストと不一致であるという決定に応答して、前記UI出力に関連する前記対応するローカライゼーションオブジェクトへのリファレンスを取り出すことと;
前記UI出力が不一致であるという決定に応答して、前記コードベースインデックス内の前記対応するローカライゼーションオブジェクトへの前記リファレンスを問題追跡システムのチケットに出力することであって、前記対応するローカライゼーションオブジェクトは、前記対応するローカライゼーションオブジェクトへの前記リファレンスを使用して前記チケットからアクセス可能であることと;
を含む動作を実行させる、格納された命令を有する、非一時的なコンピュータ読み取り可能媒体。
【請求項12】
前記所与のコンテキストは、フォームフィールド入力検証の結果を含む、
請求項11に記載の非一時的なコンピュータ読み取り可能媒体。
【請求項13】
前記所与のコンテキストは、マルチレベルナビゲーションパスの結果を含む、
請求項11に記載の非一時的なコンピュータ読み取り可能媒体。
【請求項14】
前記動作は、前記マルチレベルナビゲーションパスを表すブレッドクラムを生成すること、
を更に含む、請求項13に記載の非一時的なコンピュータ読み取り可能媒体。
【請求項15】
前記動作は、前記所与のコンテキスト内の前記UI出力に対応するスクリーンショットをキャプチャすること、
を更に含む、請求項11に記載の非一時的なコンピュータ読み取り可能媒体。
【請求項16】
前記決定は、ヒューリスティック関数、機械学習プロセス又はそれらの組合せを更に含む、
請求項1に記載の方法。
【請求項17】
前記ルールは、多義入力を識別するように更に構成される、
請求項1に記載の方法。
【請求項18】
前記ルールは、所定の曖昧さを識別するように更に構成される、
請求項1に記載の方法。
【請求項19】
少なくとも前記関連付けるステップは、ソフトウェアに対する変更に応答して実行される、
請求項1に記載の方法。
【請求項20】
少なくとも前記関連付けるステップは、連続的な統合、連続的な展開、連続的な配信又はそれらの任意の組合せのプロセスにおいて実行される、
請求項1に記載の方法。
【請求項21】
少なくとも前記取り出すステップは、テスト自動化のためのフレームワークを使用して実行される、
請求項1に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
関連出願の相互参照
本特許出願は、2017年4月18日に出願された米国特許出願第15/490,852号の一部継続出願である2018年4月27日に出願された米国特許出願第15/965,604号に関連する。さらに、米国特許出願第15/965,604号は、2017年4月19日に出願された米国特許出願第15/491,952号の一部継続出願でもある。上記に列挙された特許出願のすべては、すべての目的のために、その全体が参照により本明細書に組み込まれる。
【0002】
ソフトウェアローカライゼーション(localization:地域化)の間、ユーザインタフェース(UI)トランスレータは、テキスト文字列の翻訳を、その文字列が現れるコンテキスト内で見ることができることが有益であろう。このようなコンテキストは、場合によっては、コンテキスト内の翻訳されたテキスト文字列の正確さを検証するのに有用であることがあり、特に、テキスト文字列が概してコンテキストに敏感であるときや、コンテキストに依存しているときに有用であり得る。例えば所与の言語のテキスト文字列が、例えば人物、数、性別、活用(conjugation)、語形変化(declension)(ケース)、態様、モード(ムード)等の言語上の一致又は調和を必要とする場合、所与の文字列の翻訳が正しいかどうかを判断するためにコンテキストが必要である可能性がある。
【0003】
例えばウェブアプリケーションでは、コンテキストを確認することは、特定の翻訳された文字列が現れる場所に到達するために正確なウェブページ及び/又はナビゲーションパスを見つける必要があり得る。したがって、ウェブアプリケーションやウェブページを含む、国際化ソフトウェアのためのユーザインタフェースでは、アプリケーション内で欠けているテキストや誤って翻訳されたテキストの特定のソースを見つけることは難しい可能性がある。この難しさは、より大きなサイズのコードベースを有するアプリケーションでは、より大きくなる可能性がある。
【0004】
ソースコードリポジトリ等における所与のテキスト文字列の正確な位置及びコンテキストは、単に所与のテキスト文字列について単独でそのリポジトリを検索するだけでは明らかにならず、容易に確認することもできない可能性がある。特定のテキストについての文字列マッチングは、相当数の偽陽性を生じる可能性があり、非テキストオブジェクトについては失敗する可能性がある。テキストフィールドについての一意の識別子は、有効性が限られている可能性がある。ウェブアプリケーションをテストするために使用されるような自動デバッグツール又はウェブクローラでさえ、テキスト文字列及びそのそれぞれのコンテキストを見つけることが難しい可能性がある。
【0005】
加えて、あるアプリケーションにおけるナビゲーションは、複数のステップから成る可能性があり、例えば特定のデータをフォームフィールドに入力することさえ含む可能性がある。大きなコードベースを有するいくつかのアプリケーションでは、特定の文字列のいずれかのインスタンスを見つけることは極めて困難な可能性があり、コンテンツ及び/又はUIコンポーネントにいくらか変更を加える際に、トランスレータ及び/又はディベロッパからの大量の時間と労力のかかるリソースを必要とする可能性がある。
【発明の概要】
【0006】
本明細書では、いくつかの実施形態に従って、ローカライズされたアプリケーション等における翻訳テキストの位置の自動的な発見のためのシステム、装置、製品、方法及び/又はコンピュータプログラム製品の実施形態及び/又はそれらの組合せ及び副次的組合せが提供される。
【0007】
一実施形態は、翻訳されたテキストの位置の自動的な発見のためのコンピュータ実施方法を含む。この実施形態によれば、少なくとも1つのコンピュータプロセッサは、ユーザインタフェース(UI)出力を、コードベースインデックス内の対応するローカライゼーションオブジェクトに関連付けることと、一意の識別子の第1インスタンスを一意の識別子の第2インスタンスとマッチングすることいった動作を実行するように構成され得る。
【0008】
一意の識別子の第1インスタンスは、コードベースインデックスに対応するコードベース内に位置してよく、一意の識別子の第2インスタンスは、UI出力に対応してよい。コードベースは、所与のコンテキストにおいて一意の識別子を含むように構造化されてよい。更なる動作は、UI出力が所与のコンテキストにおいて不正確(incorrect)であるという決定に応答して、UI出力の対応するローカライゼーションオブジェクトへのリファレンス(reference)を取り出すことと、対応するローカライゼーションオブジェクトへのリファレンスを出力するステップとを含んでよい。
【0009】
加えて、実施形態は、メモリと、ユーザインタフェース(UI)出力を、コードベースインデックス内の対応するローカライゼーションオブジェクトに関連付け、一意の識別子の第1インスタンスを一意の識別子の第2インスタンスとマッチングするように構成される少なくとも1つのプロセッサとを有するシステムを含んでよい。
【0010】
一意の識別子の第1インスタンスは、コードベースインデックスに対応するコードベース内に位置し、一意の識別子の第2インスタンスは、UI出力に対応してよい。コードベースは、所与のコンテキストにおいて一意の識別子を含むように構造化されてよい。少なくとも1つのプロセッサは、UI出力が所与のコンテキストにおいて不正確であるという決定に応答して、UI出力の対応するローカライゼーションオブジェクトへのリファレンスを取り出し、対応するローカライゼーションオブジェクトへのリファレンスを出力するように更に構成されてよい。
【0011】
更なる実施形態は、その上に格納された命令を有する非一時的なコンピュータ読み取り可能媒体を含んでよい。少なくとも1つのコンピューティングデバイスによって実行されると、命令は、少なくとも1つのコンピューティングデバイスに、ユーザインタフェース(UI)出力を、コードベースインデックス内の対応するローカライゼーションオブジェクトに関連付けることと、一意の識別子の第1インスタンスを一意の識別子の第2インスタンスとマッチングすることを含む動作を実行させる。
【0012】
一意の識別子の第1インスタンスは、コードベースインデックスに対応するコードベース内に位置し、一意の識別子の第2インスタンスは、UI出力に対応してよい。コードベースは、所与のコンテキストにおいて一意の識別子を含むように構造化されてよい。更なる動作は、UI出力が所与のコンテキストにおいて不正確であるという決定に応答して、UI出力の対応するローカライゼーションオブジェクトへのリファレンスを取り出すことと、対応するローカライゼーションオブジェクトへのリファレンスを出力することを含んでよい。
【図面の簡単な説明】
【0013】
添付の図面は、本明細書に組み込まれ、本明細書の一部を構成する。
【0014】
図1】一実施形態による、ウェブアプリケーションにおける自動テキスト発見に適合し得る例示のアーキテクチャを示すブロック図である。
【0015】
図2】一実施形態による、自動テキスト発見プロセスの例を示すフローチャートである。
【0016】
図3】一実施形態による、国際化成熟度モデル(internationalization maturity model)の一例を示すチャートである。
【0017】
図4】一実施形態による、テスト中のウェブアプリケーションの成熟度の評価を示すチャートである。
【0018】
図5】様々な実施形態を実装するために有用な例示のコンピュータシステムを示す図である。
【0019】
図面は、本発明の実施形態の代表である。図面において、同様の参照番号は一般に、同一又は類似の要素を示す。さらに、一般に、参照番号の左端の数字は、参照番号が最初に現れる図面を識別する。
【発明を実施するための形態】
【0020】
本明細書では、いくつかの実施形態に従って、ローカライズされたアプリケーション等における翻訳テキストの位置の自動的な発見を実装するためのシステム、方法及び/又はコンピュータプログラム製品の実施形態及び/又はそれらの組合せ及び副次的組合せが提供される。
【0021】
テキスト発見
いくつかの実施形態によれば、ソースコードファイル又は他のデータファイル内を含む、アプリケーションのテキストは、コードベース内で検索され得る。コードベースは、例えばリポジトリであってもよく、あるいは、プログラムソースコードのための第1リポジトリと、ローカライゼーションデータ、翻訳ファイル、キー値ペア、プロファイル等のための第2リポジトリのように、複数のリポジトリを含んでもよい。場合によっては、コードベース又はリポジトリは、ファイルシステム内のファイルディレクトリ構造であってもよい。
【0022】
また、リポジトリは、バージョン制御システム又はそのためのソフトウェアを含んでもよく、あるいはそれらによってアクセス可能であってもよい。バージョン制御ソフトウェアのいくつかの例は、数個の非限定的な例には、ソースコード制御システム(SCCS:Source Code Control System)、リビジョン制御システム(RCS:Revision Control System)、コンカレントバージョンシステム(CVS:Concurrent Versions System)、Subversion(SVN)、Mercurial(Hg)、BitKeeper及びGitが含まれる。リポジトリをブラウジングする他の方法は、リポジトリブラウザ又はドキュメント管理システム(DMS)を含んでよく、これらは、特定のバージョン制御システムで動作し、所与のファイルの複数のバージョンを同時にブラウズ、検索及び/又は比較するようにカスタマイズされ得る。あるいはまた、再帰的テキスト検索、パターンマッチング、メタデータ検索等の他の既知の検索技術が使用されてもよい。
【0023】
所与のコードベース又はリポジトリにおいて、テキスト変更は、アプリケーションのソースコード内のどこかで行われ得る。これらの変更を、例えばバージョン制御システムに記憶することができる。そのようなバージョン制御システムは、所与のソフトウェアバージョンにおける変更のレポートを作成するように構成されてよい。レポートは、例えば特定の変更を行ったディベロッパの名前、実際の変更、並びに各変更に対してディベロッパによって追加されたコメントを含んでよい。
【0024】
そのようなレポート又は変更ログは、所与のテキスト文字列の出現を判断し、それから、この所与のテキスト文字列の所与の変更の理由及びコンテキストと、変更を行ったディベロッパをルックアップするのに役立つ可能性がある。いくつかの実施形態では、変更に対するコミットは、追加情報を提供し得る問題追跡システム(issue-tracking system)へのリファレンスを含んでもよい。したがって、クロスリファレンスプログラムを作成及び/又は使用して、クロスリファレンスインデックスを構築し、所与の変更について、それぞれのディベロッパ、問題追跡ID及び変更の理由、並びに変更前及び/又は変更後の所与の変更されたテキスト文字列の状態を示すことができる。変更されたテキスト文字列のこのコンテキスト情報は、問題となっている所与のテキスト文字列の位置をトラックダウンするために使用されてよい。以下で更に説明されるように、同様の目的のために他のアプローチ及び実施形態が実現されてよい。
【0025】
いくつかの実施形態において、所与のアプリケーションは、デバッグモードを備えることがある。例えば上記で参照されて本明細書に組み込まれる、関連する米国特許出願第15/965,604号で説明されるウェブアプリケーションは、所与のウェブページ上のテキスト文字列の何らかの指定された出現を、そのテキスト文字列に対応する一意の識別子、例えばキー等で補足することができ、したがって、各文字列は一意のプロパティキーを有し得る。そのようなキーは、いくつかの実施形態によれば、未割り当て値を有してもよく、かつ/又は、例えばデバッグモードでは名前によって表示されて、通常の実行モードでは表示されなくてもよい。このデバッグ情報は、通常の使用又はテストの過程でページを見ようとするウェブアプリケーションの人間のユーザ又はテスターを混乱させる可能性があるが、このようなデバッグ情報は、コンピュータプログラム(例えば自動テストツール、手動デバッグツール等)が、例えばテスト発見をプログラム的に実行するウェブページをロードし、出力テキスト文字列を自動的に見つけて、それらをソースリポジトリ内の対応する位置に関連付けるのに有用であり得る。
【0026】
そのようなテキスト位置発見プログラムは、ウェブページ上に現れるテキストを検索し、次いで、各テキスト文字列のキーからウェブページのアドレス又はユニフォームリソースロケータ(URL)へのクロスリファレンスインデックスを構築することができる。さらに、テキスト位置発見プログラムは、ウェブページ上のリンクを介して自動的にナビゲートしてもよく、あるいは後続のウェブページ上の複数レベルのリンクを再帰的にナビゲートしたり、フォームに入力したり、ボタンをクリック/タップしたりしてもよい。このようにして、テキスト位置発見プログラムは、例えば検索エンジンで使用されるウェブクローラと同様の方法で、ウェブアプリケーションのページを単独で発見することができる。
【0027】
これらの機能を組み合わせることにより、このようなテキスト位置発見プログラムが、翻訳された各テキスト文字列に対して、ウェブアプリケーション内でテキスト文字列が現れる場所を示すコードベースインデックスを生成することを可能にすることができる。この機能及び/又はコードベースのインデックスは、いくつかのユースケースにおいて、品質保証(QA:quality assurance)要員が、翻訳されたテキスト文字列を迅速に見つけて、例えば翻訳されたテキスト文字列が現れるウェブページの実際のコンテキストでそれらをレビューすることを可能にし得る。同じ概念を使用して、いくつかの実施形態では、高度のコードカバレッジで、ウェブアプリケーションのすべて又はほとんどのウェブページにナビゲートして、それらのページ上のテキスト文字列及び/又は他のローカライゼーションオブジェクトを記録し、説明されるコードベースインデックスをクロスリファレンス又は構築するように、ウェブアプリケーションのテストスイート(test suite)を実装してもよい。
【0028】
米国特許出願第15/965,604号のデバッグモード又はデバッガに加えて、人間のユーザがウェブアプリケーションデバッガと対話してページ等へナビゲートすることを必要とすることなく、少なくとも1つのコードベースにおけるテキスト文字列及びそれらのそれぞれの位置の自動検出を可能にするための機能を追加することができる。したがって、本明細書で説明される強化された技術に従ってプロセスを自動化することによって、自動化デバッガ又はテストツールは、人間のテスターによるアクセスに時間を要するか、かつ/又は他の方法ではウェブクローラによる検出が困難又は不可能な可能性がある、追加のページ(例えば比較的長い一連のアクション又はあるフォームフィールド内の特別な入力に依存するページ)に到達することができる。
【0029】
図1は、一実施形態による、ウェブアプリケーションにおける自動テキスト発見に適合し得る例示のアーキテクチャを示すブロック図である。このアーキテクチャの他のバリエーションが、本開示の範囲内の自動テキスト発見に適合することがある。
【0030】
例えばウェブアプリケーション、プラットフォーム、システム又はプログラム等の例示のアーキテクチャ100は、コードベース110、コードベースインデックス120及びUI 130を含んでよい。UI 130の一部がUI出力132を含んでもよい。UI 130は、図1に示されていない他の部分を含んでもよい。コードベース110はローカライゼーションオブジェクト112を含んでもよく、ローカライゼーションオブジェクト112は、少なくとも1つのローカライゼーションオブジェクト112a、112b等を含んでよい。各ローカライゼーションオブジェクトは、例えばローカライゼーションオブジェクト112aに対応するUID 142a、ローカライゼーションオブジェクト142bに対応するUID 142b等のように、一意の識別子(UID)に対応し得る。
【0031】
一意の識別子は、いくつかの実施形態では一意の記述的名前(unique descriptive name)を有し得るキーであってよく、ロケールタグ(locale tag)を含んでもよい。ロケールタグは、例えばユーザ及び/又は管理者によることを含め、グローバルに又はローカルに設定されてよい。他の実施形態では、一意の識別子は、シンボル、ハッシュ値又は他の一意のリファレンスであってよい。UIDは、例えばUID 142aに対応するローカライゼーションオブジェクト112aのコンテンツ144a等のように、ローカライゼーションオブジェクトに対応するコンテンツとペアリングされてよい。一部の実施形態では、コンテンツ144a、144b等は、テキスト文字列、画像、アニメーション、ビデオ、オーディオ又はそれらの任意の組合せを含んでもよい。
【0032】
ローカライゼーションオブジェクト112に対応して、UI出力132は、それらの一意の識別子によるローカライゼーションオブジェクトへのリファレンスを含んでもよい。例えばUI出力132は、コンテンツ144bを無条件に出力するように構成されてもよい。コンテンツ144bは、例えばテキスト文字列であってもよい。UID 142bを参照し得る、出力又はプリントする機能172bを有することによって、出力の結果は、コンテンツ144b(UI出力132には図示せず)であってもよい。また、UI出力132は条件を説明してもよい。例えば無効なUI入力(図示せず)があると、この場合、出力機能172aは、UID 142aを参照した結果として、コンテンツ144a(UI出力132内に図示せず)をプリントするように構成されてもよい。したがって、コードベース110は、UID 142aの第1インスタンスとUID 142bの第1インスタンスを含み、UI出力132は、すべてのユースケースで一定の条件が満たされていない場合であっても、リファレンスによって、UID 142a及びUID 142bの対応する第2インスタンスを有する。
【0033】
コードベースインデックス120は、いくつかの実施形態によると、コードベース110及びUI出力132にまたがって、一意の識別子のこれらの第1及び第2インスタンスをクロスリファレンスするように構成されてもよい。コードベースの位置は、いくつかの非限定的な例を提供するため、例えば所与のパス名、ファイル名、行番号、列番号、範囲又はそれらの任意の組合せを含むことができる。出力位置は、いくつかの非限定的な例を提供するため、例えばユニフォームリソースロケータ(URL)、ユニフォームリソース識別子(URI)、ブレッドクラム(breadcrumb)、パス名、ファイル名、行番号、列番号、範囲又はそれらの任意の組合せを含むことができる。コードベースインデックス120の図示された例では、パス152aはUID 142aに対応し、URL 162aとクロスリファレンスされ、パス152bはUID 142bに対応し、URL 162bとクロスリファレンスされる等である。出力位置が複数の対応する一意の識別子に対して同じであることのように、より特異性が好ましいか又は必要である場合、いくつかの実施形態において、追加の位置情報が含まれてもよい。
【0034】
これらの要素、これらの要素間のインタラクション及びこれらの要素の他の取扱いについての追加的な説明は、更に以下に見られる。同様の要素の他の組合せ、構成及び配置が更に可能であり、本明細書で説明される強化された技術は、図1に示される構成に限定されない。
【0035】
図2は、一実施形態による、ローカライズされたアプリケーションにおける翻訳テキストの位置の自動的な発見のための例示的プロセス200を示すフローチャートを示している。プロセス200は、ハードウェア(例えば回路、専用ロジック、プログラム可能ロジック、マイクロコード等)、ソフトウェア(例えば処理デバイス上で実行する命令)又はそれらの組合せを含み得る処理ロジックによって実行されてよい。
【0036】
本明細書で提供される開示を実施するために必ずしもすべてのステップが必要とされるわけではないことが認識されよう。さらに、当業者によって理解されるように、ステップのいくつかは同時に実施されてもよく、図2に示されるものと異なる順序で実施されてもよい。プロセス200は、図2及び図5を参照して説明する。しかしながら、プロセス200は、これらの例示的な実施形態に限定されない。
【0037】
202において、少なくとも1つのプロセッサ404は、UI出力を、コードベースインデックス内の対応するローカライゼーションオブジェクトに関連付けることができる。一実施形態では、コードベースインデックスは、例えばテキスト文字列、イメージ、アニメーション、ビデオ、サウンド等のUI出力を、コードベース内の対応する位置でクロスリファレンス又はインデックス化するために使用され得る情報が取り込まれる、テキストファイル、データストリーム、データベース又は他のデータ構造であってよい。
【0038】
コードベースは、例えばリポジトリであってもよく、あるいはプログラムソースコードのための第1リポジトリと、ローカライゼーションデータ、翻訳ファイル、キー値ペア、プロファイル等のための第2リポジトリのような複数のリポジトリを含んでもよい。いくつかの実施形態において、ローカライゼーションオブジェクトは、例えば翻訳ファイル又はプロファイル全体、例えば翻訳ファイル又はプロファイルにおける所与のキー値ペア、あるいはそれらの任意のセット又は組合せといった、そのようなローカライゼーションデータのコンテンツの任意のインスタンスであってよい。
【0039】
いくつかの実施形態において、この第2リポジトリのコンテンツは、例えば第1リポジトリ内の(サブ)ディレクトリとして又は第1リポジトリのブランチ内に存在してもよい。プロセス200の目的のために、他のプログラムコードに関するローカライゼーションオブジェクトの相対的な位置は、プロセス200の全体的な効果を変更することなく、異なる実施形態にわたって異なってもよい。
【0040】
UI出力をコードベースインデックス内の対応するローカライゼーションオブジェクトに関連付けるために、プロセッサ404は、コードベースインデックス内の少なくとも1つのエントリを作成、追加又は修正し、いくつかの実施形態では、(例えばテキスト文字列の識別情報又はコンテンツによって、かつ/又は包含しているメモリ位置へのリファレンス又はポインタによって)所与のUI出力を識別し、識別された所与のUI出力をコードベース内の少なくとも1つの特定の位置にリンクすることができる情報をコードベースインデックスに提供する。コードベース内の特定の位置は、いくつかの非限定的な例を提供するため、例えば所与のパス名、ファイル名、行番号、列番号、範囲又はそれらの任意の組合せを含んでよい。
【0041】
204において、プロセッサ404は、コードベースインデックスに対応するコードベースにおいて、一意の識別子の第1インスタンスを、UI出力に対応する、当該一意の識別子の第2インスタンスとマッチングする。一実施形態では、一意の識別子の第1インスタンスは、ローカライゼーションデータを含むコードベース内に存在してもよく、その場合、一意の識別子の第1インスタンスは、例えばローカライズプロファイル又は翻訳ファイル内のキー値ペアのキーであってもよい。
【0042】
別に、UI出力に対応する一意の識別子の第2インスタンスは、例えばウェブページ、ウェブアプリケーション、出力ファイル、プリントアウト又は他の出力における出力のためにレンダリングされ得るコード内のコール(call)又はリファレンスであってよく、したがって、そのような対応する出力のためにレンダリングされ得るコードは、いくつかの例として、一意の識別子に対応するデリファレンス値に従って出力を可能にするよう、ハイパーテキストマークアップ言語(HTML)、拡張可能マークアップ言語(XML)ユーザインタフェース言語(XUL)、あるいは実質的に任意の他の言語のコール(システムコール、ライブラリコール、関数コール等)であってよい。
【0043】
したがって、一実施形態では、一意の識別子の第2インスタンスは、出力関数又はレンダリングフィールドへの引数であってもよく、マッチングは、ローカライゼーションプロファイルにおける対応するキーのテキスト文字列についてであってもよく、この場合、対応するキーは、一意の識別子の第1インスタンスを含んでもよい。そのようなシナリオでは、実際の出力は、例えばローカライゼーションプロファイルのキー値ペア内のマッチングしたキーに対応する値を含んでもよい。キー値ペアは、この場合、上述のように、ローカライゼーションオブジェクトであると見なされてよい。
【0044】
206において、プロセッサ404は、UI出力が、所与のコンテキストにおいて不正確であるという決定に応答して、UI出力の対応するローカライゼーションオブジェクトへのリファレンスを取り出してよい。一実施形態では、その決定は、プルーフリーダ、トランスレータ、UI/UX(ユーザ体験)設計者、ソフトウェアテスター及び/又はソフトウェアディベロッパ等のローカライズ専門家による手動決定であってよい。他の実施形態において、その決定は、UI出力の所与のコンテキストにおいてエラーや誤って翻訳されたテキストを識別する、複数の潜在的なテスト条件のうちの少なくとも1つに基づく自動決定であってもよい。
【0045】
所与のコンテキストにおいてUI出力が不正確である例は、一実施形態では、例えば格変化(case declension)の不一致、数の不一致、性別の不一致等の結果として、名詞-形容詞の一致又は主語-動詞の一致の欠如であり得る。一実施形態では、このような不正確な翻訳は、いずれか1つのローカライゼーションオブジェクトそれ自体には存在せず、むしろ、ローカライゼーションオブジェクトの組合せにおいて存在することがあり、この場合、組合せのローカライゼーションオブジェクトのうちの1つ以上のローカライゼーションオブジェクトは、例えばローカライゼーションオブジェクトの組合せのコンテキストのような所与のコンテキストにおいて、UI出力を不正確なものにする可能性がある。
【0046】
コンテキストが役に立つ別の例は、UI出力が多義性又は多義語を含み得る場合である。ローカライゼーションは、ソーステキストで使用される多義語のあいまいさをなくすために、コンテキストを必要とすることがある。いくつかの実施形態によれば、「顧客(customer)」という用語に対して特別な取扱いが使用されてよく、この用語は、他の事業体のような会社のクライアントを指すことがあり、あるいは別個に電子商取引サイトの最終消費者を指すこともあり、「顧客」という用語のこれらの意味は、たとえそれらが、アプリケーションが開発され得るネイティブのソースロケールにおいて同じように扱われるとしても、いくつかのロケールにおいて区別され得る。所与のアプリケーションで実際に現れるようなUI出力の十分なコンテキストがなければ、場合によっては、いくつかのローカライゼーションの効果的で成功したレビューが困難又は不可能になる可能性がある。
【0047】
したがって、いくつかの実施形態では、ローカライゼーションのテストは、パターンマッチング、ヒューリスティック、ニューラルネットワーク、人工知能、機械学習、他の適用可能なアルゴリズム又はこれらの任意の組合せによって自動化されてよく、これにより、例えば所与のローカライゼーション対象言語のローカライズされたUI出力で見られる可能性がある文字列のコンテキスト非依存連結(context-insensitive concatenation)又は他のコンテキスト不一致のテキストによる不完全な合意(faulty agreement)の頻繁なパターンを識別するために、ルールを適用することによって、エラー又は潜在的に不正確なテキストにフラグを立てることができる。そのようなパターンは、所定の曖昧なテキスト文字列として指定され得る他の可能性に加えて、既知の漠然とした言語とみなされることがあり、そのような所定の曖昧なテキスト文字列は、テストされているUI出力と比較され得る。
【0048】
更なる実施形態において、UI出力が所与のコンテキストにおいて不正確であるという決定は、不正確性を完全に確信するものである必要はなく、例えばテキストが不正確である又は不正確である可能性があるという閾値に対する信頼性又は確率のレベルであってもよい。テキスト又は翻訳テキストが画像、ビデオ又はオーディオ出力のコンテンツであり得る実施形態では、例えばプロセッサ404は、メタデータタグ、光学式文字認識(OCR)、コンテンツベースの取り出し、コンテンツベースの指紋又は署名、スピーチトゥテキスト変換又は他の手段を使用して、ローカライゼーションオブジェクトのコンテンツを識別して潜在的に不正確なテキストにフラグを立てることができる。
【0049】
加えて、206において、UI出力の対応するローカライゼーションオブジェクトへのリファレンスを取り出すために、プロセッサ404は、ローカライゼーションオブジェクトに対応するUI出力のためにレンダリングされてよく、したがって、UI出力に対応する一意の識別子の第2インスタンスを含む、ソースコードファイル又はマークアップファイルのうちの少なくとも一方を識別するように更に構成されてよい。
【0050】
一実施形態では、ソースコードファイル又はマークアップファイルの識別は、UI出力に対応する一意の識別子の第1及び第2インスタンスの両方をデリファレンスするために、コードベースインデックス内で既にクロスリファレンスされていることがあり、それによって、UI出力に対応する、対応するローカライゼーションオブジェクトへのリファレンスを取り出す。しかしながら、一意の識別子の2番目のインスタンスがまだクロスリファレンスされていない場合には、一意の識別子の第2インスタンスを含むソースファイル又はマークアップファイルの識別を、例えば一意の識別子の第2インスタンスにつながるファイルパス、ファイル名(filename)、ナビゲーションパス及び/又はURLを決定することによって行うことができる。
【0051】
上記206に関して実証されているように、UI出力の対応するローカライゼーションオブジェクトへの「リファレンス」は、いくつかの実施形態において、ローカライゼーションオブジェクトへのコール(例えば一意の識別子の第2インスタンスを使用する関数引数)及び/又はそのコールの位置(例えばコールを含む/コールを呼び出すソースファイル、マークアップファイル、URL等のパス)を指すことがある。
【0052】
したがって、リファレンスの取り出しは、ソースコードリポジトリ及び/又はローカライゼーションリポジトリ等におけるテキストの位置の識別子を(例えば実行パス又は取り出しパスの分解(resolution)から)決定すること又は(例えばインデックス内のクロスリファレンスエントリから)ロードすることを含み得る。そのようなテキストの位置は、例えば所与のローカライゼーションオブジェクトについてコンテキストの決定を行うために、更に探索又は分析され得る。テキスト(例えば元のテキスト又は翻訳されたテキスト)の位置の識別子は、いくつかの実施形態において、所与のパス名、ファイル名、行番号、列番号、範囲又はそれらの任意の組合せを含んでよい。
【0053】
208において、プロセッサ404は、対応するローカライゼーションオブジェクトへのリファレンスを出力することができる。いくつかの実施形態では、出力は、不正確なUI出力の手動又は自動処理のために、ウェブブラウザ、デバッグツール、翻訳ツール又はそれらの任意の組合せに対するものであってよい。いくつかの実施形態において、出力は、対応するローカライゼーションオブジェクトへのリファレンスを、追跡システム、チケッティングシステム、バグ報告システム又は問題報告システム又は問題追跡システムのチケットにコピーすることを含んでもよく、例えばいくつかの非限定的な例には、Bugzilla、Trac、Jira、Redmine等が含まれる。
【0054】
このような場合、リファレンスは、一意の識別子の第2インスタンスを含むソースコード又はマークアップコードのコピー、ローカライゼーションオブジェクトのリテラル又は短縮再現、一意の識別子の第2インスタンスが見つかった対応するソースコードファイル又はマークアップファイルの位置(パス、URL等)又は上記の任意の組合せを含んでもよい。更なる実施形態において、コンテキストはまた、同一又は類似の出力で再現され得る。
【0055】
206、208及び/又はプロセス200の他の側面の目的のために、コードベースは、所与のコンテキストにおいて一意の識別子(その任意のインスタンス)を含むような方法で構造化されてよい。しかしながら、ローカライゼーションオブジェクトのコンテキストは、その実際に表示されるUI出力であるため、そのリファレンスを用いてコードベース内で見つかるような一意の識別子自体のコンテキストからは、容易には明らかではない可能性がある。いくつかの実施形態では、コードベースが所与のコンテキストにおいて一意の識別子を含むように構造化される場合であっても、コードベース又はアプリケーションのテストは、UI出力のコンテキストを決定するために必要とされることがあり、したがって、任意の対応するコードを実行又はレンダリングして、ローカライゼーションオブジェクトのUI出力コンテキストを決定する。
【0056】
グラフィカルユーザインタフェース(GUI)ベース又はウェブアプリケーションテストを含む実施形態では、手動又は自動テストは、所与のコンテキストでUI出力に対応するスクリーンショットをキャプチャすることを更に含んでもよい。このようなキャプチャされたスクリーンショットは、場合によっては、チケットの一部として、チケッティングシステム、問題追跡システム又はバグ追跡システムに追加的に提示されてもよい。さらに、そのようなキャプチャされたスクリーンショットは、例えばコードベース内のソースコードから容易に入手できない追加のコンテキストを含むことがある。
【0057】
いくつかのローカライゼーションオブジェクトの他の例は、いくつかの実施形態では、複数のレベルをメニューシーケンス、ウェブサイト又はウェブアプリケーションの中へ深くナビゲートすることによってのみ、アクセス可能であり得る。したがって、マルチレベルナビゲーションパスは、それに従うと、あるローカライゼーションオブジェクトの何らかの特定のコンテキストをもたらすことができ、その場合、そのコンテキストは、他の方法では、例えばテキスト検索や近接検索によって単純にはコードベースから容易に入手可能でない可能性がある。加えて、このようなマルチレベルのナビゲーションパスは、ブレッドクラムで表すことができる。所与のテストのためのマルチレベルナビゲーションパスを表すブレッドクラムは、例えばテストシステム、デバッグツールのキャパシティ内で機能するか、テスト中のウェブサイト又はウェブアプリケーションの通常動作の一部として、プロセッサ404によって生成されてもよい。
【0058】
いくつかの実施形態では、テストは、フォームフィールド入力検証を含んでもよい。例えばいくつかのローカライゼーションオブジェクトは、アプリケーションの静的ページやデフォルト出力を介して直接アクセス可能でないことがある。代わりに、そのようなローカライゼーションオブジェクトは、フォームフィールドを介して入力される有効及び/又は無効な入力値のような一定の入力を処理するときにのみ、それらのローカライゼーションオブジェクト自身を提示してもよい。このような場合、フォームフィールド検証による自動テストは、テスト時間とコードカバレッジを改善し、さもなければコードベースから直接アクセスすることが難しい可能性があるコンテキスト情報を得ることができる。
【0059】
約1,300個のHTMLテンプレートファイルと約28,000個のキー(例えば文字列内に115,000個のワードを有する)のウェブプラットフォームに、本明細書に開示される強化された技術を適用するいくつかの利点の例として、一実施形態によると、この場合、ユーザ(又はテスター)に対して表示され得る別個のウェブページの数は約千個であり、これは、例えば複数のページにおけるテンプレートファイルの再利用及び/又はいくつかのページが複数のテンプレートファイルにわたることを説明する。いくつかのページが、表示について複数の状態を有することがある(例えば最初にページにナビゲートしたときの第1状態、無効なデータの入力の後にエラーメッセージを受け取ったときの第2状態、有効なデータを入力したときの第3状態等)。したがって、所与の別個のページをテストするために、ウェブプラットフォームのテストは、別個のインタラクションとしてページ自体をナビゲートすること以外に、平均して2つの追加のインタラクションを必要とし得る。したがって、この例示的なウェブプラットフォームの完全なテストは、テスターによる手動又は自動の完全な三千個のインタラクションを必要とし得る。
【0060】
手作業のテストの場合、上述のウェブプラットフォームの例を用いると、所定のインタラクションは、平均して1回に約1分を要する可能性がある。インタラクションには、ボタンのクリック又はタッピング、入力のための有効な及び/又は無効なデータの準備(アップロードのためのテキスト及び/又はファイルを含む)、入力データのコピー、有効なデータの入力、無効なデータの入力、ページURL及び/又はブレッドクラムの記録、所与のページ及び/又は入力のためのUI出力の記録が含まれる。UI出力自体の記録に加えて、ローカライズされたWebアプリケーションでは、ローカライゼーションオブジェクトをローカライズされたWebアプリケーションのUI出力の一部として識別するために、対応するローカライズキーも(例えばコードベース内のキーの識別及び/又は位置によって)記録され得る。キーを記録することは、キー情報及びページ/位置情報を別のデータベース又はスプレッドシートにコピーする必要があり得るため、キーを記録することは、各キーについて更に15秒を要する場合がある。所与のページは、例えば平均して30個のキーを参照することがある。
【0061】
ここで、各キーが15秒かかると仮定すると、平均的なページについて完全に記録するには、30個のキーは、約450秒、つまり7.5分かかる。ページインタラクションを実行するために1分(60秒)を追加すると、各ページを完全にレビューするのに平均で510秒、つまり8.5分かかることになる。したがって、3,000ページのウェブプラットフォームでは、サポートされる各言語又はロケールについて、ローカライズされたウェブアプリケーションの所与のインストールをテストするために、完全なローカライゼーションレビュー(テスト)は、レビューアとして役割を果たす少なくとも1人のテスター、ディベロッパ、トランスレータ、ローカライゼーションの専門家又はそれらの組合せ等による手動レビューの合計時間の3,000×8.5分=25,500分、つまり425時間を必要とする可能性がある。
【0062】
加えて、所定のウェブプラットフォーム又はウェブアプリケーションに対する更新が、コードベース全体を通してテキスト又はイメージを完全に修正しない場合であっても、ローカライゼーションテストは依然として、最初の開発段階とほぼ同じ時間を要する可能性がある。なぜなら、そうでなければ、修正されたテキスト(又は修正された翻訳されたテキスト)がどのページに現れ得るかを知ることができないためである。したがって、テスターは、更新を実行するときに、所与のインストールのほとんど又はすべてのページをナビゲートする必要がある可能性があり、その結果、いくつかのユースケースでは、ローカライズされたアプリケーションを維持するために、作業時間とコストの持続不可能な増加をもたらす。したがって、本明細書に開示されるように、UI出力に対応するクロスリファレンスのローカライゼーションオブジェクトを使用する自動のテストは、ローカライズされたアプリケーションの操作、維持及び性能にかなりの利点をもたらす可能性がある。
【0063】
テストは、例えば様々なツール、フレームワーク又は方法を用いて自動化されてよい。コードベースは、いくつかの実施形態では、静的分析等によって検証されてもよい。他の実施形態では、結果として得られるアプリケーションは、いくつかの場合には、実際の出力に焦点を当てて、動的に分析されもよい。ウェブアプリケーション又はある種の他のGUIアプリケーションの場合、いくつかの非限定的な例を挙げると、Selenium、Capybara、Watir、Robot Framework、xUnit又はそれらの任意の組合せを含む、テスト自動化のための特別なフレームワークが使用されてよい。更なる実施形態では、そのような自動化されたテストは、連続的な統合、連続的な展開、連続的な配信又はそれらの任意の組合せを含むアプローチの一部として実施されてよい。
【0064】
特定のアプリケーションの段階と成熟度、あるいは国際化能力や具体的な地域化における特定の進歩に応じて、例えば特定のソフトウェアテスト方法やパラダイムが並行に又は連続して使用されてよい。国際化及びいくつかの具体的な地域化に関して、そのようなプロジェクトの成熟度又は進歩を評価する追加的な例を以下で更に説明する。
【0065】
グローバルソフトウェア開発の評価のための国際化成熟度モデル
自分たちの製品のグローバル展開を支援するためのコードの成熟度を評価する構造化された方法がなければ、グローバル市場向けのソフトウェアを生産するロケール特有の市場(locale-specific markets)で働く開発チームは、彼らが直面することが予想され得る多様な技術を扱う準備ができていない可能性がある。この国際化成熟度モデルは、開発チームが、異なるロケールで動作するコードの能力に関して、自分たちの立場を評価することを可能にし、また、あるレベルから次のレベルまでのチームをガイドすることを助けるように自己ガイド調査としても機能することができる。
【0066】
一般的な質問(下記を参照されたい)、並びにエンコーディングの使用、ユニコード/CLDRのサポート又は他のロケールプロバイダクラス、ライブラリ等に関するテクノロジーごとの質問に対する回答は、開発チームが自己評価して、追加言語で次のレベルのグローバルなサポートを提供するために何をすべきかを認識することを可能にすることができる。
【0067】
1つの例示的な実施形態として、国際化(i18n)成熟度モデルは、例えば米国中心の開発チームのために、図3に示されるように現れてよい。例えば多言語化(m17n)能力、i18n能力、組織化ステータス(organizational status)、ローカライゼーション(地域化)(l10n)ステータス等のような様々な次元のいずれかにおいて成熟度のレベルの評価又は決定が行われてもよく、自動的に生成されてもよい。いくつかの実施形態では、例えばアプリケーション又はプロジェクト全体から、アプリケーション内の所与のモジュール又はサブプロジェクトの成熟度レベルを示し得る、問題の自動化フラグ付けを含む、手動又は自動テストの様々なフェーズに統合される。図3は、1つの非限定的な実施例を示しているが、この実施例に従って実質的に任意の数の組合せ、カテゴリ、寸法等が可能である。
【0068】
プロジェクトのi18n/l10nの成熟度を評価するために開発チームに対する一般的な質問の非網羅的で非限定的なリストは、以下を含んでよい:
【0069】
パート1 - 般的なI18nの準備の評価
【0070】
1)現在、異なるロケール又は言語のエンドユーザをどのようにサポートしているか?
【0071】
(a)言語セレクタ又はロケールセレクタはあるか?
【0072】
(b)エンドユーザは、所望の言語を見つけるために何をしなければならないか?
【0073】
2)UI言語とデータロケールを区別しているか?
【0074】
3)コードと、言語又はロケール(l10n)は異なるリポジトリに分離されているか?
【0075】
(a)UI言語に変更が行われる場合、コードは再構築する必要があるか?
【0076】
4)外国語の展開(deployment)はどのように機能するか?
【0077】
5)言語はどのようにレンダリングされるのか?
【0078】
(a)ランタイム時に言語パックから、あるいは各言語はコードバージョンか?
【0079】
6)擬似ローカライゼーション(pseudolocalization)は、リリース前に特徴を修飾するために一貫して使用されているか?
【0080】
7)ディベロッパはi18nの要件を認識し、訓練されているか?
【0081】
8)i18nの欠点(defects)はどのように追跡されるのか?
【0082】
(a)言語上の問題と分離されているか?
【0083】
9)適切なi18nをサポートするために、もしあれば、どの程度の自動化が利用可能か?
【0084】
10)連続的な統合及び開発モデル(continuous integration and deployment model)において、l10nが説明されているか?
【0085】
11)テキストはグラフィックスから分離されているか?
【0086】
(a)グラフィックスは文化的に認識される(culturally aware)か?
【0087】
(b)異なるロケールに対して異なるグラフィックスをサポートすることができるか?
【0088】
12)外国人ユーザのためのフィードバック機構はあるか?
【0089】
(a)l10n問題についての専用のフィードバック機構が存在するか?
【0090】
パート2:技術特有のレベル評価及びガイダンス(図4
【0091】
図4は、1つの非限定的な例示の実施形態による、テスト中のJava(登録商標)ウェブアプリケーションのi18n成熟度の例示的評価を示すチャートを示している。この特定の例では、6つの成熟度レベルのテンプレートが、元々はブランクリストとして、Javaアプリケーションの構成設定の対応するリストとともに提供される。
【0092】
ディベロッパ、テスター、あるいは自動テストツール又はテストスイートは、構成設定のブランクリストの適切なエントリを、対応する構成設定の適切な成熟度レベルに対応する構成設定リストの部分における既存の構成設定又は推奨される構成設定で埋めることがある。図4は、1つの非限定的な実施例を示しているが、この実施例に従って実質的に任意の数の組合せ、カテゴリ、寸法等が可能である。
【0093】
例示のコンピュータシステム
様々な実施形態は、例えば図5に図示されるコンピュータシステム500のような1つ以上の周知のコンピュータシステムを使用して実装されてよい。1つ以上のコンピュータシステム500を使用して、例えば本明細書で説明される実施形態のいずれか、並びにそれらの組合せ及び副次的組合せを実装することができる。
【0094】
コンピュータシステム500は、プロセッサ504のような1つ以上のプロセッサ(中央処理ユニット又はCPUとも呼ばれる)を含んでよい。プロセッサ504は、バス又は通信インフラストラクチャ506に接続されてよい。
【0095】
コンピュータシステム500はまた、モニタ、キーボード、ポインティング・デバイス等のユーザ入力/出力デバイス503も含んでよい。ユーザ入力/出力デバイス503は、ユーザ入力/出力インタフェース502を通して通信インフラストラクチャ506と通信することができる。
【0096】
1つ以上のプロセッサ504は、グラフィックス処理ユニット(GPU)であってよい。一実施形態において、GPUは、数学的に集約的なアプリケーションを処理するように設計された専用の電子回路であるプロセッサであってよい。GPUは、コンピュータグラフィクスアプリケーション、画像、ビデオ、ベクトル処理、アレイ処理等に共通の数学的に集約的なデータのようなデータの大きなブロックの並列処理、並びに暗号化(ブルートフォースクラッキングを含む)、暗号ハッシュ又はハッシュシーケンスの生成、部分的ハッシュ反転問題の解決及び/又は例えばいくつかのブロックチェーンベースのアプリケーションのための他のプルーフオブワークの計算の結果の生成等に効率的な並列構造を有してもよい。
【0097】
加えて、プロセッサ504のうちの1つ以上は、ハードウェア加速暗号コプロセッサを含め、暗号計算又は他の特別な数学的機能を加速するためのコプロセッサ又は他のロジックの実装を含んでもよい。そのような加速プロセッサは更に、そのような加速を容易にするために、コプロセッサ及び/又は他のロジックを使用する加速のための命令セットを含むことができる。
【0098】
コンピュータシステム500はまた、ランダム・アクセス・メモリ(RAM)のようなメイン又は一次メモリ508を含んでもよい。メインメモリ508は、キャッシュの1つ以上のレベルを含んでよい。メインメモリ508は、制御ロジック(すなわち、コンピュータソフトウェア)及び/又はデータをその中に記憶することができる。
【0099】
コンピュータシステム500はまた、1つ以上の二次ストレージデバイス又は二次メモリ510も含んでもよい。二次メモリ510は、例えばメインストレージドライブ512及び/又は取り外し可能ストレージデバイス又はドライブ514を含んでもよい。メインストレージドライブ512は、例えばハードディスクドライブ又はソリッドステートドライブであってもよい。取り外し可能ストレージドライブ514は、フロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ、光ストレージデバイス、テープバックアップデバイス及び/又は他のストレージデバイス/ドライブであってよい。
【0100】
取り外し可能ストレージドライブ514は、取り外し可能ストレージユニット518と対話してよい。取り外し可能ストレージユニット518は、その上に記憶されたコンピュータソフトウェア(制御ロジック)及び/又はデータを有するコンピュータ使用可能又は読取可能ストレージデバイスを含んでもよい。取り外し可能ストレージユニット518は、フロッピーディスク、磁気テープ、コンパクトディスク、DVD、光ストレージディスク及び/又は任意の他のコンピュータデータストレージデバイスであってもよい。取り外し可能ストレージドライブ514は、取り外し可能ストレージユニット518との間で読み取り及び/又は書き込みを行うことができる。
【0101】
二次メモリ510は、コンピュータプログラム及び/又は他の命令及び/又はデータがコンピュータシステム500によってアクセスされることを可能にするための他の手段、デバイス、コンポーネント、機器又は他のアプローチを含んでもよい。そのような手段、デバイス、コンポーネント、機器又は他のアプローチは、例えば取り外し可能ストレージユニット522及びインタフェース520を含んでもよい。取り外し可能ストレージユニット522及びインタフェース520の例は、プログラムカートリッジ及びカートリッジインタフェース(ビデオゲームデバイスで見られるようなもの等)、取り外し可能メモリチップ(EPROM又はPROM等)及び関連ソケット、メモリスティック及びUSBポート、メモリカード及び関連メモリカードスロット及び/又は他の取り外し可能ストレージユニット及び関連インタフェースを含んでもよい。
【0102】
コンピュータシステム500は、通信又はネットワークインタフェース524を更に含んでもよい。通信インタフェース524は、コンピュータシステム500が、(個々に、そして集合的に参照番号528によって参照される)外部デバイス、外部ネットワーク、外部エンティティ等の任意の組合せと通信して対話することを可能にする。例えば通信インタフェース524は、コンピュータシステム500が、通信パス526を介して外部又はリモートデバイス528と通信することを可能にする。通信パス526は、有線及び/又は無線(又はそれらの組合せ)であってもよく、LAN、WAN、インターネット等の任意の組合せを含んでもよい。制御ロジック及び/又はデータは、コンピュータシステム500へ及びコンピュータシステム500から通信パス526を介して送信されてよい。
【0103】
コンピュータシステム500はまた、いくつかの非限定的な例を挙げると、パーソナル・デジタル・アシスタント(PDA)、デスクトップ・ワークステーション、ラップトップ又はノートブックコンピュータ、ネットブック、タブレット、スマートフォン、スマート・ウォッチ又は他のウェアラブル、アプライアンス、モノのインターネット(IoT)の一部及び/又は組み込みシステム、あるいはこれらの任意の組合せのいずれかであってもよい。
【0104】
コンピュータシステム500は、任意の配信パラダイムを介して任意のアプリケーション及び/又はデータにアクセス又はこれをホストする、クライアント又はサーバであってよい。そのような配信パラダイムは、これらに限られないが、リモート又は分散クラウド・コンピューティング・ソリューション;ローカル又はオンプレミス・ソフトウェア(例えば「オンプレミス」クラウド・ベースのソリューション);「アズ・ア・サービス(as a service)」モデル(例えばコンテンツ・アズ・ア・サービス(CaaS)、デジタルコンテンツ・アズ・ア・サービス(DCaaS)、ソフトウェア・アズ・ア・サービス(SaaS)、管理ソフトウェア・アズ・ア・サービス(MSaS)、プラットフォーム・アズ・ア・サービス(PaaS)、デスクトップ・アズ・ア・サービス(DaaS)、フレームワーク・アズ・ア・サービス(FaaS)、バックエンド・アズ・ア・サービス(BaaS)、モバイルバックエンド・アズ・ア・サービス(MBaaS)、インフラストラクチャ・アズ・ア・サービス(IaaS)、データベース・アズ・ア・サービス(DBaaS);及び/又は上記の例又は他のサービス又は配信パラダイムの任意の組合せを含む、ハイブリッド・モデルを含む。
【0105】
任意の適用可能なデータ構造、ファイルフォーマット及びスキーマは、これらに限られないが、JSON(JavaScript(登録商標)Object Notation)、XML(Extensible Markup Language))、YAML(Yet Another Markup Language)、XHTML(Extensible Hypertext Markup Language)、WML(Wireless Markup Language)、MessagePack、XUL(XML User Interface Language)又は他の任意の機能的に類似した表現を単独で又は組合せで含む規格から導出されてよい。あるいは、専用のデータ構造、フォーマット又はスキーマが排他的に、あるいは既知の又はオープンの規格との組合せで使用されてもよい。
【0106】
任意の関連するデータ、ファイル及び/又はデータベースは、他の可能なフォーマットの中でも特に、数値、テキスト、グラフィック又はマルチメディアフォーマットのような人間が読むことができるフォーマットで記憶、検索、アクセス及び/又は送信されてよく、更には様々なタイプのマークアップ言語を含んでもよい。代替的に又は上記のフォーマットと組み合わせて、データ、ファイル及び/又はデータベースは、バイナリ、エンコード、圧縮及び/又は暗号化フォーマットで、あるいは任意の他の機械読み取り可能フォーマットで記憶、検索、アクセス及び/又は送信されてよい。
【0107】
種々のシステム及び層間のインタフェース又は相互接続は、任意の数のプロトコル、プログラムフレームワーク、フロアプラン又はアプリケーション・プログラミング・インタフェース(API)のような任意の数のメカニズムを用いることができ、これらには限定されないが、DOM(Document Object Model)、DS(Discovery Service)、NSUerDefaults、WSDL(Web Services Description Language)、MEP(Message Exchange Pattern)、WDDX(Web Distributed Data Exchange)、WHATWG(Web Hypertext Application Technology Working Group)、HTML5 Web Messaging、REST(Representational State Transfer)、XUP(Extensible User Interface Protocol)、SOAP(Simple Object Accesss Protocol)、XSD(XML Schema Definition)、XML-RPC(XML Remote Procedure Call)又は同様の機能及び結果を達成することができる任意の他の機構、オープン又は専用を含む。
【0108】
このようなインタフェース又は相互接続は、ユニフォームリソース識別子(URI)も使用してよく、これはユニフォームリソースロケータ(URL)又はユニフォームリソース名(URM)を更に含んでもよい。むことができる。他の形態のユニフォーム及び/又は一意の識別子、ロケータ又は名前が排他的に、あるいは上記の形態等との組合せで使用されてよい。
【0109】
上記のプロトコルやAPIはいずれも、任意のプログラミング言語、プロシージャ、関数又はオブジェクト指向とインタフェースするか、これらで実装されてもよく、コンパイル又は解釈されてよい。非限定的な例としては、多くの他の非限定的な例の中でも特に、C、C++、C#、Objective-C、Java(登録商標)、Swift、Go、Ruby、Perl、Python、JavaScript(登録商標)、WebAssembly、あるいは、これらに限定されないが、Node.js、V8、Knockout、jQuery、Dojo、Dijit、OpenUI5、AngularJS、Express.js、Backbone.js、Ember.js、DHTMLX、Vue、React、Electron等を含め、任意の他のライブラリ又はスキーマを有する任意の種類のフレームワーク、ランタイム環境、仮想マシン、インタプリタ、スタック、エンジン又は同様のメカニズムの仮想的な任意の他の言語を含む。
【0110】
いくつかの実施形態において、その上に記憶された制御ロジック(ソフトウェア)を有する、有形の非一時的な装置、あるいは有形の非一時的なコンピュータ使用可能又は読取可能な媒体を含む製品は、本明細書において、コンピュータプログラム製品又はプログラムストレージデバイスと呼ばれることがある。これには、コンピュータシステム500、メインメモリ508、二次メモリ510及び取り外し可能ストレージユニット518及び522、並びに上記のいずれかの組み合わせを具体化する有形物品が含まれるが、これらに限定されない。そのような制御ロジックは、1つ以上のデータ処理デバイス(コンピュータシステム500等)によって実行されると、そのようなデータ処理デバイスに本明細書で説明されるように動作させることができる。
【0111】
本開示に含まれる教示に基づいて、図5に示されているもの以外のデータ処理デバイス、コンピュータシステム及び/又はコンピュータ・アーキテクチャを用いて、本開示の実施形態をどのように作成して使用するかは、当業者には明らかであろう。特に、実施形態は、本明細書で説明されるもの以外のソフトウェア、ハードウェア及び/又はオペレーティングシステムの実装で動作することもある。
【0112】
結論
詳細な説明のセクションは、他のセクションではなく、請求項を解釈するために使用されるよう意図されていることが理解されるべきである。他のセクションは、本発明者によって考慮される必ずしもすべての例示の実施形態ではなく、その1つ以上を説明している可能性があり、したがって、本開示又は添付の特許請求の範囲を何らかの形で制限するようにも意図されていない。
【0113】
本開示は、例示的な分野及び用途の例示的な実施形態を記載しているが、本開示はそれに限定されないことを理解されたい。他の実施形態及びそれに対する修正が可能であり、本開示の範囲及び精神内にある。例えばこの段落の一般性を制限することなく、実施形態は、図面に示される及び/又は本明細書に記載されるソフトウェア、ハードウェア、ファームウェア及び/又はエンティティに限定されない。さらに、実施形態(本明細書に明示的に記載されているか否かにかかわらず)は、本明細書に記載されている実施例を超える分野及び用途に対して有意な有用性を有する。
【0114】
本明細書では、実施形態は、特定の機能の実装及びそれらの関係を示す機能的構成ブロックを用いて説明されている。これらの機能的構成要素の境界は、本説明の便宜上、本明細書中で任意に定義されている。特定の機能及び関係(又はそれらに相当するもの)が適切に実行される限り、代替境界が定義されてもよい。また、代替の実施形態は、本明細書に記載されるものとは異なる順序を使用して、機能ブロック、ステップ、動作、方法等を実行してもよい。
【0115】
本明細書において、「一実施形態」、「ある実施形態」、「例示の実施形態」、「いくつかの実施形態」又は同様のフレーズへの言及は、説明される実施形態が特定の特徴、構造又は特性を含み得るが、必ずしもすべての実施形態がその特定の特徴、構造又は特性を含み得るとは限らないことを示す。なお、そのようなフレーズは、必ずしも同一の実施形態を指すものではない。
【0116】
さらに、特定の特徴、構造又は特性が実施形態に関連して説明されるとき、そのような特徴、構造又は特性を、本明細書に明示的に記載又は説明されているか否かにかかわらず、他の実施形態に組み込むことは、当業者の知識の範囲内であろう。加えて、いくつかの実施形態は、「結合された」及び「接続された」という表現をそれらの派生語とともに用いて説明されることがある。これらの用語は、必ずしも互いに同義語として意図されているわけではない。例えばいくつかの実施形態は、2つ以上の要素が互いに直接的に物理的又は電気的に接触していることを示すために、「接続された」及び/又は「結合された」という用語を使用して説明されることがある。しかしながら、「結合された」という用語は、2つ以上の要素が互いに直接接触していないが、依然として互いに協力又は相互作用していることも意味することがある。
【0117】
本開示の広さび範囲は、上述の例示的な実施形態のいずれによっても制限されるべきではなく、以下の特許請求の範囲及びそれらの均等物のみに従って定義されるべきである。
図1
図2
図3
図4
図5