- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
я не агитировал, а обратил внимание на безграмотность
безграмотность - это не понимать какой инструмент и для чего, пытаться давать советы, не зная темы. В итоге отказ от хранения языковых файлов в базе оказывается правильным даже с твоей точки зрения. Люблю критику, когда она на чем -то основывается.
Ну вот и стоило бы прочитать сначала, о чем речь, прежде чем приходить и демонстрировать отсутствие понимания вопроса.
Вот и стоило бы грамотно сформулировать заголовок темы и хотя бы стартпост, вместо того, чтобы устраивать срач в теме, не понимая суть вопроса и обвиняя в этом участников форума.
где я агитировл за хранение текстов интерфейса в базе? я просто ответил на твой вопрос "а что я буду делать со строками из базы"
Это не ответ. Или ты не прочитал всю дискуссию. Гениальный Арбнет сказал что все запросто можно хранить в одной талице, я усомнился, попросил доказать. Ни от тебя ни от него ответа я не увидел - как?
Вот и стоило бы грамотно сформулировать заголовок темы и хотя бы стартпост
пока что срач устраиваешь ты и Арбнет, остальные хоть как-то аргументируют свою позицию.
Дальше. Простой запрос по языку типа SELECT * FROM table WHERE table.lang='ru', мне выдаст n-ое количество строк, как мне потом обрабатывать это?
ещё раз повторяю, я не агитировал за хранение текстов интерфейса в базе, а обратил внимание на глупый вопрос "как мне потом обрабатывать это? "
и на вашу текущую реализацию
1 - во-первых с портянкой со всеми языками в одном файле, зачем если нужен только один язык, подгружать сразу все переводы? их надо как минимум разнести по разным файлам для каждого языка отдельно, а как максимум и отдельно для каждого модуля, плюс один общий
2 - во-вторых каждый раз при загрузке этих переводов будет парситься json, это тоже накладные расходы, по-хорошему надо или хранить в отдельных py файлах, чтобы далее сгенерировался байт код pyc или прикрутить компиляцию джейсона в py, а далее в pyc
ещё раз повторяю, я не агитировал за хранение текстов интерфейса в базе, а обратил внимание на глупый вопрос "как мне потом обрабатывать это? "
Ну, выше, я вроде уточнил свой вопрос. В дискуссии принято исходить от высшего уровня к нижнему. Архитектура приложения. Сначала интерфейс, потом детали реализации. в данном случае интерфейс(хранение в файлах( пусть даже и в коде) предпочтительнее хранения в базе. Это слишком дорого. Да, в коде - самое быстрое, но чревато проблемами, описанными выше. Ну и хранение в разных файлах противоречит как SOLID так и DRY - не повторяйся. У меня один роутер будет обрабатывать все языки, соответственно если мне нужно поменять что-то, мне нужно поменять что-то в обработчике и в языковом файле, а не в 6 разных файлов для 6-ти языков.
Ну, выше, я вроде уточнил свой вопрос. В дискуссии принято исходить от высшего уровня к нижнему. Архитектура приложения. Сначала интерфейс, потом детали реализации. в данном случае интерфейс(хранение в файлах( пусть даже и в коде) предпочтительнее хранения в базе. Это слишком дорого. Да, в коде - самое быстрое, но чревато проблемами, описанными выше. Ну и хранение в разных файлах противоречит как SOLID так и DRY - не повторяйся. У меня один роутер будет обрабатывать все языки, соответственно если мне нужно поменять что-то, мне нужно поменять что-то в обработчике и в языковом файле, а не в 6 разных файлов для 6-ти языков.
пока что срач устраиваешь ты и Арбнет, остальные хоть как-то аргументируют свою позицию.
Смешно... Если почитать тему, кто здесь что пишет. Ну ладно, продолжай блистать.
и на вашу текущую реализацию
1 - во-первых с портянкой со всеми языками в одном файле, зачем если нужен только один язык, подгружать сразу все переводы?
Спасибо за комментарии, не думал что python код так сложен для понимания, поясняю. Все данные никогда не выгребаются. Вот есть условный роутер, обрабатывающий запросы типа
site.com/{lang}/users/profile когда пользователь в меню выбирает язык ru происходит переадресайия на урл
Соотвтетсвенно роутер идет в этот мой большой JSON:
{"en": {
"subjects": {
"subjects": {
"chemistry": "chemistry",
"math": "mathematics"
}
},
"mentors": "mentors",
"scheduler": "scheduler",
"news": "news",
"adverts": "adverts"
},
"ru": {
"subjects": {
"предметы": {
"chemistry": "химия",
"math": "математика"
}
},
"mentors": "преподаватели",
"scheduler": "расписание",
"news": "новости",
"adverts": "обьявления"
}
}
И по ключу "ru" выгребает только данные для русского интерфейса:
Fastapi умеет кэшировать данные и пока пользователь не сменит язык - ему будет подгружаться интерфейс из "ru" интерфейса.
То есть в шаблонизатор приходит малюсенький обьект только с тем что нужно.
тогда лучше всего прикрутить компиляцию джейсона в py
так и есть:
Смешно... Если почитать тему, кто здесь что пишет. Ну ладно, продолжай блистать.
Слушай, если у тебя есть возражения по техчасти, реализации - добро пожаловать, с удовольствием выслушаю. Мне на самом деле эта дискуссия очень помогает - пытаясь сформулировать ответы, я уже оптимизировал свой код неплохо. Давай не будем переходить на стиль Арбнета. Если аргументируешь плюсы за базу данных, покажешь как бы ты хранил это в БД, как получалбы - буду очень благодарен, может я что-то упускаю и твой вариант окажется верным?