Мы глобализируем только наше приложение Engli sh. Мы интернационализировали большинство экранов и перевели их на французский. У меня есть некоторые трудности при разработке дизайна для «Глобального поиска», поддерживающего несколько языков. Я предоставил некоторую информацию ниже.
Engli sh язык: В качестве примера я рассмотрел сам экран создания пользователя. Это может быть любой другой экран (например, создание заказа, создание потенциального клиента и т. Д. c, в котором есть хотя бы один раскрывающийся список). Предположение: пользователь находится в стране, говорящей на английском языке Engli sh, и использует клавиатуру Engli sh.
Экран создания пользователя - Engli sh
На приведенном выше экране все метки отображаются в Engli sh. Также значения в раскрывающемся списке отображаются на английском языке Engli sh, потому что мы знаем, что такое культура, основываясь на предпочтениях локали вошедшего в систему пользователя. Когда мы сохраняем эту форму, мы сохраняем всю текстовую информацию как есть. Для выпадающих списков мы сохраняем значения, а также текст в БД. Когда мы снова получим эту запись, мы можем отобразить «По умолчанию» в качестве раскрывающегося значения (или) любого другого раскрывающегося текста на основе языка…, поскольку у нас есть AccountId. Запись может быть сохранена таким образом в БД, и кодирование-декодирование уже обработано.
{
UserName: Ranganath.english
FirstName: Ranganath
…….
AccountType: {
AccountId: 123
Name: Default
}
}
Экран создания пользователя на французском языке:
Экран создания пользователя - французский
Все хорошо с этикетками. Мы можем видеть раскрывающиеся значения на французском языке. Мы сохраняем значение в БД.
Таким образом, запись может храниться следующим образом:
{
UserName: gabriel.a
FirstName: Gabriel
…….
AccountType: {
AccountId: 123
Name: Défaut
}
}
Глобальный поиск или поиск по списку:
Наше приложение имеет Глобальный поиск по домашняя страница, которая может искать по любой записи и по любому полю.
Учитывая, что я хочу выполнить поиск 1) 'Gabriel.a' - он дает мне французского пользователя (потому что имя пользователя хранится как есть) 2) 'ranganath.english' - даст мне английский sh user
Теперь я хочу найти «Default», он должен дать мне обоих пользователей, но мы сохранили «Default» для одного и «Défaut» для другого.
Или даже если французский пользователь ищет «Défaut», он должен предоставить обоим пользователям.
Мы можем использовать поиск для объединения с таблицами, связанными с управляемыми данными, но мы не делаем знать, что пользователь ищет ?.
Здесь речь идет только об а) одном раскрывающемся списке б) только с одним значением и c) об одном объекте. И на самом деле было бы много сущностей, много выпадающих списков и много значений
Каков оптимальный способ построения поиска?
До сих пор, поскольку это было приложение ТОЛЬКО АНГЛИ SH, мы использовали Elasti c поиск в pu sh всех записей и выполнение некоторых поисковых запросов на основе текста Engli sh.
Решение 1. Для каждой сохраненной записи сохраните отображаемые имена ВСЕХ применимых языков. Запись становится
{
UserName: Ranganath.english
FirstName: Ranganath
…….
AccountType: {
AccountId: 123
Name: {
en-US: Default
fr-FR: Défaut
}
}
}
Это приведет к дополнительным расходам при сохранении, а также при извлечении ненужных данных в формы. Но поиск проще.
Решение 2. Создайте индексы в Elasti c, которые объединяют основные записи с таблицами локализованных управляемых данных.
Пожалуйста, предложите, если есть шаблон проектирования для этого и если решение 1 или 2 выше - это путь к go? Я мог бы пропустить стандартную модель здесь.