I18n - Данные находятся в одной локали, пользовательский интерфейс в другой, какую локаль использовать для сортировки?

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

Мой вопрос таков:

Должна ли сортировка и фильтрация данных выполняться с использованием языка пользователя или языка данных?

Первоначально мы предполагали, что имеет смысл сортировать данные по локали данных, но, прочитав статьи, подобные приведенной ниже, кажется, что сортировка по пользователю имеет больше смысла.

"Сортировка также может различаться в зависимости от основного порядка, используемого языком и культурой для алфавита. Например, в шведском языке есть символ "Ä", который сортируется после буквы Z в алфавите. В немецком языке также есть этот символ, но сортирует его как "ae" после "A" в алфавите." http://msdn.microsoft.com/en-us/library/a7zyyk0c.aspx

Кому-нибудь приходилось принимать это решение раньше? Что ты решил? Мнения?

Может ли кто-нибудь привести примеры, требующие использования локали данных для сортировки или фильтрации?

Заранее спасибо.


person Ed .    schedule 09.07.2009    source источник
comment
Хм. Я позволил себе отредактировать букву «Æ» в вопросе, поскольку в шведском языке такой буквы точно нет. Затем я понял, что ошибка принадлежит Microsoft, цитируемый текст взят из MSDN. Не стесняйтесь редактировать, если вы предпочитаете, чтобы цитата была совместима с ошибкой, я думаю.   -  person unwind    schedule 09.07.2009


Ответы (4)


Я думаю, это должно зависеть от вариантов использования, то есть что больше всего помогает пользователям?

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

person unwind    schedule 09.07.2009
comment
Я предполагаю, что в 99% это локаль пользовательского интерфейса, по которой вы должны фильтровать/сортировать. Это то, что ожидает (большинство) пользователей. - person Tobias Langner; 09.07.2009
comment
Согласовано. Если это для отображения пользователю, то в локали пользователя. Если вы сортируете список внутри для поддержки бинарного поиска и тому подобного, сортируйте по тому, что быстрее. - person Ian Boyd; 23.03.2010

Очевидный ответ — «чего ожидает пользователь». Только не так-то просто угадать, чего ожидает пользователь :-)

На первый ответ: «американец, работающий со шведскими именами». Можем ли мы быть уверены, что американец знаком со шведскими правилами сортировки? Думаю, нет. Но мы уверены, что он знаком с американскими правилами сортировки. (если я хочу найти номер телефона друга в Швеции, значит ли это, что я знаю, как они там сортируются?)

Некоторые фреймворки/ОС могут помочь. Обычно в «Панели управления» (или аналогичной) есть настройки, определяющие, какую локаль следует использовать для форматирования или сортировки. Узнайте, что такое API для получения этой информации и ее использования.

Обычно пользовательский интерфейс локализован на какой-то «вкус» языка, этого недостаточно, чтобы решить, что делать с форматированием, сортировкой и т. д. (Вспомните английский пользовательский интерфейс. Но я могу быть в Австралии, Великобритании или Индии, где действуют некоторые условности). другой)

Если вы дадите некоторую информацию о своей среде, я смогу указать вам правильные API.

person Mihai Nita    schedule 25.09.2009

Если вы сортируете данные только для того, чтобы отобразить их на экране в виде красивого списка для пользователя. Сортировка с использованием языкового стандарта пользовательского интерфейса.

Если вы сортируете данные для хранения или упорядочиваете, используйте локаль данных.

person Simon P Stevens    schedule 09.07.2009

Вы должны сортировать, используя локаль, которую ожидает пользователь. В вашем случае сортируйте на основе локали, выбранной пользователем в пользовательском интерфейсе. Иначе вы запутаете своих пользователей.

person Aaron Saarela    schedule 09.07.2009