MSaltersはオープンソースだと言っているので、それを微調整することができます。
システムの完全な定義を(私のコメントごとに)与えると、より多くのことを助けることができます。
これは深く組み込まれたシステム(私がやることのようなもの)で、OSがなく、どんなタイプの外部ファイルシステムもない場合、文字列はすべてメモリ内になければなりません。これらの文字列をフラッシュに格納するメカニズムがあり、RAMを消費しない可能性が非常に高いでしょう。
たとえば、ARMでは、データ構造をフラッシュに簡単に格納できます。これを行うには、あなたのようなものを使用して、プログラムのセグメントは、それらを格納するようにコンパイラに指示する必要があります:
プログラムがリンクされている
const char mesg1[] __attribute__((section (".USER_FLASH")))
= "Ciao a tutti";
const char mesg2[] __attribute__((section (".USER_FLASH")))
= "Riesco a sentire la mia mente va Dave";
、リンカスクリプトがフラッシュに文字列を配置するために書き込む必要があります、それらはRAMにコピーされません。
メッセージにどれくらいのスペースを割けることができますか?彼らはどれくらいのスペースを取るのですか?
よく研究された問題と戦っているかもしれません。リソースの限界に近づくにつれてプログラミングの労力が指数関数的に増加します。最終的な数%の記憶に物を適合させるためには多大な努力が必要です。
「明白な」微調整は、簡単な圧縮技術を試してみることです。 1つは生のメッセージに適用され、メッセージが印刷されると非圧縮になります。
編集:私はあなたの質問が非常に単純で自然であるように思っていました。答えは簡単に見つけることができると思いました。
私はgettextのドキュメントを見ましたが、それを見つけることができませんでした。私はソースをダウンロードしました。 10分後、私は正直なところ、それがどう働いているか教えてくれませんでした。私はそれが多くの私は予想よりも複雑であることを伝えることができます。私は豊富なドキュメントを見ました。問題の原因となる可能性のあることについて、翻訳を行うための最良の構成方法、プログラムの準備方法、非常に有用な洞察力。しかし、のドキュメントで、その全体的な実行時アーキテクチャについて説明することができませんでした。なし。何もない。
GNU gettextメーリングリストに行き、必要に応じて検索してください。メーリングリストのアーカイブはhttp://savannah.gnu.org/projects/gettext/にあります。私はもっと役に立たないことをお詫びします。
あなたのシステムにはオペレーティングシステムがありますか?それはファイルシステムになっていますか?それは外部フラッシュを持っていますか?またはファイルシステムを搭載したメモリカード? – gbulmer
オープンソースなので、いつでもそれを微調整できます。 – MSalters
@gbulmer、はいLinuxとファイルシステム。 –