Size: a a a

2019 August 05

A

Alexandr in Almaty JUG 🏔
Nurlan N
Вопрос, кто как делает локализацию значений? Какие есть подходы? У меня в основых таблицах хранятся lookup_code и по нему я хочу вытаскивать локализированные значения из единой lookup таблицы
Все зависит от ваших данных, сколько их и как часто приложение потом будет читать их.
источник

A

Alexandr in Almaty JUG 🏔
Иногда и лукап табличка нормально, а иногда она начинает быть узким местом и можно вообще всю локализацию в какую-нибудь быструю кеш/базу вынести.
источник

A

Alexandr in Almaty JUG 🏔
Я как-то раз делал вообще рядом с данными столбцы по количеству языков) Не кошерно конечно, но в той ситуации большего и ненадо было.
источник

NN

Nurlan N in Almaty JUG 🏔
технически как это реализовать? Все переводы в одной таблице, и как мне связать мои таблицу с lookup таблицей?
источник

A

Alexandr in Almaty JUG 🏔
Что за данные у вас?
источник

NN

Nurlan N in Almaty JUG 🏔
Нет foreign key между ними, так как эта lookup таблица используется везде
источник

A

Alexandr in Almaty JUG 🏔
Быстрее всего конечно  связать на этапе селекта если все в данных.
источник

NN

Nurlan N in Almaty JUG 🏔
В Entity это можно сделать? Через JoinColumnOrFormula
источник

NN

Nurlan N in Almaty JUG 🏔
Или через ElementCollection, но тут можно ли обозначить ElementCollection как read only? Так как при сохранении он удаляет значения из lookup таблицы
источник

A

Alexandr in Almaty JUG 🏔
Nurlan N
В Entity это можно сделать? Через JoinColumnOrFormula
Думаю и просто join сработает.
источник

NN

Nurlan N in Almaty JUG 🏔
Для join foreign key нужен?
источник

A

Alexandr in Almaty JUG 🏔
Если это локализация интерфейса то возможно ее имеет смысл сделать более стандартными средствами. В базу имеет смысл заливать то, что реально надо менять на лету.
источник

A

Alexandr in Almaty JUG 🏔
Nurlan N
Для join foreign key нужен?
нет
источник

Y

Yerden in Almaty JUG 🏔
Я наконец-то решил проблему с локалями для себя. Пример ниже
таблица catalogs:
__________________
id | code | name
1  |   foo  |  бар
__________________

я решил в name хранить названия по умолчанию (например русский)
Когда считываю значение, перед тем как отправить на фронт достаю со словаря значение по catalog.{code} и передаю его вместо name из базы, если значение нет, проставляю name для всех локалей и передаю его.
Далее можно для всех локалей нормальное значение прописать.
join не использовал, по причине, что словари в кэше
источник

NN

Nurlan N in Almaty JUG 🏔
а что если надо вывести name на английском?
источник

NN

Nurlan N in Almaty JUG 🏔
Это можно было сделать используя @Formula, но тут нельзя передавать значение Locale динамически
источник

NN

Nurlan N in Almaty JUG 🏔
@Formula(value = "(SELECT russianValue FROM lookups" +
           " WHERE lookups.lookup_code=name)")
   private String russianValue;
источник

NN

Nurlan N in Almaty JUG 🏔
например, вот так
источник

NN

Nurlan N in Almaty JUG 🏔
тогда не надо поле name хранить
источник

NN

Nurlan N in Almaty JUG 🏔
я ищу более глобальное решение. где или можно Locale динамически передавать или выводить все переводы
источник