如何使 Text::slug() 正确转换德语变音符号?
How to make Text::slug() convert german umlauts properly?
我正在使用 CakePHP 3.6,当我使用带有德语变音符号的单词时,例如:
Text::slug('Grundstücke')
我会得到:
Grundstucke (where ü = u)
但这不正确,我应该得到:
Grundstuecke (where ü = ue)
是否可以设置一个选项,以便按照我希望的方式转换变音符号?
更改音译器
Text::slug()
内部使用transliterator_transliterate
(参见php doc)。
因此您需要更改正在使用的默认音译器。
经过一些研究,我找到了一个适合你的。
在您的 bootstrap.php 文件末尾添加:
\Cake\Utility\Text::setTransliteratorId( 'de-ASCII; Any-Latin; Latin-ASCII; [\u0080-\u7fff] remove ');
然后您的文本将按照您的预期进行转换。
备注
我用来找到这个答案的资源:
- CakekPHP
Text::transliterate()
- Transliteration Identifiers Documentation
- transliterator_list_ids - 获取有效标识符列表 - 这就是我找到最终有效标识符的方式:
de-ASCII
- Text Utility API - 设置新的默认音译器 ID。
我正在使用 CakePHP 3.6,当我使用带有德语变音符号的单词时,例如:
Text::slug('Grundstücke')
我会得到:
Grundstucke (where ü = u)
但这不正确,我应该得到:
Grundstuecke (where ü = ue)
是否可以设置一个选项,以便按照我希望的方式转换变音符号?
更改音译器
Text::slug()
内部使用transliterator_transliterate
(参见php doc)。
因此您需要更改正在使用的默认音译器。
经过一些研究,我找到了一个适合你的。
在您的 bootstrap.php 文件末尾添加:
\Cake\Utility\Text::setTransliteratorId( 'de-ASCII; Any-Latin; Latin-ASCII; [\u0080-\u7fff] remove ');
然后您的文本将按照您的预期进行转换。
备注
我用来找到这个答案的资源:
- CakekPHP
Text::transliterate()
- Transliteration Identifiers Documentation
- transliterator_list_ids - 获取有效标识符列表 - 这就是我找到最终有效标识符的方式:
de-ASCII
- Text Utility API - 设置新的默认音译器 ID。