Содружество Независимых Программистов

Объявление

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Содружество Независимых Программистов » Статьи на [около]программистскую тематику » Хранение текстов для сайтов на русском и на английском


Хранение текстов для сайтов на русском и на английском

Сообщений 1 страница 20 из 20

1

Собираюсь писать свой сайт на Node.js/Express, где будут мои: блог/дневник/статьи и портфолио на двух языках: русский и английский. Я выяснил, что самой популярный модуль облегчающий ведение сайта на двух языках это i18n

Создаются два .json файла в папке "locales", где хранятся тексты на двух языках:

en.json

Код:
{
	"Hello": "Hello"
}

ru.json

Код:
{
	"Hello": "Привет"
}

Я не понимаю, как я буду ориентироваться в этих файлах по мере роста количества текста. Эти файлы будут разбухать всё больше и больше. Ключи могут начать повторяться.

Отредактировано 8Observer8 (Ср, 4 Дек 2019 19:10)

0

2

8Observer8 написал(а):

Я не понимаю, как я буду ориентироваться в этих файлах по мере роста количества текста. Эти файлы будут разбухать всё больше и больше. Ключи могут начать повторяться.

Так они вроде для функционала сайта, а не для контента.
Контент в БД.

Ну и в Руби похожая система, там файлы как-то разбиваются, а не всё в одном. https://github.com/Hexlet/hexlet-cv/tre … ig/locales

+1

3

8Observer8 написал(а):

en.json

Немного не по теме, но всё же. У тебя JSON неверно написан или я ошибаюсь? Вроде как должно быть всё обернуто в [], то есть,

Код:
[
	{"Hello": "Hello"}
]

0

4

Вадим Мошев написал(а):

Вроде как должно быть всё обернуто в [], то есть,

объект можно и на верхнем уровне.
[ ] - массив (значения), { } - объект (ключи/значения)

+2

5

Alex P. написал(а):

Так они вроде для функционала сайта, а не для контента.
Контент в БД.

Понятно. Я сайтами никогда не занимался. Есть повод тренироваться с MySQL. Я думаю, мне пока должно хватить 5МБ, которые даются на бесплатной версии MySQL на Heroku. Если не хватит, то перейду на $7 в месяц.

Alex P. написал(а):

Ну и в Руби похожая система, там файлы как-то разбиваются, а не всё в одном.

Я поищу, может на Node.js так тоже можно. Функционал сайта тоже может расти, но пока мне хватит пары .json файлов.

0

6

На Хероку для Postgre вроде больше дают.

+1

7

Вадим Мошев написал(а):

Немного не по теме, но всё же. У тебя JSON неверно написан или я ошибаюсь? Вроде как должно быть всё обернуто в [], то есть,

Эти файлы автоматом генерируются при первом запуске, при выполнении "i18n.configure", где я перечисляю какие локали использовать. Первый раз генерируются одинаковые файлы { "Hello": "Hello" }, и я пишу в "ru.json" пишу перевод.

У меня под рукой пример простого сервера на TypeScript. В примере по умолчанию вывелось бы в консоль "Hello", но команда "i18n.setLocale("ru");" выставляет локаль на русский, поэтому выводится "Привет":

Код:
import * as express from "express";
import * as i18n from "i18n";
import * as http from "http";

class App
{
    public constructor()
    {
        i18n.configure({
            locales: ["en", "ru"],
            directory: __dirname + "/locales"
        });

        let app = express();

        app.set("view engine", "hbs");

        let httpServer = http.createServer(app);
        httpServer.listen(3000);

        app.use(i18n.init);
        i18n.setLocale("ru");
        console.log(i18n.__("Hello"));
    }
}

new App();

0

8

Alex P. написал(а):

На Хероку для Postgre вроде больше дают.

