Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Сохранение текстов на разных языках в базе данных

2187  1 2 3 4 5 6 все
uscheswoi_82 старожил29.11.21 05:30
NEW 29.11.21 05:30 
в ответ alex445 28.11.21 10:13
Эй, кто мне минусы лепит? Лучше ответ дайте. ))

А там ведь платно вроде бы, не? Если платно, то сомневаюсь что кто-то зареган из этого форума там. Ну это всегда так, сплошные хейтеры и тролли. Влепил кто-то дизлайк, и спрятался.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#81 
alex445 старожил29.11.21 08:57
NEW 29.11.21 08:57 
в ответ uscheswoi_82 29.11.21 05:30, Последний раз изменено 29.11.21 08:58 (alex445)

На SO платно? Не знаю, как сейчас, а 7-9 лет назад всё бесплатно было. Да и недавно на их других сайтах из Stackexchange регался - бесплатно.

#82 
alex445 старожил29.11.21 09:33
NEW 29.11.21 09:33 
в ответ alex445 29.11.21 08:57

Короче, в Юнити сделано всё так, чтобы максимально усложнить тебе жизнь при использовании чего-то не из Юнити. Поэтому ставишь тамошний плагин по локализации или покупаешь чего-то в ихнем магазине плагинов и не выё... Юнити, похоже, больше зарабатывает на продаже всяких штук в своём магазине для разработчиков, чем на просто лицензиях своего движка, поэтому всё, что стороннее и не из стора - максимально затруднено для интеграции.

#83 
alex445 старожил30.11.21 12:14
NEW 30.11.21 12:14 
в ответ AlexNek 13.11.21 13:02

Так как вы решили делать-то? Через таблицы связей между языковой таблицей и всеми остальными, где требуется перевод? Получилось как хотели или нет?

#84 
AlexNek патриот02.12.21 12:52
AlexNek
NEW 02.12.21 12:52 
в ответ alex445 30.11.21 12:14
Так как вы решили делать-то?

Это было ка бы "научное исследование". До конкретной имплементации пока еще далеко.

Хорошего решения всё равно нет. Или медленно или неудобно

#85 
alex445 старожил02.12.21 14:10
NEW 02.12.21 14:10 
в ответ AlexNek 02.12.21 12:52

В самом универсальном решении всего одна таблица связей добавляется, и лишь для информации, которая требует локализации. По наблюдениям за другими сайтами, в том числе крупных компаний, некоторые предпочитают вообще разные версии сайтов для каждой локали держать. Лишь похожие элементы оформления и стилей используют. Ну это у кого денег и времени много.

#86 
AlexNek патриот02.12.21 21:52
AlexNek
NEW 02.12.21 21:52 
в ответ alex445 02.12.21 14:10
В самом универсальном решении всего одна таблица связей добавляется,

Скорость не подсчитывали?

#87 
alex445 старожил02.12.21 23:36
NEW 02.12.21 23:36 
в ответ AlexNek 02.12.21 21:52, Последний раз изменено 02.12.21 23:37 (alex445)

Неа. Предложенное решение - лучшее с точки зрения организации и дальнейшей поддержки. Для скорости лучше, наверное, завести в таблице столько вариантов одного поля, требующего локализации, сколько самих локалей предусмотрено. Тогда будет так же быстро, как и обычное обращение к таблице БД без локализации.

#88 
Murr патриот03.12.21 00:05
Murr
NEW 03.12.21 00:05 
в ответ alex445 02.12.21 23:36

Для скорости лучше

-----

Ты бы по базам что-нибудь почитал, что ли...

#89 
alex445 старожил03.12.21 00:33
NEW 03.12.21 00:33 
в ответ Murr 03.12.21 00:05

Две таблицы


T1

id

name


T2

id

nameEn

nameRu

nameDe


Есть вариант сделать мультиязычность быстрее, чем во второй таблице?

#90 
Murr патриот03.12.21 00:42
Murr
NEW 03.12.21 00:42 
в ответ alex445 03.12.21 00:33

Конечно есть! Причем - больше одного варианта.

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

И, можешь смеятся, надо будет освоить работу с файлами... в том числе - с большими (больше размера памяти) файлами... об чем тебе давалась элементарная задачка. смущ

#91 
uscheswoi_82 старожил03.12.21 07:58
NEW 03.12.21 07:58 
в ответ alex445 03.12.21 00:33

Тут что-то написали https://stackoverflow.com/questions/537204/localisation-i18n-of-database-data-in-linq-to-sql

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#92 
alex445 старожил03.12.21 08:39
NEW 03.12.21 08:39 
в ответ Murr 03.12.21 00:42, Последний раз изменено 03.12.21 08:48 (alex445)
Конечно есть! Причем - больше одного варианта.
Но чтобы понимать что надо делать - надо изучать базы чутка глубже, чем написание селектов...
И, можешь смеятся, надо будет освоить работу с файлами... в том числе - с большими (больше размера памяти) файлами... об чем тебе давалась элементарная задачка.

