【发布时间】:2018-10-28 22:34:01
【问题描述】:
我使用的是 CakePHP 3.6,当我使用带有德语变音符号的单词时,例如:
Text::slug('Grundstücke')
我会得到:
Grundstucke(其中 ü = u)
但这不正确,我应该得到:
Grundstuecke(其中 ü = ue)
是否可以设置一个选项,以便按照我想要的方式转换变音符号?
【问题讨论】:
标签: cakephp diacritics slug cakephp-3.x
我使用的是 CakePHP 3.6,当我使用带有德语变音符号的单词时,例如:
Text::slug('Grundstücke')
我会得到:
Grundstucke(其中 ü = u)
但这不正确,我应该得到:
Grundstuecke(其中 ü = ue)
是否可以设置一个选项,以便按照我想要的方式转换变音符号?
【问题讨论】:
标签: cakephp diacritics slug cakephp-3.x
Text::slug() 在内部使用transliterator_transliterate(参见php doc)。
因此,您需要更改正在使用的默认音译。
经过一番研究,我找到了一个适合你的。
在 bootstrap.php 文件末尾添加:
\Cake\Utility\Text::setTransliteratorId( 'de-ASCII; Any-Latin; Latin-ASCII; [\u0080-\u7fff] remove ');
然后您的文本将按照您的预期进行转换。
我用来找到这个答案的资源:
Text::transliterate()de-ASCII
【讨论】:
de-ASCII只有available as of ICU 60.1。在早期版本中,必须手动提供规则 AFAIR。
iconv() 和 ASCII//TRANSLIT 不起作用,尽管在任何地方都建议设置 setlocale(LC_ALL, "de_DE.utf-8")(是的,系统上可以使用该语言环境)。在找到这个之前,我一直在寻找几个小时(字面意思!)。