韩语音节PHP或JavaScript罗马化器(或任何其他替代方案?)


Korean Syllable PHP or JavaScript Romanizer (or any other alternative?)

我想做一个从韩文字母(韩文)到拉丁字母(罗马化)的音译器,但似乎(在多次尝试但没有成功之后)使用简单的关联数组不是正确的做法。

这是到目前为止我一直在努力的方法:

https://gist.github.com/1154969

我尝试用韩语音节替换平假名,但我无法让它工作。

有人有解决方案吗?

罗马化文本很容易,但反过来就很难了。例如,在日语中(我比韩语更了解),なん写为"nan",第一个音节是"na",第二个音节是"n"。您的代码必须以某种方式区分两个音节,因为如果它将第一个 n 转换为 ん 而不是第二个,您的解析器将留下"an",这是日语中不存在的音节。

处理此问题的方法在其最基本的形式中涉及关联数组。与其一次性用它们的值批量替换键,不如先寻找尽可能长的音节,然后一次性替换它们。所以首先,你会选择像"shi"这样的音节,像"na"这样的音节,最后是像"n"这样的音节。如果你这样做,我所知道的所有亚洲语言都应该安全地转换回自己的字母表,但请记住,如果不同的音节具有相同的罗马化书写形式,这仍然可能导致问题。

由于您只想将原始字符串中的某些特定符号(韩文音节)扩展到其他预定义序列(罗马化),因此请使用对象查找的组合,其中您将韩文存储为键,罗马化作为值,String.replace通过函数生成替换的能力。

我将以片假名为例,因为我也更了解日语:)但是您只需要用正确的韩文填充替换表即可正常工作:

var hangul_syllable_to_roman = {
    '가' : 'ga',
    '강' : 'gang',
    'カ' : 'ka',
    'タ' : 'ta',
    'ナ' : 'na'
}
function one_hangul_syllable_to_roman(syllable) {
    var roman = hangul_syllable_to_roman[syllable]
    // if we have suitable replacement - do it, if not - just return original back
    if (roman) { return roman } else { return syllable }
}
function hangul_to_roman(hangul) {
    return hangul.replace(/./gm, one_hangul_syllable_to_roman)
}
document.write(hangul_to_roman('가강 カタカナ some other text'))
// gagang katakana some other text