Размера какой памяти? БД и не держит все таблицы в оперативке. Или вам нужна локализация многих текстов размерами в гигабайты каждый?


А если задача не стоит делать всегда и обязательно рекордные БД (ну не все тут Гуглы или обрабатывают миллиарды записей), то таблицы связей и локализованные поля начинают работать? Ведь конкретное решение зависит от задачи:


1) вас устраивает тупой говнокод - даже с ним ничего не тормозит;

2) вас устраивает простое следование простым примерам из букварей;

3) вас устраивает просто хорошо написанная БД в стандартной СУБД;

4) вы делаете какие-то хаки-доработки для стандартной СУБД и экспериментируете со схемами БД;

5) вас уже не устраивает стандартная БД и хаки-доработки не помогают, вы делаете свою БД, заточенную под ваши задачи.


Ваши советы почти всегда из разряда не ниже 4. Тогда как подавляющее число задач решается способами 1-3.


И вы не могли бы почаще давать конкретные советы, как и что именно тут и здесь можно сделать, а не общие, типа почитай этот толмуд, пройди этот курс?

#93 
Программист коренной житель03.12.21 09:06
NEW 03.12.21 09:06 
в ответ alex445 03.12.21 00:33, Последний раз изменено 03.12.21 09:08 (Программист)
Есть вариант сделать мультиязычность быстрее, чем во второй таблице?

А зачем тут 2 таблицы :)


Я бы сделал так:

T_En

id

text


T_Ru

id

text


T_De

id

text

Собственно говоря, лет 15 тому назад мы так и сделали.

Логика менеджера была простая как мычание :

1) Взять строку из T_xx

2) Если строки нет, то взять строку из T_En

3) Если строки нет, то вернуть id

А для того, чтобы сразу было видно, прошла ли эта строка через менеджер, в дебаг моде к каждой строке добавлялся префикс '###'.


Все просто и понятно. При этом сразу видно какие строки берутся из БД, а какие хардкодед. И всегда можно легко найти строки без перевода.

#94 
alex445 старожил03.12.21 10:25
NEW 03.12.21 10:25 
в ответ Программист 03.12.21 09:06, Последний раз изменено 03.12.21 10:53 (alex445)
А зачем тут 2 таблицы :)

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

#95 
MrSanders коренной житель03.12.21 10:51
NEW 03.12.21 10:51 
в ответ Программист 03.12.21 09:06
Я бы сделал так:

Имеет право на существование. Но. Добавлять новый язык будет не так просто. И если уж мы заботимся о скорости... Такое решение будет медленнее джойна с таблицей с локализованными текстами.

Потому что менеджер явно на стороне приложения. А значит на поиск перевода тратит новый запрос. А раундтрип у запроса раз в ... 10? больше стоимости джойна вроде

SELECT а.*, c.text as CITY_LOC FROM ADDRESS a JOIN I18_TEXT c ON a.CITY_NAME_ID = c.ID AND c.LANG = "en" WHERE ....

#96 
alex445 старожил03.12.21 10:56
NEW 03.12.21 10:56 
в ответ Программист 03.12.21 09:06, Последний раз изменено 03.12.21 10:56 (alex445)
Я бы сделал так:

Вы просто храните все локализованные тексты в таблицах по одной на язык. А подключаете их как? Типа такого?


T_Item

id description - id from T_En


Как выбор таблицы с нужной локалью происходит?

#97 
uscheswoi_82 старожил03.12.21 12:14
NEW 03.12.21 12:14 
в ответ alex445 03.12.21 10:56

НП.

Наверное нужно применять LINQ, там можно разную магию делать, насчёт СУБД в память, есть In Memory DB - https://docs.microsoft.com/ru-ru/sql/relational-databases/in-memory-database?view=sql-server-ver15

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#98 
Murr патриот03.12.21 12:58
Murr
NEW 03.12.21 12:58 
в ответ alex445 03.12.21 08:39

И вы не могли бы почаще давать конкретные советы

-----

Тебе снова сказать про фрагментированность твоих знаний?

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


почитай этот толмуд, пройди этот курс?

-----

А что делать, если ты сам не учишься? Учить-то за тебя никто не будет...

Похоже, что и тебя учить тоже никто не будет.


из разряда не ниже 4.

-----

Вообще-то - чистая 3.

Только чтобы это понять надо знать чутка больше чем написание селекта. Не на много, но все же больше.

#99 
Murr патриот03.12.21 13:07
Murr
NEW 03.12.21 13:07 
в ответ Программист 03.12.21 09:06

лет 15 тому назад мы так и сделали

-----

Угу... А во что выльется добавление еще одного языка?


Я бы сделал так

-----

Ну а Я бы почитал про партиционирование...


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

1 2 3 4 5 6 все