【问题标题】:Can I send string to IME (Windows) to get translation?我可以将字符串发送到 IME (Windows) 以获取翻译吗?
【发布时间】:2011-03-09 00:09:26
【问题描述】:

例如(顺便说一句,我使用的是韩语 IME)我可以通过发送“xodnek”(作为字符串)获得태우다吗?

如果这不可能,我可以从它的单个字符ㅌㅐㅇㅜㄷㅏ(来自键“xodnek”)中得到 태우다。

【问题讨论】:

    标签: windows internationalization ime


    【解决方案1】:

    如果您使用的是 .NET,则可以使用以下方法:

    var s = "ㅌㅐㅇㅜㄷㅏ";
    s = s.Normalize(NormalizationForm.FormKC);
    // s now contains "태우다"
    

    在原生Win32中,对应的调用是NormalizeString

    wchar_t *input = L"ㅌㅐㅇㅜㄷㅏ";
    wchar_t output[100];
    NormalizeString(NormalizationKC, input, -1, output, 100);
    

    NormalizeString 仅在 Windows Vista+ 中可用。如果你想在 XP 上使用它,你需要安装“Microsoft Internationalized Domain Name (IDN) Mitigation APIs”(为什么它在 IDN 下载中,我不明白......)

    请注意,这些方法实际上都不需要使用 IME - 无论您是否安装了韩语 IME,它们都可以工作。

    【讨论】:

    • 谢谢!另一件事,我使用的是 Delphi,我似乎无法使用 NormalizeString(未声明的标识符错误)。知道我做错了什么吗? (已下载 Api 并完成运行设置向导)。
    • @Dian:不幸的是,我对 Delphi 的了解还不够,无法为您提供帮助。我认为必须有某种方法可以在 DLL 中调用 C API,但我不知道它是什么,抱歉!
    • 哦,好的。我以前从未使用过 DLL,所以我不知道,但肯定有办法做到这一点。再次感谢您的回答。它帮助了很多。
    • 我让它工作了......但我有一个问题。我认为是有 3 次击键的字符。当我输入“ane”时,我得到的是“무ㄷ”而不是“묻”。只有我吗?这是一个错误吗?
    猜你喜欢
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    相关资源
    最近更新 更多