Надо будет эту БД тоже осваивать. Посмотреть в чём разница между командами MySQL и Postgre. Я ещё MongoDB осваивал, но она мне не понравилась: много места занимает на жёстком (1 ГБ), а крайний раз она вообще почему-то не захотела работать после переустановки винды, я даже разбираться не стал, чтобы время не терять и место на ноуте освободил. У меня в SQL очень мало опыта. Книгу начал читать опять сначала на английском: SQL in 10 Minutes, Sams Teach Yourself (4th Edition) Мне очень она нравится. В ней простые практические упражнения. Знаю, только несколько основных базовых команд. Есть повод упражняться на своём сайте и на простых браузерных игрушках.

Отредактировано 8Observer8 (Ср, 4 Дек 2019 19:41)

0

9

8Observer8 написал(а):

Посмотреть в чём разница между командами MySQL и Postgre.

если ORM взять, то ни в чем )

Ну и стандартный SQL почти одинаковый.

Я книги по SQL так и не читал пока, только давно лекции в вузе и курс на Хекслете в этом году.

8Observer8 написал(а):

а крайний раз она вообще почему-то не захотела работать после переустановки винды

Да, я уже давно стараюсь не ставить ничего лишнего себе, намного проще через вагрант или докер.

Если ORM, то как вариант для разработки SQLite у себя поставить проще всего.

Ну и для веб-разработки удобнее на линуксе (или маке) сидеть.

+1

10

Alex P. написал(а):

SQLite у себя поставить проще всего

А это отличная мысль. Я тогда смогу обойти ограничения в 5 МБ для MySQL на Heroku. Правда, я не могу пока оценить для меня 5 МБ - это много или мало. Нужно будет попробовать сохранять тесты и посмотреть, как тратятся 5 МБ.

0

11

Alex P. написал(а):

Ну и для веб-разработки удобнее на линуксе (или маке) сидеть.

Я работаю в VSCode. Пакеты NPM ставлю и работаю с Git через "Far Manager". Привык. Мне кажется, удобно. Это всегда так, когда привыкаешь и другое не пробуешь. Пока сосредотачиваю время и ресурсы в одном направлении, в приоритете TypeScript и 2D/3D графика в браузере на WebGL (3D анимации и моделирование). Мак я бы очень хотел купить может через год или два, чтобы собирать нативные приложения для iOS из Xamarin на OpenGL и C#. Сейчас нужно сосредоточить время и силы только на приоритетных для меня вещах.

Отредактировано 8Observer8 (Чт, 5 Дек 2019 00:31)

0

12

Я на винде ConEmu + Clint использовал для консоли.

И Chocolatey для установки программ.
Особенно удобно на чистой винде всё установить скопировав команду типа

Код:
choco install 7zip.install audacity autohotkey.install calibre chocolateygui ConEmu cpu-z crystaldiskinfo.install crystaldiskmark curl discord ditto ffmpeg fiddler Firefox git.install gitkraken GoogleChrome gpu-z hwinfo.install hwmonitor irfanview kdiff3 kitty llvm mpc-hc msiafterburner notepadplusplus.install obs-studio paint.net prime95.portable pycharm-community python3 qbittorrent  sharex skype slack sqlitebrowser steam sysinternals teamviewer totalcommander vlc winrar -y

choco install foxitreader --ia '/MERGETASKS="!desktopicon,!setdefaultreader,!displayinbrowser /COMPONENTS=*pdfviewer,*ffse,*installprint,*ffaddin,*ffspellcheck,!connectedpdf"' -y
8Observer8 написал(а):

А это отличная мысль. Я тогда смогу обойти ограничения в 5 МБ для MySQL на Heroku.

Я имел в виду у себя SQLite (легко установить, может быть вообще ничего не надо кроме пакета нпм), на сервере Postgre/MySQL.
Если использовать ОРМ или какую-то другую абстракцию без SQL напрямую, то в стандартных случаях разницы не будет.

На Хероку у бесплатного Postgre ограничение 10к записей.

0

13

Alex P. написал(а):

И Chocolatey для установки программ.
Особенно удобно на чистой винде всё установить скопировав команду типа

Не слышал о таком. Это сэкономит кучу времени после установки винды.

Alex P. написал(а):

Я имел в виду у себя SQLite

