QTで翻訳機能を試してみます。 1つの言語で4,000以上の翻訳を完了する必要があります。 15を超える言語でこれを行う必要があります。だから私はlanguage.ts
シェルスクリプトを介してファイルを作成することにしました。正常に作成された後、language.ts
WindowsのNotepad ++でファイルを開くと、ファイルから予想される翻訳が表示されます。たとえば、ブラジル語の場合、翻訳コードlanguage.ts
ファイルは次のようになります。
<message>
<location filename="temp_unit.ui" line="59"/>
<source>Cancel</source>
<translation>Отказ</translation>
</message>
ツールでファイルを開こうとすると、QT Linguist
次のエラーが発生します。
Parse error at lang_Brazil.ts:1:38:Encountered incorrectly encoded content.
[このウェブサイト] [1]で提供されている詳細に従ってエンコード値をutf-8
に置き換えましたISO-8859-1
。これでファイルを開くことができますが、QT Linguist
翻訳に次のような無効な文字が表示されます。 - キャンセルの場合表示されますÎòêàç
(予想翻訳はОтказ
)。
QT言語学者では、なぜ正しく翻訳されないのかを確認してください。一方、notepad++でLanguage.tsファイルを開くと表示できます。 [1]:https://docs.oracle.com/cd/E16764_01/bi.1111/b32121/pbr_nls003.htm
答え1
いくつかの質問があります:
ファイルを生成するためにシェルスクリプトを使用しないでください
.ts
。これには特別なツールがありますlupdate
。あなたは言語を混ぜます。 「ブラジル」のようなものはありません。ブラジルの国はポルトガル語(またはブラジルのポルトガル語のバリエーション)を使用しています。あなたのケースははるかに混乱しています。翻訳が
Отказ
実際にロシア語になっているからです。コードページISO-8859-1はラテンアルファベット用であるため、キリル文字は任意の文字セットで表示されます。ファイルが実際に1バイトエンコーディングの場合、キリル文字を表示するにはISO-8859-5(キリル文字に使用する必要があります)を使用する必要があります。ただし、
Notepad++
文字コードページに正しい文字が表示されるためNotepad++
、Windows-1251も可変長エンコーディング(UTF-8など)を使用できます。この場合、他のエンコーディングを使用することは非常に間違っています。 Notepad ++で「ファイル属性」を見つけたら、エディタが現在使用しているエンコーディングが何であるかを知らせます。
.ts
ファイルの作成方法はこちらをご覧ください。https://doc.qt.io/qt-5/linguist-manager.html
Qt Linguist
ファイル編集の場合.ts
- 正しいコードページをファイルに自動的に配置します。Notepad++
これには、または他のテキストエディタを使用しないでください。少なくとも自分がしていることを正確に知るまで、言語とコードページを混在させないでください。https://doc.qt.io/qt-5/linguist-translators.html