Freemarker, если условие не выполнено на турецком языке с определенным ключевым словом

Я сравниваю переменную со значением. Результаты кажутся разными с такими языками, как я пробовал шведский / английский / голландский / португальский и турецкий.

<#assign fm_bidBucket>Install</#assign>
<#assign _text><#if fm_bidBucket?trim?lower_case == "both">both-<#elseif fm_bidBucket?trim?lower_case == "install">install-<#else>else-</#if></#assign>
${_text}

Output:
In case of any language: install-
In case of Turkish language: else-

Но если мы изменим условие с использованием upper_case, а не нижнего регистра, оно будет работать как положено.

<#assign fm_bidBucket>Install</#assign>
<#assign _text><#if fm_bidBucket?trim?upper_case == "both">both-<#elseif fm_bidBucket?trim?upper_case == "install">install-<#else>else-</#if></#assign>
${_text}

Output:
In case of any language: install-
In case of Turkish language: install-

или если мы изменим содержание условия, то оно работает нормально.

<#assign fm_bidBucket>Siddharth</#assign>
<#assign _text><#if fm_bidBucket?trim?lower_case == "both">both-<#elseif fm_bidBucket?trim?lower_case == "siddharth">install-<#else>else-</#if></#assign>
${_text}

Output:
In case of any language: install-
In case of Turkish language: install-

Я не могу отследить проблему, почему я получаю другой вывод только для турецкой локали и с текстом "установить".

Кроме того, вы хотите узнать, есть ли какой-либо другой символ в каком-либо другом месте, работающем так.

Я также попытался запустить этот код на http://try.freemarker.org/ и получил аналогичный ответ.

1 ответ

Решение

Вы только что столкнулись с известной турецкой ошибкой локали.

Турецкий язык содержит оба i (Юникод LATIN МАЛЕНЬКОЕ ПИСЬМО I) и ı (Unicode LATIN МАЛЕНЬКОЕ ПИСЬМО БЕЗ ЗАПИСИ I) ı это строчная буква для I,

Например "INSTALL".toLowerCase() равно "ınstall", который отличается от "install",

Это задокументировано в Javadoc String.toLowerCase а также String.toUpperCase,

Существует также сообщение об ошибке, в котором говорится, что проблема может возникнуть и в азербайджанской локали (az_AZ). Единственный другой персонаж, которого я знаю, который может вызвать проблемы, это немец ß,

Другие вопросы по тегам