这个 Mono 库只是让人头疼......我从这个国际化教程创建了简单的 C# 控制台应用程序
它在使用 Mono 构建它时工作,但我想使用 Visual Studio 构建/运行它。我将Mono.Posix
nuget添加到项目中。
程序如下所示:
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");
我不知道什么是错误/缺失等。