2011-12-14 4 views
17

私の問題です:私たちの製品には9種類の言語の.tsファイルがあります。約100個の新しい文字列を翻訳する必要がありますが、次のリリースにはいくつか、それ以降のリリースにはいくつかのものがあります。私たちは翻訳者が文字列を欠いているか、文字列をあらかじめ翻訳しているという問題に遭遇しました。私たちは今翻訳したい文字列だけを含む小さな.tsファイルを送信し、残りの翻訳を含む大きな.tsファイルにその.tsファイルをマージしたいと考えています。QTユーティリティ(lconvert)を使用して、既存の.tsファイルに翻訳ファイル(.ts)をマージします

私たちの翻訳者は、QT言語学者を使用する必要があります(以前は、珍しい結果よりも少ない生のXMLを編集することができました)。

解決策の1つはコンテキストを使用することですが、私たちの開発チームはあまり考えていません。もう1つは手作業で.tsファイルをマージすることですが、それはカット&の貼り付けエラーのレシピのようです。

lupdate &セカンダリの.tsファイルを追加またはマージするプロジェクトファイルがある方法はありますか?私は答えを見つけることなくQT-landのフォーラムを読んだが、lupdateのスイッチは他の翻訳ファイルを指すことができると言っている。

-pro <filename> 
     Name of a .pro file. Useful for files with .pro file syntax but 
     different file suffix. Projects are recursed into and merged. 

例1:言う具体的-Proスイッチ我々は一次翻訳ファイルが20を含むすべての文字列を含むように独立したドイツ語の翻訳ファイルから20個の文字列を追加したい、ドイツ.TSファイルを持っています新しいもの。

Example2:ドイツ語の.tsファイルがあります。別のドイツ語の翻訳ファイルから20個の文字列を追加して、lupdate中に2次変換ファイルをプライマリとマージして、結果の.qmファイルにすべての新しい20の文字列を含む文字列。

いずれかの人がこれらのいずれかを行っています(どちらもうまくいきます)。

答えて

30

答えはlupdateを使用していません。これはlconvertという別のユーティリティにあります。それは、(プライマリファイルからのものと同じ文字列を削除)のみあなたが興味を持っている文字列を含む二次ファイルを作成するのは非常に簡単ですし、実行します。これはからすべての文字列を取る

lconvert -i primary.ts secondary.ts -o complete.ts

2つの入力ファイルを一緒に出力ファイルに入れます。この方法を使って、私は2つのプライマリ&セカンダリファイルを分割する元のファイルのゼロ差分ファイル(タイムスタンプ以外)を作成することができました。

この質問には多大な注意が払われませんでしたが、誰かが同じ問題を抱えている可能性があります。

2

このチップはありがとうございます。私のケースでは正しく動作しているようです: 私のプロジェクトから現在更新されている新しい文字列を抽出しようとしました。

問題は、新しい/更新された文字列を翻訳者にのみ送信することでした。

Lupdateを使用して新しい文字列を追加し、古い文字列を削除するためにXPath "/ TS/context/message [NOT(translation/@ type)]"を使ってOxygenXML Editorを使用して研究を行い、それを無駄なブランクやキャリッジリターンからきれいにしてください。

解決済みの文字列をマージするために、lconvertを使用してマージしようとしました:古いものと新しいもの。正しく流行し、適切に表示されます。

+2

これはあなたにとってうれしかったです。 SOの礼儀のポイントとして、一般に、答えがあなたのために働くならば、あなたはその答えの上向きの矢印をクリックして、実際にはちょうどいいはずの答えを加えるのではなく、元の答えにコメントしています。しかし、心配はありません。 – delliottg

-3

使用した複数の翻訳

複数の翻訳ファイルをアプリケーションにインストールすることができます。翻訳がインストールされた逆の順序で検索されるので、インストールされた最新の翻訳ファイルがまず翻訳のために検索され、最も早い翻訳ファイルが最後に検索されます。一致する文字列を含む翻訳が見つかるとすぐに検索が停止します。

このメカニズムにより、特定の翻訳を他の言語よりも「選択」または優先させることができます。トランスレータをQApplication :: removeTranslator()関数に渡してQApplication :: installTranslator()で再インストールするだけで、アプリケーションからトランスレータをアンインストールするだけです。一致した文字列を検索する最初の翻訳となります。

プルーフリンク:QTranslator Class Reference

+1

これはまったく問題には触れていません。 – ndbd

関連する問題