私のアプリケーションでは、アプリケーションの実行中にWpfLocalizationを使用して翻訳を提供します。ライブラリは基本的に、プロパティとその割り当てられたローカライズキーワードのリストを維持し、アクティブ言語が変更されたときに値を更新するのにDependencyObject.SetValue()
を使用します。文字列が不思議に切断される
私は自分の問題に気付いたシナリオです:私は単純なTextBlock
を持っており、そのText
プロパティにローカライゼーションキーワードを割り当てました。私のアプリケーションが起動すると、初期値が書き込まれ、画面に表示されます。今度は言語を切り替えると、新しい値はText
プロパティに設定されますが、テキストの半分だけが実際に画面に表示されます。言語を前後に切り替えても効果はありません。最初の言語は常に表示され、2番目は切り捨てられます(単語の途中ではあるが、常に完全な文字)。
両言語の相対的な長さは、それとは関係がないようです。私のテストケースでは、動作言語の文字列は498バイトで、切り捨てられた文字列は439バイトで、257バイト後に切り捨てられます。
TextBlock
のText
プロパティの現在の値を、ローカライズコードで値を変更する直前に調べると、いずれの言語でも常に期待値(切り捨てられない)になります。
WPF Inspectorで実行時にTextBlockを検査すると、カットオフテキストが第2言語のTextプロパティとして表示されます。
これは今まで私にとって意味をなさない。しかし今、それは良くなる。
元のWpfLocalizationライブラリは、標準リソースファイルからローカライズされた文字列を読み取りますが、Excelファイルからこれらの文字列を読み取ることもできる修正バージョンを使用しています。それはOleDbConnection
を開き、Microsoft OLE DBドライバを使用して、その文字列を読み取ることで行います。デバッガでは、すべての値が正しく読み込まれていることがわかります。
今、私は、同僚が「テキストを切り取る」問題の修正を見つけたとき、本当に驚いていました。彼はExcelシートの行を並べ替えました。私はそれがどのように関連しているかわかりませんが、そのファイルの2つのバージョンを切り替えることで、この問題に影響があります。
今は完璧です。しかし、なぜ私はデバッガで完全な文字列を確認できませんでしたか? –