2013-10-23 48 views
2

我想從韓文字母(韓文字母)到拉丁字母(羅馬字母)的音譯員,但似乎(經過多次嘗試後成功)使用一個簡單的關聯數組是不適合的。韓語音節PHP或JavaScript Romanizer(或任何其他選擇?)

這是我一直在努力迄今努力的方法:我試圖通過韓國音節代替平假名

https://gist.github.com/1154969

,但我無法得到它的工作。

有沒有人有解決方案?

+1

能否請您詳細闡述爲什麼你的第一試圖成功嗎? – TJHeuvel

+0

它只能以一種方式工作:從拉丁字母到韓語(當我用另一種方式嘗試時,它不起作用) – user2911849

回答

0

對文本進行羅馬化很容易,但其他方法相當困難。例如在日語中(我比韓語更好),なん被寫爲「」「,第一個音節是」na「,第二個是」n「。你的代碼必須以某種方式區分這兩個音節,因爲如果它將第一個n變成而不是第二個,你的解析器將留下「an」,這是日文中不存在的音節。

處理此問題的方法最基本的形式涉及關聯數組。與其一次性大量地用鍵盤替換鍵值,你必須首先查找最長的可能音節,並一次性替換這些音節。所以首先,你要去找像「shi」這樣的音節,用於諸如「na」的音節,最後用於諸如「n」的音節。如果你這樣做,我知道的所有亞洲語言應該安全地轉換回自己的字母表,但請記住,如果不同的音節具有相同的羅馬化形式的書寫,這可能仍然會導致問題。

+0

我不認爲這會很容易。 'an'可能不存在,但''''n'當然不是,因此將'nan'轉錄成'んあん'是正確的(即使它沒有意義)。赫本也不是日本唯一的羅馬化系統。 – Yoshi

+0

我只想從韓文到拉丁文音譯。韓國官方的轉錄只有一種方式爲每個音節書寫,所以這在理論上應該是一個漫長但非常簡單的操作:가= ga; 강=剛;等 – user2911849

+0

我不完全看到它會是多久? 「long」位將按照正確的順序設置數組,但其他一切都可能是幾次替換的循環。 @Yoshi通過首先替換較長的音節來解決問題。如果んあん或其他類似的東西實際上是自然發生的序列,但我認爲它不是,至少在日文中是這樣。我無法想到一個自然出現的日語音節序列,在羅馬化之後變得模糊不清。從我收集的信息來看,韓國也不是問題。 –

0

由於您只是想將原始字符串中的某些特定符號(hangul音節)擴展爲其他預定義的序列(羅馬化),因此請使用對象查找的組合,將hangul作爲關鍵字存儲,並將romanization作爲值並且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 
+0

你能告訴我如何測試你的代碼嗎?我只可惜只是一個業餘愛好者)在編程PHP中,謝謝! – user2911849

+0

這就是純粹的JS - 你可以在不需要服務器端處理的情況下完成整個音譯工作,在瀏覽器的控制檯中運行它,保存爲.js並嵌入到任何HTML中,或者在對JSFiddle的行動:http://jsfiddle.net/LGRAq/ –

+0

對不起,我的Javascript技能..我不知道如何使用jsfiddle或如何讓你的腳本在我的網站上工作原來,我只是想得到somethi ng像https://gist.github.com/1154969。它只需要點擊並且字符被替換。 – user2911849