А почему на Heroku не использовать SQLite? Тогда ограничений никаких не будет. Правда, может и 5 МБайт на MySQL для меня это выше крыши, а если не хватит, то можно на SQLite перейти, ведь изменения кода минимальны будут, потому что команды те же самые. Надо будет, кстати, поизучать, если разница в SQL между SQLite и MySQL. Я думал, что если и есть различия, то незначительные, но всё равно нужно знать об этих различиях.

Alex P. написал(а):

на сервере Postgre/MySQL.

Нужно что-то одно использовать: либо SQlite, либо Postgre, либо MySQL. Я использую автоматическое развёртывание из GitHub на Heroku. Я на странице приложения на Heroku во вкладке Deploy активирую "Connect to GitHub" и ставлю галочку "Auto-Deploy". В этом случае максимально быстро происходит развёртывание сервера на Heroku после команды "git push". Нельзя локально использовать SQLite, а развёртывать на сервере, используя MySQL. Я сразу разрабатываю и тестирую на реальном сервере, особенно, если это касается мультиплеера на socket.io. Свой сайт с блогом и портфолио мне нужно будет сразу развёртывать и по мере развития пополнять и изменять.

Alex P. написал(а):

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

С точки зрения установки через NPM нет никакой разницы между MySQL и SQLite:

MySQL:

npm i mysql
npm i -D @types/mysql

SQlite:

npm i sqlite3
npm i -D @types/sqlite3

Вторая команда нужна для поддержки TypeScript.

Интересно то, что на Node.js не нужно ставить сервер MySQL, как в случае с PHP, где нужно было ставить XMPP, что отнимало 1 ГБайт на жёстком, если не ошибаюсь. А если ставить MySQL локально через NPM, то занимает копейки, чуть больше 1 МБайта (если добавить @types/mysql, то всё весит почти 2 МБайта)

А что ещё больше удивляет, что установленный локально SQLite с помощью NPM занимает больше, чем MySQL - 12 МБайт (если добавить @types/sqlite3, то всё весит почти 13 МБайт)

Я пока буду использовать MySQL, потому что место на жёстком критично. 2 против 13 МБайт - это существенно, если создать десятки примеров с разными GitHub репозиториями. Попробовать нужно и SQlite на Heroku. Это хак получается. На бесплатной версии есть ограничение на MySQL, а с помощью SQlite ограничение снимается.

0

14

8Observer8 написал(а):

С точки зрения установки через NPM нет никакой разницы между MySQL и SQLite:

Для MySQL/Postgre еще сервер нужно установить.

8Observer8 написал(а):

Интересно то, что на Node.js не нужно ставить сервер MySQL

Нужно.
Пакет конечно установится, но надо ж подключаться куда-то.

8Observer8 написал(а):

А почему на Heroku не использовать SQLite?

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

8Observer8 написал(а):

Нужно что-то одно использовать: либо SQlite, либо Postgre, либо MySQL

В идеале да, но

Alex P. написал(а):

Если использовать ОРМ или какую-то другую абстракцию без SQL напрямую, то в стандартных случаях разницы не будет.

Некоторые так делают и всё норм )

0

15

Alex P. написал(а):

Для MySQL/Postgre еще сервер нужно установить.

Alex P. написал(а):

Нужно.
Пакет конечно установится, но надо ж подключаться куда-то.

В моём случае не нужно, потому что я хотя и запускаюсь локально, но соединяюсь у удалённой базой данных MySQL на Heroku. Я развернул простой пример из этого урока Metanit'а по MySQL в Node.js: https://typescript-mysql-from-metanit.herokuapp.com/

Alex P. написал(а):

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

То есть разница между MySQL и SQLite в скорости обращения? Условно говоря, если посещаемость будет 100 человек одновременно, то, к примеру, с SQLite пользователь будет ждать 3 секунды для обращения к SQLite и пол секунды для обращения к MySQL? Примерно хотелось бы ориентироваться в разнице.

Alex P. написал(а):

Если использовать ОРМ или какую-то другую абстракцию без SQL напрямую, то в стандартных случаях разницы не будет.

