問題タブ [internationalization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - コードで大量のテキストを管理する (そして翻訳をサポートする) 最良の方法は何ですか?
私は、多くのテキストと、すべてのビルドに含めることも含めないこともできるさまざまなモジュールを持つアプリケーションを開発しています。
保存されたプロジェクトごとに、すべての詳細 (つまり、そのプロジェクトで使用されているアルゴリズムの説明など) を含むレポートが自動的に生成されます。現在、すべてのテキストを文字列としてソース コードに埋め込み、po および mo ファイルを通じてさまざまな言語もサポートしています。
このシステムの良い点は、ドキュメントとレポート ファイルを動的に生成するのが非常に簡単であることです。悪い点は、ソース コードに大量のテキストがあるのは見苦しく、書式設定 (つまり html を使用) が快適ではないこと、テキストの編集が難しく、簡単なスペル チェックができないこと、翻訳がひどいことです。
最後の質問は、ドキュメントをコードに埋め込むのと、さまざまな言語の外部ドキュメント ファイル (html など) を作成して実行時に解析するのとでは、どちらがよいでしょうか? 明らかに、ソフトウェアのコア テキスト (メッセージ ボックスなど) はコードに残ります。
問題があれば、私は wxWidgets を使用して C++ で作業しています。
objective-c - NSDateFormatterは、ロケール設定を使用して日付を解析しませんか?
ユーザーの日付設定を使用して日付を解析しようとしています
(国際システム環境設定で)自分の地域を米国に設定すると、次のように出力されます。
そして、私の地域がイギリスの場合、次のように印刷されます。
NSDateFormatterはリージョンの変更に影響されないようです。ただし、日付の生の印刷が地域によって適切に切り替わっていることに注意してください。
NSDateFormatterがリージョン設定を尊重するようにするにはどうすればよいですか?
java - 言語サポートを使用してJBossPortalで独自のheader.jspを作成するにはどうすればよいですか?
JBoss Portal 2.6に含まれているファイルの代わりに独自のheader.jspファイルを作成したいのですが、ユーザーが設定したロケールをサポートする必要があります。
元のheader.jspにはi18nが含まれておらず、その方法、特に実際のロケールを取得する方法がわかりません。
php - PHP で複数の言語を翻訳する
私は、多くの言語で入力を受け入れる小さなパーサーに取り組んでいます。入力を解析する際にキーワード/アンカーとして機能するおそらく 50 個の文字列を用意する予定です。PHP では、これらの翻訳されたキーワードを整理する最良の方法は何でしょうか?
考えられる解決策の 1 つは、連想配列を使用することです。このような:
次に、次を使用してアクセスできます。
多数の言語に翻訳された一連の短い文字列を処理するための、より優れた実績のある方法はありますか?
apache - UTF-8 URI が Apache と mod_rewrite を爆発させる
mod_rewrite を使用した Apache を使用していますが、アクセント記号付きの文字を含む URI を入力すると、Apache から「ページが見つかりません」というエラーが表示されます。
URI は次のとおりです: /places/tags/Café
私のページのエンコーディングはUTF-8です。データベース接続とテーブルは UTF-8 です。私の Apache DefaultCharacterSet = UTF-8. はい、Apache には言語パックがありますが、それらは URI ではなく、ページ コンテンツ用にあると思います。
URL をパーセント記号や html エンティティにエンコードしたくないので、1 億行のデータでは特殊文字を取り除くことは現時点では実用的ではありません。
どんな助けでも大歓迎です。
wpf - 数年以内にデスクトップアプリを国際化する...私たちは今何をすべきでしょうか?
したがって、私たちは製品を国際化して、最終的には国際化する必要があると確信しています。私たちが進むにつれて、どれだけ国際化することをお勧めしますか?
言い換えれば、今は簡単ですが、コードベースを成熟させればさらに悪化する可能性があり、今から始めてもそれほど遅くならない国際化はあるのでしょうか。
使用した技術:C#、WPF、WinForms
html - マークアップを含むテキストの翻訳をどのように処理しますか?
Web アプリの多言語サポートを開発しています。gettextライブラリでDjango のヘルパーを使用しています。重要な HTML マークアップを含む文をどのように処理するかという問題を除いて、すべてが驚くほど簡単でした。簡単な例を次に示します。
私が考えることができるアプローチは次のとおりです。
文全体が含まれるようにリンクを変更します。この場合、変更が良いアイデアであるかどうかに関係なく、このソリューションの問題は、理想的には 2 つが独立している場合に、UI が i18n のニーズに依存するようになることです。
上記の文字列全体を翻訳用にマークします (書式設定を含む)。翻訳文字列には、HTML も直接含まれます。これに関する問題は、HTML フォーマットを変更するには、すべての翻訳を変更する必要があることです。
複数の翻訳を密結合し、文字列補間を使用してそれらを結合します。たとえば、"Please %s to continue" と "log in" というフレーズは、翻訳用に別々にマークしてから組み合わせることができます。「ログイン」はローカライズされ、HREF でラップされ、翻訳されたフレーズに挿入されます。これにより、リンク先を示すために %s が翻訳されたままになります。このアプローチはコードを複雑にし、翻訳文字列の独立性を壊します。
他のオプションはありますか?他の人はこの問題をどのように解決しましたか?
.net - resx のすべての文字列を列挙する
.NET のリソース ファイル (resx ファイル) 内のすべての文字列を列挙したいと考えています。これにより、これらすべてのキーと値のペアを含む JavaScript オブジェクトが生成されます。サテライト アセンブリに対しては、次のようなコードを使用してこれを行います (これは VB.NET ですが、サンプル コードは問題ありません)。
ただし、悲しいことに、.resx ファイルに対してこれを行う方法はまだ見つかっていません。resx ファイル内のすべてのローカライズ文字列を列挙するにはどうすればよいですか?
アップデート:
Dennis Myren のコメントとhereのアイデアに従って、ResXResourceManager を作成しました。これで、埋め込みリソースで行ったのと同じことを .resx ファイルで行うことができます。これがコードです。Microsoft は必要なコンストラクターを非公開にしたので、リフレクションを使用してアクセスします。これを使用するときは、完全な信頼が必要です。
internationalization - i18n - 国際化のベスト プラクティス - XLIFF、gettext、INI、...?
編集:フォーマット、その長所と短所についての一般的な議論を本当に見たいです!
EDIT2: 報奨金は、必要な議論を作成するのに実際には役立ちませんでした.いくつかの興味深い回答がありますが、トピックの包括的なカバレッジはまだありません. 6 人がこの質問をお気に入りとしてマークしました。これは、この議論に関心があることを示しています。
IMO で国際化を決定する際に最も難しいのは、ストレージ形式の選択です。
たとえば、Zend PHP フレームワークは、ほぼすべてのオプションをカバーする次のアダプターを提供します。
- Array : いいえ、保守が難しい
- CSV : 不明、エンコーディングの問題の可能性
- Gettext : 頻繁に使用されます。利用可能なすべてのプラットフォームで poEdit を使用できますが、複雑です。
- INI : わかりません。エンコーディングに問題がある可能性があります
- TBX : 手がかりがない
- TMX : 大げさすぎる?自由に利用できるエディターはありません。
- QT : あまり普及していない、無料のツールがない
- XLIFF : 今後の標準? しかし、無料のツールはありません。
- XMLTM : いいえ、必要なものではありません
基本的に、私は4つの「大胆な」選択肢にこだわっています。INI ファイルを使用したいのですが、エンコーディングの問題について読んでいます...厳密な UTF-8 (ファイル、接続、データベースなど) を使用すると、本当に問題になるのでしょうか?
私は Windows を使用しており、poEdit がどのように機能するかを理解しようとしましたが、うまくいきませんでした。ウェブ上にもチュートリアルはありません. gettextはまだ選択の余地がありますか、それとも絶滅危惧種ですか?
XLIFFはどうですか?使用するツールに関するヒントはありますか?
これらのテクノロジーのいずれかをEclipseに統合するためのアイデアはありますか?
java - プラグイン ベースのプログラムのロケールと ResourceBundle
プログラムに国際化を追加する必要があります。ありがたいことに、まだ全体ではなく、ほんの一部ですが、プログラム全体をカバーできるようにスケールアップする方法が必要です. 問題は、私たちのプログラムはプラグインに基づいているため、すべての文字列が同じ場所にあるわけではないということです。
私が理解している限りでは、Java のResourceBundle
動作はこのようなものです。ResourceBundle
などと呼ばれるを拡張するクラスと、などMyProgramStrings
と呼ばれる言語固有のクラスを作成します。これらの各クラスは、キー (文字列) を値 (任意のオブジェクト) にマップします。データをどこから取得するかはこれらのクラスごとに異なりますが、共通の場所はプロパティ ファイルです。MyProgramStrings_fr
MyProgramStrings_es
値を 2 段階で検索します。最初に正しいバンドルを取得し、次に必要な文字列を照会します。
ただし、必要なのは、複数のロケールの結果を 1 つのリソース空間に結合することです。たとえば、プラグインは、既に定義されている文字列をオーバーライドし、コードが文字列を検索するたびにその新しい値を返すことができる必要があります。
私はこれらすべてに少し迷っています。誰でも助けることができますか?
更新: David Waters 氏は次のように尋ねました。
回答を最後に記載しましたが、この問題をどのように解決したかをお聞きしたいと思います。
まあ、まだそれほど進んでいません - 長期的なWIBNIは常に最新の危機の犠牲者になります - しかし、プラグインが実装するインターフェースに基づいており、リソースはインターフェースと同じ完全修飾名を持つという慣習があります.
そのため、インターフェイスUsersAPI
にはさまざまな実装が含まれる場合があります。そのインターフェイスのメソッドgetBundle()
は、デフォルトで と同等のものを返します ResourceBundle.get("...UsersAPI", locale)
。そのファイルを置き換えるか、より複雑なものが必要な場合は、UsersAPI の実装でメソッドをオーバーライドできます。
これまでのところ、これで必要なことは完了していますが、プラグインに基づくより柔軟なソリューションを引き続き検討しています。