問題タブ [string-table]
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.
java - Java および .NET 文字列リテラルはどこにありますか?
.NET の文字列リテラルに関する最近の質問が私の目を引きました。同じ値を持つ異なる文字列が同じオブジェクトを参照するように、文字列リテラルがインターンされていることを知っています。また、実行時に文字列をインターンできることも知っています。
明らかに、実行時にインターンされる文字列はヒープに存在しますが、リテラルがプログラムのデータセグメントに配置されていると想定していました (上記の質問に対する私の回答でそう言いました)。しかし、私はこれをどこかで見た覚えがありません。これは私が行う方法であり、ldstr
IL命令を使用してリテラルを取得し、割り当てが行われていないように見えるという事実が私を裏付けているように見えるので、これが当てはまると思います。
簡単に言うと、文字列リテラルはどこにあるのでしょうか? ヒープ上ですか、データ セグメントですか、それとも私が考えもしなかった場所ですか?
編集:文字列リテラルがヒープに存在する場合、それらはいつ割り当てられますか?
c# - 文字列テーブルを使用した Windows フォーム
私は通常の Windows フォーム (WinForm) C# (.Net 3.5) アプリケーションを持っています。このアプリケーションには、テキストやメニューなどのラベルがあります。また、このアプリケーションはメッセージ ボックスをユーザーに表示し、ファイルに情報を書き込みます。
ユーザーが(GUIまたはファイルで)見ることができるすべての情報は、(可能であれば1つ)文字列テーブルで管理されることを望みます。私の問題は、すべての GUI コントローラー テキストをリソース ファイル内の文字列テーブルに移動する方法が見つからないことです。
ありがとう
javascript - HTML要素のテキストを文字列のオブジェクトにバインドできますか?
jQueryを使用してWebアプリケーションを作成しています。Webアプリケーションのすべての要素は、jQuery(var $header = $("<div>");
)を使用して作成されます。「no」、「en」などのサブオブジェクトがあるstringtablesというオブジェクトがすでにあります。
ページの読み込み時にデフォルトが読み込まれ、そこからの文字列がすべての要素のテキストに使用されます。すべての要素を文字列テーブルに関連付ける方法はありますか?文字列テーブルを切り替えると、Webサイト上のすべてのテキストがそれに伴って変更されますか?
ページをリロードせずにアプリケーションの言語を変更したい。
c++ - メッセージ文字列を複製する必要のないクロスプラットフォーム メッセージ カタログの作業コードはありますか?
Linux では、gencat は、gencat、catopen、catgets、および catclose を使用して .msg ファイルで美しく機能します。Windows では、mc または rc ファイルの stringtable は LoadString で美しく機能します。
Windowsでgencatの実装が機能しているかどうか疑問に思っています。私はググって、freebsd または Apple の実装から多くのコピーを見つけましたが、同等の catopen の実装またはその少し古いものを見逃しています。
プロジェクトで MingGW または Cigwin の実装を使用したくありません。
2 つの異なる形式で文字列を複製しないのに役立つメッセージ カタログのクロス プラットフォーム実装を知っているかどうかを提案してください。
c - 文字列テーブル "decoder ring" を使用した printf() デバッグ ライブラリ
私が説明しようとしているアイデアの実装を見たり聞いたりしたことがあるかどうかを確認するために書いています。
組み込みターゲット用の printf スタイルのデバッグ ライブラリの開発に興味があります。ターゲットは非常に離れており、私とターゲットの間の通信帯域幅の予算は非常に厳しいため、非常に効率的な形式でデバッグ メッセージを取得できるようにしたいと考えています。
多くの場合、デバッグ ステートメントは次のようになります。
もちろん、これをテキストに展開すると、出力される文字列は「Inside loop, processing item 5 out of 10.\n」のようなもので、合計で 42 バイトほどになります。このステートメントによって出力されるデータの 90% 以上は静的でリテラルであり、コンパイル時に認識されます。もちろん、「5」と「10」だけはコンパイル時にわかりません。
私がやりたいのは、これら 2 つの整数 (42 ではなく 8 バイト) だけを送り返すことです。そのデータを受信すると、受信したデータを「再構成」し、ここで私の場所で完全なデバッグ メッセージを出力できる、ある種の「デコーダ リング」ができます。
コンパイル時にすべての myDebugLibraryPrintf() ステートメントに一意の ID を自動的に (ビルド プロセスの一部として) 与え、それらの一意の ID を元の書式文字列にマップするテーブルを生成することで、"デコーダ リング" を生成します。次に、ターゲットで myDebugLibraryPrintf() が呼び出されるたびに、一意の ID と、フォーマット文字列にある"%d"
、"%f"
などの varargs 値が送信されますが、フォーマット文字列自体は送信されません。(おそらく今のところ"%s"
項目を許可しないことにします...) 私の場所に戻ると、テーブル内の一意の ID を検索し、適切なフォーマット文字列を見つけ、それを使用して元のデバッグ メッセージを再構築するプログラムができます。 .
誰かがおそらく以前にこのアイデアを持っていたような気がします.コミュニティの誰かがそのようなものを見たことがあるでしょう(またはこれを行うオープンソースライブラリを知っていることさえあります).
制約:
明確にするために、ここでは C/C++ を扱っており、printf() の 100% 完全な代替実装 (非リテラル形式文字列、
%s
(文字列) 形式指定子、またはより高度な)には興味がありません。 varargs リストに幅や精度を入れるような書式指定子は、%*.*d
サポートする必要はありません。ビルド プロセスの一部として文字列テーブルを自動的に生成して、従来の printf() を追加するだけでデバッグを追加できるようにしたいと考えています。最小限の労力以上が必要な場合、私のプロジェクトの誰もそれを使用しません。
文字列テーブルを生成するビルド プロセスの一部として余分な作業を行うことは、ほぼ想定されています。幸いなことに、私はこのライブラリを使用することに関心のあるすべてのソース コードを管理しており、ビルド プロセスには多くの柔軟性があります。
ありがとう!
mfc - VC++ 10 MFC: ローカリゼーションを行う正しい方法は何ですか?
私は、MFC アプリでいくつかの作業を行う必要がある .NET 担当者です。このアプリは、VS2010 に変換した VS2008 MFC 実行可能ファイルです。元の開発者は、アプリケーションのコマンド ラインで、キーと値のペアを含む .txt ファイルの名前を指定して、ローカライズを行いました。実行可能ファイルへのインストールされたショートカットは、アプリがインストールされている国に応じて異なる .txt ファイルを指定します。これはもちろん、.exe を直接実行するだけでは機能しません。これは私には奇妙なやり方のように思えます。
これを適切な MFC の方法で行いたいのですが、Google で決定的な答えを見つけるのに苦労しています。私の理解では、このローカリゼーションには .rc ファイルの文字列テーブルを使用する必要がありますか? これは MFC の現在のベスト プラクティスですか?
文字列テーブルに関しては、異なる言語ごとに複数の文字列テーブルを作成するのが慣例であると読みました。MFC アプリケーションはどの言語を使用するかをどのように選択しますか? マシンの現在の言語設定に基づいていますか、それともこれを制御できますか (ビルドしている Wix .msi インストーラーで言語を指定する必要があるかもしれません)?
また、MFC アプリケーション内にすべてのリソースを埋め込むことが支持されなくなり、別のリソース .dll をコンパイルする必要があることも読みました。これは本当ですか?それを行う方法を調査してください...
最後に、MFC で Unicode をサポートするには何か特別なことをする必要がありますか?それとも MFC は既定で Unicode ですか?
ありがとう
c++ - MFC - 文字列テーブルを手動で展開する
MFC リソース ファイル内の STRINGTABLE がどのように正確に定義され、手動で展開できるかを説明する説明またはリンクを提供できる人はいますか?
私はそれをやろうとしましたが、マルチプロジェクトソリューションでは失敗しました。上記のソリューションのほとんどのプロジェクトには、独自のリソース ファイルがあり、名前が resource.h-files に変更されています。
アプリケーションが文字列リソースにアクセスしようとすると、「'22392' のリソース文字列が見つかりません」というエラー メッセージが表示されます。22392 は、作成しようとした文字列の ID です。代わりに定義済みの文字列 ID を使用すると、同様のエラー メッセージは表示されません。
Visual Studio 2010 のウィザードを使用して文字列リソースを追加しても機能しませんでした。ただし、リソース シンボルのリストと文字列テーブル エディターでは正しく表示されます。
言うまでもなく、私はこのソリューションの作成に参加していません。
ご協力いただきありがとうございます。
[編集1]
使用される値に対して「ファイル内の検索」を実行し、他の値も使用することにより、競合の可能性を排除しました:22390、22391、22393、22394、22395。常に同じ結果が得られました。
[編集2]
複雑なソリューションで行った手順を、新しくクリーンでシンプルな MFC アプリケーションの 1 つのプロジェクトで繰り返したところ、問題なく動作しました。したがって、私の問題は、ソリューションに複数のプロジェクトとリソースがあるという事実に関連していると思います。
手順は次のとおりです。
- resource.h (私の場合は別の名前です) でフリー番号を選択し、 #define IDS_XXXフリー番号を追加します。
- 「ファイル内検索」を実行して、選択した番号を検証します。
resource.h の STRINGTABLE に、できれば IDS_ の近くに、選択した値に近い値の行を追加します。
/li>アプリケーションで文字列にアクセスします。
/li>
[編集3]
エラー メッセージの原因となる LoadString の呼び出しを特定しようとしました。文字列リソースの読み込みに失敗した LoadString はクラスにあり、その文字列リソースを含むリソース ファイル (.rc) と同じプロジェクトにあります。「'22392' のリソース文字列が見つかりません」というエラー メッセージが生成されます。それは少なくとも、私がそれをググっても何も見つからなかった理由を説明しています.
[EDIT4]
さらに原因を切り分けることができました。
cstringt.h では hInst は NULL であり、文字列 ressource が見つかりません:
同じリソース ファイル内の別の文字列リソースに問題なくアクセスできるため、これは奇妙です。
elf - ELF の文字列テーブル
シンボルを取得し、ELF ファイル (の 16 進ダンプ) を取得します。この記号がどのセクションに表示されているかを知るにはどうすればよいですか?
.strtab
とはどう違い.shstrtab
ますか?シンボル文字列の別の配列はありますか?
シンボル名テーブルのインデックスを取得すると、それは 内または 内のインデックス.strtab
ですか.shstrtab
?
android - AIR で中国語、キリル文字、および韓国語のフォントを表示する
ゲームのさまざまな言語で問題が発生しました。Flash Professional CS5.5 から AIR for Android および AIR for iOS にゲームを公開しています。
中国語、韓国語、ロシア語を除くすべての言語で問題ありません。それらを表示するにはどうすればよいですか?
私は埋め込みフォント (arial) を使用しており、テキストを arial で表示するために word でテストしましたが、まったく問題はありません。
私は自分のswfでこれをテストしました:
テキストフィールドに中国語のテキストを書き込むと、テキストは正しく表示されますが、テキストが string-xml データで動的に追加されると、テキストは正しく表示されません (括弧と数字のみ)。
あなたが私を助けてくれることを願っています。
感謝と挨拶
c# - C#で文字列テーブルを実行しますか?
C# で exe の文字列テーブルを読み取り/設定するにはどうすればよいですか? リソースファイルという意味ではありません。つまり、任意のexeを取得し、ビジュアルスタジオで開き、右クリックして[リソースの追加]を選択し、uint16キーと文字列値である文字列テーブルを選択します。
C# でアクセスするにはどうすればよいですか?