Python 音译器与 PHP 音译器具有相同的规则

问题描述 投票:0回答:1

我需要一个 python 音译器,其配置方式与 PHP 音译器相同。我的基于 PHP 的音译器配置了以下规则:

$transliterator = Transliterator::createFromRules(
    ':: NFD;'
    . ' :: [:Nonspacing Mark:] Remove;'
    . ' :: NFC;'
    . ' :: [:Punctuation:] Remove;'
    . ' :: Lower();',
    Transliterator::FORWARD
);

此时我正在使用Python的

slugify
库,这样我就可以获得足够接近的结果。这种二元性导致交叉依赖(php 和 python 之间)的音译文本必须在 PHP 的站点后端通过使用将返回音译字符串的 API 端点来完成。

有什么办法可以实现这个目标吗?

python php internationalization icu transliteration
1个回答
0
投票

使用

PyICU
icu4c 的 Python 包装器。

假设您已经安装了 icu4c 并且可以访问 Python,请安装 PyICU:

pip install -U PyICU

PyICU 和 PHP 的语法几乎相同。唯一真正的区别是您需要为音译器添加标签:

icu.Transliterator.createFromRules(label, rules, direction)

所以:

import icu
rules = (
    ':: NFD;'
    ' :: [:Nonspacing Mark:] Remove;'
    ' :: NFC;'
    ' :: [:Punctuation:] Remove;'
    ' :: Lower();'
)
direction = icu.UTransDirection.FORWARD
transliterator = icu.Transliterator.createFromRules("customClean", rules, direction)
s = "Nāgārjuna!"
print(transliterator.transliterate(s))
# nagarjuna

同样,PyICU 将具有与 PHP 的 intl 相同的功能。

© www.soinside.com 2019 - 2024. All rights reserved.