提问人:Ivan D. 提问时间:11/7/2022 更新时间:11/7/2022 访问量:118
从 乌克兰语 到 英语的音译
Transliteration from Ukrainian to English
问:
我尝试在 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; // повертаємо результат
}
并非每个撇号都从文本中删除:(
另外,我对正确的英语到乌克兰语的翻译也很感兴趣 - 如果你有的话
答:
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 数据,并且不生成单引号。
上一个:SQL 选择与撇号相同
评论