Use of String.toUpper/LowerCase() should be locale-aware

Description

In Turkish, there are two letters in order to symbolize English's I. They are I and İ (I with dot). Lower case of "I" is "ı" (i without dot) and lower case of "İ" (I with dot) is "i". Users from different nations may encounter with this kind of problems, which come to surface when using String.toUpper/LowerCase(). The solution is to use String.toUpper/LowerCase(Locale), while defaulting to Locale.getDefault() if none specified.

String.toLowerCase() is currently used in:

  • StoryReporterBuilder.formatNames(boolean): should use the locale specified in the LocalizedKeywords to retrieve the name lower case. If not specified, it defaults to Locale.getDefault().

  • UnderscoredCamelCaseResolver: should provide a constructor to inject a non-default Locale

String.toUpperCase() is currently used in:

  • PropertyWebDriverProvider: should provide a protected method usingLocale() which can be overridden use the desired Locale.

Assignee

Mauro Talevi

Reporter

Muammer Yucel

Labels

None

Components

Fix versions

Affects versions

Priority

Major
Configure