У меня очень плохие знания чистого SQL. Совершенно не хватает опыта в ежедневном практическом использовании. Я ещё не отработал его достаточно на практике, чтобы довести до автоматизма. Я в общем-то только начал осваиваться с MySQL из TypeScript. Задача со своим блогом и браузерными простыми игрушками идеально подходит, чтобы отрабатывать всё в комплексе на практике. Я пока не хочу разбираться как устанавливать пакеты для баз данных так, чтобы не было разницы. Нельзя сейчас время терять. Нужно отрабатывать, что работает и пока удовлетворяет. Мне ещё предстоит разобраться с математикой матриц скелетных анимаций механизмов в 3D с интерполяцией углов поворотов с помощью кватернионов. Скелетные анимации пока не для игр, а для механизмов. Сейчас я c i18n разобрался, как перевод интерфейса делать. MySQL тоже нормально работает. Так что эта тема завершена. Нужно теперь на 3D переключиться, на скелетные анимации в Blender и импорте этих анимаций в WebGL через .dae (Collada) файл. Это XML файл. Я его научился парсить на XPath из TypeScript. Это всё нужно отрабатывать на практике на примерах и более плотно переходить к GLSL-шейдерам на WebGL.

0

16

SQLite медленный при записи - транзакция блокирует всю базу, а не таблицы или их строки. В результате в единицу времени только одна операция записи

+2

17

8Observer8 написал(а):

В моём случае не нужно, потому что я хотя и запускаюсь локально, но соединяюсь у удалённой базой данных MySQL на Heroku.

а, ну да, так тоже можно )

Некоторые вообще делают отдельные сервера для разработчиков и почти всё там разворачивают. В ВСКоде даже есть какие-то фичи для этого. https://code.visualstudio.com/blogs/201 … evelopment
Просто это может быть дороже (на том же Хероку может не хватить лимита бесплатных воркеров если много сайтов и активно использовать) и бывает неудобно/медленнее, особенно если не vim/emacs.
Из плюсов: можно не иметь мощный комп, и можно легко подключиться помочь кому-то удаленно.

0

18

Alex P. написал(а):

Некоторые вообще делают отдельные сервера для разработчиков и почти всё там разворачивают. В ВСКоде даже есть какие-то фичи для этого.

У меня есть очень плохая привычка. Я могу забросить важные и первостепенные вещи, не отработать их до автоматизма, а начать улучшать то, что я ещё не пробовал. В результате я могу закопаться, забыть что я вообще собирался делать, насоздавать кучу проектов на Trello, и уйти очень далеко в сторону. Сейчас всё отлично работает. Мощности моего ноутбука хватает, чтобы работать с MySQL удалённо. А приложения у меня все спят. Я лимит ещё очень долго не исчерпаю, а если и исчерпаю, то узнаю, каково это. В крайнем случае, перейду на $7 в месяц. Я думаю, у моего сайта будет очень низкая посещаемость ещё очень долго. А из сетевых игрушек я только Крестики-Нолики начал и тоже думаю будет низкая посещаемость. Нужно отрабатывать и доводить до автоматизма, что уже есть, создавая разнообразные проекты по моим тематикам.

0

19

8Observer8 написал(а):

Я думаю, мне пока должно хватить 5МБ, которые даются на бесплатной версии MySQL на Heroku. Если не хватит, то перейду на $7 в месяц.

там за БД отдельно платить надо, от 10$.

Хероку в целом хорош тем, что почти всё делают они, но стоит намного дороже обычных VPS (DigitalOcean, Vultr, AWS, ...) если не хватило бесплатного.

https://i.imgur.com/KhUQVx3.png

0

20

Alex P. написал(а):

там за БД отдельно платить надо, от 10$.

Хероку в целом хорош тем, что почти всё делают они, но стоит намного дороже обычных VPS (DigitalOcean, Vultr, AWS, ...) если не хватило бесплатного.

Пока потренируюсь на бесплатном, чтобы поизучать TypeScript, MySQL и то что мне необходимо, а потом видно будет.

0


Вы здесь » Содружество Независимых Программистов » Статьи на [около]программистскую тематику » Хранение текстов для сайтов на русском и на английском