この Mono ライブラリは頭痛の種です...この国際化チュートリアルからシンプルな C# コンソール アプリを作成しました。
これは mono でビルドすると機能しますが、Visual Studio を使用してビルド/実行したいと考えています。Mono.Posix
プロジェクトにナゲットを追加しました。
プログラムは次のようになります。
using System;
using Mono.Unix;
using System.Globalization;
using System.Threading;
public class i18n
{
public static void Main(string[] argv)
{
Catalog.Init("lv", "./locale");
Console.WriteLine(Catalog.GetString("My name is {0}"), "Enzo");
int i = 20;
Console.WriteLine(Catalog.GetPluralString("I'm {0} year old.", "I'm {0} years old.", i), i);
i = 21;
Console.WriteLine(Catalog.GetPluralString("I'm {0} year old.", "I'm {0} years old.", i), i);
i = 22;
Console.WriteLine(Catalog.GetPluralString("I'm {0} year old.", "I'm {0} years old.", i), i);
Console.ReadKey();
}
}
MonoPosixHelper.dll
最初に、見つからないというエラーが発生しました。追加しました。その後intl.dll
、行方不明になりました。追加した。今、私はPInvokeStackImbalance occured
メッセージを受け取ります:
マネージド デバッグ アシスタント 'PInvokeStackImbalance' は、'D:\TESTS\i18n\i18n\bin\x86\Debug\i18n.vshost.exe' で問題を検出しました。
追加情報: PInvoke 関数 'Mono.Posix!Mono.Unix.Catalog::bindtextdomain' の呼び出しにより、スタックのバランスが崩れました。これは、マネージド PInvoke 署名がアンマネージド ターゲット シグネチャと一致しないことが原因である可能性があります。PInvoke シグネチャの呼び出し規約とパラメーターがターゲットのアンマネージド シグネチャと一致することを確認します。
それはすべて、Catalog.Init("lv", "./locale");
何が間違っている/欠けているのか見当がつかないなどで起こります.