从 乌克兰语 到 英语的音译

Transliteration from Ukrainian to English

提问人:Ivan D. 提问时间:11/7/2022 更新时间:11/7/2022 访问量:118

问:

我尝试在 php 上将 translit 功能从乌克兰语转换为英语。这是否正确,尤其是对于撇号符号。那么从英语到乌克兰语的翻译功能呢?任何想法或链接

function translit($s) {
    $s = (string) $s; 
    $s = trim($s);
    $s = strtr($s, array('зг'=>'zgh','а'=>'a','б'=>'b','в'=>'v','г'=>'h','ґ'=>'g','д'=>'d','е'=>'e','є'=>'ie','ж'=>'zh','з'=>'z','и'=>'y','і'=>'i','ї'=>'i','й'=>'i','к'=>'k','л'=>'l','м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'kh','ц'=>'ts','ч'=>'ch','ш'=>'sh','щ'=>'shch','ю'=>'iu','я'=>'ia','`'=>'','ь'=>'','Зг'=>'Zgh','А'=>'A','Б'=>'B','В'=>'V','Г'=>'H','Ґ'=>'G','Д'=>'D','Е'=>'E','Є'=>'Ye','Ж'=>'Zh','З'=>'Z','И'=>'Y','І'=>'I','Ї'=>'Yi','Й'=>'Y','К'=>'K','Л'=>'L','М'=>'M','Н'=>'N','О'=>'O','П'=>'P','Р'=>'R','С'=>'S','Т'=>'T','У'=>'U','Ф'=>'F','Х'=>'Kh','Ц'=>'Ts','Ч'=>'Ch','Ш'=>'Sh','Щ'=>'Shch','Ю'=>'Yu','Я'=>'Ya')); // згідно Паспорта (КМУ 2010) 
    return $s; // повертаємо результат
}

并非每个撇号都从文本中删除:(

另外,我对正确的英语到乌克兰语的翻译也很感兴趣 - 如果你有的话

PHP 撇号 音译

评论


答:

1赞 Álvaro González 11/7/2022 #1

您无需编写自己的逻辑或维护自己的数据库:

function translit($s) {
    return transliterator_transliterate('Any-Latin; Latin-ASCII', $s);
}

因为它产生.повертаємо результатpovertaemo rezul'tat

演示文档

评论

0赞 Ivan D. 11/8/2022
不好意思!但是,您的代码不正确 - 从“Іван Згурський”开始,它变成了“Ivan Zgurs'kij”。但根据法律(例如在国际护照中)必须是“Ivan Zghurskii”
0赞 Álvaro González 11/10/2022
对不起,不幸的是,我不熟悉乌克兰语。那么“任何拉丁语”可能是错误的,您需要一套明确涵盖乌克兰语的规则。如果我能够找到有关此的文档,我将更新问题。
1赞 Álvaro González 11/10/2022
我屈服了。ICU是一条漫长的道路,不是你一个下午就能掌握的。你可能想试试这个库:fre5h / transliteration-php。它使用自己的实现而不是 ICU 数据,并且不生成单引号。