【问题标题】:How to make Text::slug() convert german umlauts properly?如何使 Text::slug() 正确转换德语变音符号?
【发布时间】:2018-10-28 22:34:01
【问题描述】:

我使用的是 CakePHP 3.6,当我使用带有德语变音符号的单词时,例如:

Text::slug('Grundstücke')

我会得到:

Grundstucke(其中 ü = u)

但这不正确,我应该得到:

Grundstuecke(其中 ü = ue)

是否可以设置一个选项,以便按照我想要的方式转换变音符号?

【问题讨论】:

    标签: cakephp diacritics slug cakephp-3.x


    【解决方案1】:

    更改您的音译

    Text::slug() 在内部使用transliterator_transliterate(参见php doc)。

    因此,您需要更改正在使用的默认音译。

    经过一番研究,我找到了一个适合你的。

    在 bootstrap.php 文件末尾添加:

    \Cake\Utility\Text::setTransliteratorId( 'de-ASCII; Any-Latin; Latin-ASCII; [\u0080-\u7fff] remove ');
    

    然后您的文本将按照您的预期进行转换。

    注意事项

    我用来找到这个答案的资源:

    【讨论】:

    • 需要注意的是de-ASCII只有available as of ICU 60.1。在早期版本中,必须手动提供规则 AFAIR。
    • 看起来,我对这个解决方案没有运气......你介意就这个问题进行更深入的讨论吗?我可以联系你吗?
    • 这几天很忙。如果这对您不起作用,则可能正如 ndm 上面所说,您需要更新版本的音译模块。也许将您的 PHP 版本升级到最新版本?
    • ICU 已移至 GitHub/JIRA,我在上面发布的链接不再有效,改为 look here
    • 我想为此点赞一千次!我什至没有使用 cakephp,而是尝试使用标准 PHP 正确地音译德语变音符号。 iconv()ASCII//TRANSLIT 不起作用,尽管在任何地方都建议设置 setlocale(LC_ALL, "de_DE.utf-8")(是的,系统上可以使用该语言环境)。在找到这个之前,我一直在寻找几个小时(字面意思!)。
    猜你喜欢
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 2011-11-07
    • 2016-01-21
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多