|
|
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Пишу движок для сайта на 3-х языках. Возможно еще парочка потом добавиться, не больше. Википедией сайт навряд ли станет. Смену языков планирую делать на лету, т.е. подгружаются сразу все переводы, но лишние просто скрываются ява-скриптом Вопрос: нужно ли заморачиваться и выносить переводы в отдельную таблицу, потом ее джойнить и т.д.? Пока в таблицах делаю по столбцу на каждый язык (name_ru, name_en, name_fr). Конечно, на добавление нового языка уйдет день, но это будет... раз в два года. Расскажите о своем опыте? Посоветуйте толковые статьи по теме многоязычности (в т.ч. задание валют, символов разрядов). Как бы вы реализовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2013, 18:46 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Shitbox2, Вообще-то, скажем так, нужно - значит нужно. 1. " лишние просто скрываются ява-скриптом" - совершенно плохой подход. Это всё "скрытие" надо на сервере делать. 2. Если надо в таблицах - делайте в таблицах. Вам джойн написать лень? Кстати, в больщинстве случаев джойн не понадобится. Просто берите из реквеста язык и вставляйте его во "ВХЕРЕ" запроса. 3. Насчёт валют и разрядов и тп. - всё должно делаться Вашим движком, в зависимости от настроек пользователя (см. реквест). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2013, 20:24 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Бред какой-то. Если надо то делайте, если не надо, то и париться нечего. Если вы сами не знаете, кто-то другой тем более не сможет ответить. С подгрузкой всего еще больший бред, если у вас будет 10 языков, то страничка будет вместо 100кб - 1Мб весить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2013, 21:33 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Не будет 10 языков точно. Будет 3. Возможно, потом еще 1, 2... Это мне кажется, что если заводить отдельную табличку с переводами, то запары больше будет. Может это не так, не знаю. А что плохого в том, чтобы показывать загружать сразу все переводы? Ну будет лишний трафик, зато пользователь щелк и моментально все перевелось. Это что касается навигации, а большие тексты аяксом. Как сделать без джойна? Можно подробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2013, 23:39 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
авторЭто мне кажется, что если заводить отдельную табличку с переводами, то запары больше будет. Мне так кажется с вашим методом будет больше запар, а толку меньше. Это не гугл транслит, пользователь не будет туда сюда языки щелкать сидеть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 07:56 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Ну может быть, поэтому и спрашиваю мнений. И как сделать-то без Джойна? Можно на пальцах структуру БД и запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 19:03 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Вот чтоб вообще не париться есть Gettext http://php.net/manual/ru/book.gettext.php :) не переживайте пишите свой движок, а осознание "правильной" структуры придет с практикой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 19:28 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
авторБиблиотека gettext предполагает хранение перевода в файлах с расширениями .mo авторДля формирования и обновления этих файлов при изменении программы предполагается использование ряда утилит. авторПервоначально, строки из исходного текста программы собираются с помощью программы xgettext в .pot-файл (каталог). Обновление этого файла и файлов переводов с использованием новых и изменившихся строк, появившихся в исходном коде, осуществляется программой msgmerge. авторДля начала перевода программы на конкретный язык, переводчик создаёт .po-файл: копирует .pot-файл в нужное место и меняет в нём заголовок. Для этого можно использовать программу msginit. Готовый файл перевода конвертируется в .mo-файлы утилитой msgfmt. Архив gettext-0.18.2.tar.gz 2012-12-25 08:58 Папка Папка gettext-0.18.2 2012-12-25 08:17 50966 9223372034707292159 gettext-0.18.2\ChangeLog 2012-12-25 08:58 Папка Папка gettext-0.18.2\build-aux 2012-12-25 08:29 6567 9223372034707292159 gettext-0.18.2\build-aux\install-reloc 2012-12-25 08:29 4749 9223372034707292159 gettext-0.18.2\build-aux\relocatable.sh.in 2012-12-04 09:28 1186 9223372034707292159 gettext-0.18.2\build-aux\ac-help.sed 2012-12-25 08:33 2796 9223372034707292159 gettext-0.18.2\build-aux\elisp-comp 2012-12-25 08:29 2821 9223372034707292159 gettext-0.18.2\build-aux\csharpexec.sh.in 2012-12-04 09:28 31272 9223372034707292159 gettext-0.18.2\build-aux\moopp 2012-12-25 08:29 2463 9223372034707292159 gettext-0.18.2\build-aux\javaexec.sh.in 2012-12-04 09:28 1452 9223372034707292159 gettext-0.18.2\build-aux\fixaclocal 2012-12-25 08:40 44935 9223372034707292159 gettext-0.18.2\build-aux\config.guess 2012-12-25 08:29 4134 9223372034707292159 gettext-0.18.2\build-aux\config.libpath 2012-12-25 08:29 3306 9223372034707292159 gettext-0.18.2\build-aux\reloc-ldflags 2012-12-25 08:29 5463 9223372034707292159 gettext-0.18.2\build-aux\csharpcomp.sh.in 2012-12-25 08:40 35758 9223372034707292159 gettext-0.18.2\build-aux\config.sub 2012-12-25 08:30 13997 9223372034707292159 gettext-0.18.2\build-aux\install-sh 2012-12-25 08:29 18717 9223372034707292159 gettext-0.18.2\build-aux\config.rpath 2012-12-25 08:33 6047 9223372034707292159 gettext-0.18.2\build-aux\mdate-sh ... И еще 100500 строк, которые даже опубликовать нельзя, т.к. превышено 100 Кб ... 2012-12-04 09:28 11892 9223372034707292159 gettext-0.18.2\djgpp\config.sed 2012-12-04 09:28 12210 9223372034707292159 gettext-0.18.2\djgpp\config.bat 2012-12-04 09:28 17405 9223372034707292159 gettext-0.18.2\djgpp\fnchange.in 2012-12-04 09:28 6578 9223372034707292159 gettext-0.18.2\PACKAGING 2012-12-25 08:36 30323 9223372034707292159 gettext-0.18.2\Makefile.in 2012-12-25 08:36 23780 9223372034707292159 gettext-0.18.2\aclocal.m4 2012-12-15 06:32 7794 9223372034707292159 gettext-0.18.2\Makefile.am # # Всего: Размер Сжат Файлы # 76330355 /0-('+.+('-(*. 4838 Они пользователей за идиотов держат? Пусть сами ковыряются в своей библиотеке! Можно как-нибудь без этого? Только ПХП и МайСКЮЛ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 23:34 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Shitbox2, Делается 1 обычная таблица (к примеру `users` (`id`, `name`, ... куча других параметров)), вторая таблица `users_i18n` (`id`, `language_id`, `name` и куча других параметров, для которых нужны переводы) и таблица `languages` (`id`, `language`). Потом пишется метод getI18n($languageId) в классе, отвечающем за данную сущность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2013, 00:25 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
getI18n это функция библиотеки GetText? Какая-то странная структура. Зачем-то создавать кучу табличек-дубликатов с переводами, зачем-то в них идентификатор языка делать... Не понимаю логики Не проще ли и быстрее сделать одну общую табличку с переводами: Strings id ru en de fr ... и везде ссылаться на id строк из нее: Article id iser_id title_id text_id Код: sql 1. Да, еще замечу, что в моем случае точно не будет проектов с кучей языков, падежами и проч. А в переводе будет нуждаться в основном интерфейс и несколько информационных статей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2013, 01:40 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
И еще, все тексты планирую хранить исключительно в БД и отдавать в JSON, а JS сам уже будет страничку строить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2013, 02:01 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Shitbox2, Shitbox2Не проще ли и быстрее сделать одну общую табличку с переводами: Strings id ru en de fr ... Проще и быстрее (поначалу), когда у тебя в таблице 3 поля. А вот уже когда 33, то не проще и не быстрее. И противоречит идее нормализации базы данных. Но, как ты изволил выразиться, "заморачиваться" тебе не стоит. Ибо кажется, что оно тебе на данном этапе твоих знаний и не нужно. Shitbox2getI18n это функция библиотеки GetText? Нет, причем тут GetText? Это самописный метод в классе, реализующем некое подобие DAO . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2013, 02:12 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Shitbox2getI18n это функция библиотеки GetText? Какая-то странная структура. Зачем-то создавать кучу табличек-дубликатов с переводами, зачем-то в них идентификатор языка делать... Не понимаю логики Не проще ли и быстрее сделать одну общую табличку с переводами: Strings id ru en de fr ... и везде ссылаться на id строк из нее: Article id iser_id title_id text_id Код: sql 1. Да, еще замечу, что в моем случае точно не будет проектов с кучей языков, падежами и проч. А в переводе будет нуждаться в основном интерфейс и несколько информационных статей. Но пройдет годик и вы захотите еще 1 добавить, придеться лаьтерить табличку. А на продакшене уже базка 1гб весит, и альтер заблочит ее на пол часа, когда будет пытаться пропихнуть дополнитульную колонку. Ну не принято добавлять данные через алтеры, все делают это через класический инсерт language_id language1ru2en user_id language_id112132 page_id1 translate_idlanguage_idpage_idtitlecontent121hi hello world211прет првиет мир ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2013, 09:12 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Shitbox2Не проще ли и быстрее сделать одну общую табличку с переводами: Strings id ru en de fr ... и везде ссылаться на id строк из нее: жесть. а чем вас отпугнул gettext. Может вы что то не до поняли. для Вас как разработчика уже не важно сколько языков будет выпишите на одном языке. Код: php 1. 2. 3. 4. 5. Все готово. Теперь находите редактор к примеру Poedit, указываете ваш проект он парсит его вытягивает оттуда Этот текст нужно перевести предлагает вам его перевести сохраняем и кидаем в папку к примеру locale/sw/LC_MESSAGES/ ну это конечно же если перевод был на Суахили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2013, 15:22 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
авторА на продакшене уже базка 1гб весит, и альтер заблочит ее на пол часа, когда будет пытаться пропихнуть дополнитульную колонку. Ну не принято добавлять данные через алтеры, все делают это через класический инсертВот это аргументированно, очень полезная информация, приму к сведению! А стоит ли вводить language_idlanguage1ru2en Может в качестве id языка использовать ISO-код ru, en (можно забить в enum). Коды известны, занимают два символа, языков больше 10 точно не будет, зато не нужно лишних джойнов. авторprint(_("Этот текст нужно перевести")) У меня такого никогда не будет, т.к. все тексты в базе. В ПХП только технические сообщения об ошибках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2013, 01:59 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
На счет хранения переводов в виде id, lang_id, text вместо id, text_ru, text_en, ... Как в первом случае ссылаться на таблицу с переводами? Т.е., если у на с есть таблица articles id, text_id Что писать в text_id? Ведь во втором случае айдишников в таблице переводов будет несколько? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 14:21 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
*во первом случае айдишников в таблице переводов будет несколько ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 14:22 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
я бы сделал так: к примеру у вас запись: Код: php 1. 2. 3. а в шаблоне: Код: php 1. где делалось что то примерно следующее (вариант без кеша, тут только логика. А по идеи все надо вначале извлечь а потом уже применять, а то на 1 страницу 100 селектов будет) Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 17:58 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Ага, в некоторых движках вместо unicid md5 применяют. Что, ИМХО муторно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 20:55 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Чушь то, что вы сравниваете uniqueid с md5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2013, 21:50 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
я бы сделал так: 1. заюзал бы http://php.net/manual/en/function.serialize.php http://www.php.net/manual/en/function.unserialize.php 2. в бд сделал бы табличку Код: php 1. 3. в PHP использовал бы массив (де\сериализовал бы его в таблицу БД) Код: php 1. 2. 3. 4. 5. 6. 7. 8. 4. в шаблон выводил бы Код: php 1. ПыСы - если бы контента на одной странице было бы очень много и большое кол-во используемых языков, тогда бы заморочился на создание отдельных таблиц под разные языки... Код: php 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2013, 14:18 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
как то так..., статейка под 100кб, всего 10 языков поддерживает сайт, итого массив занимает 1мб. 1. Чтобы десериализовать 1мб строку уйдет время и ресурсы. 2. Чтобы показать юзеру страничку на русском языке, ваш скрипт будет вытаскивать все абсолютно переводы данной строки, и мало того будет тратить ресурсы (см пункт 1) на их отработку. 3. Неудобно работать с переводами как с сущностями. К примеру попросят вас в админке сделать страничку со списком тех статей у которых нет перевода одного из языков. В случае одна запись, один перевод можно реализовать всего 1 запросом, а в вашем слцчае придеться выдернуть !!все!! записи из таблички (1000 статей допустим), каждую десериализовать и потом уже смотреть. (в случае со 100кб, вы пропарсите 100мб текста, вам оно надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2013, 14:30 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
как то так... ПыСы - если бы контента на одной странице было бы очень много и большое кол-во используемых языков, тогда бы заморочился на создание отдельных таблиц под разные языки... То что в табличке будет сотни мегабайт данных не есть проблема. У большинства крупных сайтов существуют таблички в десятки гигабайт (все это без шардинга!!!), и все с паврильно настроеной репликации и ключей работает вполне нормально. Ну и зпросики не криво главное писать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2013, 14:34 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
авторвам оно надо? golden hammer - в данном случае (впрочем, как и всегда) не существует по определению! ;) читаю... авторНе будет 10 языков точно. Будет 3. Возможно, потом еще 1, 2... авторДа, еще замечу, что в моем случае точно не будет проектов с кучей языков, падежами и проч. А в переводе будет нуждаться в основном интерфейс и несколько информационных статей . проверено опытом - мой подход выдержит его желание на все 100%!!! + 13942833 читай (ПыСы) - этот подход, при необходимости, можно крутить и укладывать в разные строки, разные таблицы, и даже разные БД - это не принципиально - важно сохранить структуру выводимого на страницу (в шаблон) массива - вот и всё!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2013, 14:48 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Меня поражают люди, которые даже свои труселя в базе хранят... Что, простыми js файлами хранить - не? А при генерации просто или lang подставлять в линки или вообще на стороне клиента это делать (можно и сервера через X-Accel-Redirect) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2013, 17:42 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
авторЧто, простыми js файлами хранить - не? в чём профит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2013, 18:12 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
WarstoneМеня поражают люди, которые даже свои труселя в базе хранят... Что, простыми js файлами хранить - не? А при генерации просто или lang подставлять в линки или вообще на стороне клиента это делать (можно и сервера через X-Accel-Redirect) меня больше паражают люди которые так делают) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2013, 19:19 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
как то так...в чём профит?Кеш локи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2013, 12:04 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
авторКеш локи. заинтриговал! у меня есть страница с меню, которое я должен перевести на два языка ru\en где я должен постучать для перевода, что бы автор простыми js файлами хранить... А при генерации просто ... lang подставлять в линки... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2013, 15:09 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
WarstoneМеня поражают люди, которые даже свои труселя в базе хранят... Что, простыми js файлами хранить - не? А при генерации просто или lang подставлять в линки или вообще на стороне клиента это делать (можно и сервера через X-Accel-Redirect) А зачем плодить тыщу файлов, можно просто их генерить в рантайме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2013, 17:51 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Хоть в переводе нуждается практически только интерфейс, но он-то все-равно динамический. Может поменяться состав меню, выпадающих списков, каких-нибудь заголовков. Что, каждый раз js-файлы править? Все хранится в базе потому что там хранится, вообще, все. Т.е. ни в HTML ни в JS никаких текстов, кроме технических нет. Шаблонизаторы по этой же причине никакие в принципе не могут быть использованы. PHP берет из БД, транзитом передает в JS, тот вставляет в HTML, всё. Основное требование тут это удобство разработки. Чтобы из-за таблички с языками не приходилось везде вставлять муторные запросы в 4 строчки или захламлять базу левыми вещами. Ну и быстродействие на выдачу хотя бы. Кстати, зачем генерировать уникальную строку, если можно в translates хранить id, article_table, article_id. Последние даже можно слить в одно поле. X-Accel-Redirect что за зверь и почему с ним должно быть проще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 01:17 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
авторЧто, каждый раз js-файлы править? а что в БД это само поправится? ;) авторШаблонизаторы по этой же причине никакие в принципе не могут быть использованы. !? ИМХО муторно как-то организовано у тебя (AJAX - для перевода!) - то ли от непонимания, то ли от незнания... таблички какие-то and etc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 13:55 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
автора что в БД это само поправится? ;) Одно дело если локализацией занимается погроммист, он открыл проектик пошаманил там в файлах. А если нужен веб-интерфейс, то вы тут же обретаете дополнительный гемморой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 14:11 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
авторА если нужен веб-интерфейс, то вы тут же обретаете дополнительный гемморой. как ни странно, но я ни за ни против - я воспринимаю и БД и ФС как некое хранилище информации - в данном случае - перевод интерфейса страниц портала - и там и там есть свои плюсы и свои минусы! ;) + на сколько удобно организовано получение\передача информации от хранилища к пользователю и обратно - навык программиста - и этот вопрос мне вовсе не интересен - мой выбор MVC - и на сегодня он обжалованию не подлежит! ;) интересно другое казалось бы логичное решение выстраивать шаблон страницы, используя переменные в качестве статичного контента, в которые можно засунуть описание-перевод в зависимости от запрашиваемого языка - не проходят! вопрос перетекает из плоскости в плоскость и упирается в надуманные проблемы! Лично я (повторюсь!) использую БД Sqlite - где храню интерфейс страниц в виде сериализованных массивов - довольно быстро и очень удобно - на проектах категории НЕ GOOGLE!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 16:01 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Shitbox2Все хранится в базе потому что там хранится, вообще, все. Т.е. ни в HTML ни в JS никаких текстов, кроме технических нет. И получаем на свою голову проблемы с хранением версий/истории правок сайта. Базу в систему контроля версий уж очень неудобно уталкивать. HettОдно дело если локализацией занимается погроммист, он открыл проектик пошаманил там в файлах. А если нужен веб-интерфейс, то вы тут же обретаете дополнительный гемморой. Мне всегда казалось, что научить локализатора править тексты в файлах ресурсов обычным текстовым редактором гораздо проще, чем Web интерфейс для них делать. А нормальный переводчик, привыкший к текстовым редакторам дурной Web-интерфейс кучу раз проклянет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 16:09 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
InkelyadShitbox2Все хранится в базе потому что там хранится, вообще, все. Т.е. ни в HTML ни в JS никаких текстов, кроме технических нет. И получаем на свою голову проблемы с хранением версий/истории правок сайта. Базу в систему контроля версий уж очень неудобно уталкивать. HettОдно дело если локализацией занимается погроммист, он открыл проектик пошаманил там в файлах. А если нужен веб-интерфейс, то вы тут же обретаете дополнительный гемморой. Мне всегда казалось, что научить локализатора править тексты в файлах ресурсов обычным текстовым редактором гораздо проще, чем Web интерфейс для них делать. А нормальный переводчик, привыкший к текстовым редакторам дурной Web-интерфейс кучу раз проклянет. не разу не видел чтобы локализатор имел доступ к ftp или к репозиторию проекта, да и еще умел работать с онными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 16:15 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Ренатне разу не видел чтобы локализатор имел доступ к ftp или к репозиторию проекта, да и еще умел работать с онными. А ему не надо уметь. У него есть доступ к текстовому документу ресурсов в google docs или чем-то похожем. Потом мы его сами на место кладем/тестируем/исправляем ошибки/коммитим. Говорим, что нас не устроило (прямо в goggle docs комментариями) и цикл повторяется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 16:23 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
А если надо перевести на 40 языков и приложение растет и добавлять перевод необходимо постоянно, то с каждым переводчиком так мучиться каждый раз? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 16:27 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
Мне так проще сделать одну страничку за 3 часа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 16:28 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
А за день можно и обвертку написать, где переводчик будет кликать на текст и тут же править его и сохранять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 16:29 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
HettА за день можно и обвертку написать, где переводчик будет кликать на текст и тут же править его и сохранять. Без версионности работать с любым текстовым материалом плохо. Очень. А в GoogleDocs она есть. Можно, конечно, и в свою обертку встроить, но стоит ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 16:59 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
авторПотом мы его сами на место кладем/тестируем/исправляем ошибки/коммитим. и какая разница кладёте вы его в БД или файл ресурсов или ещё куда? ;) всяко, он попадает сперва к вам а уж потом в проект! авторИ получаем на свою голову проблемы с хранением версий/истории правок сайта. делайте бэкап, что ли... ;) ИМХО - не важно где и как хранить важно, как отдать! ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 17:46 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
как то так...и какая разница кладёте вы его в БД или файл ресурсов или ещё куда? ;) всяко, он попадает сперва к вам а уж потом в проект! Если в проекте лежит текстовый исходник того, что потом в базе данных будет, то все хорошо. Только непонятно, для чего база в этом случае нужна. С тем же успехом можно вместо скрипта заливки в базу написать скрипт генерации статических шаблонов c подставленным языком. А если мы перевод сразу в базу данных заливаем, не включая текстовый исходник в проект - то смотри ниже. делайте бэкап, что ли... ;) То-то программисты системы контроля версий придумали. "Самай последний перевод этой странцы в этом файле лежит, другой - в другом. Как бы нам теперь как бы нам все эти изменения в один файл слить? А вот тут мы вчера решили измениния отменить, у кого версия за н-ное число сохранилась" Без системы контроля версий с текстовой информацией работать нельзя. Бардак выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 18:51 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
авторТолько непонятно, для чего база в этом случае нужна. м.б. как минимум, целостность информации + тот же бэкап? авторБез системы контроля версий с текстовой информацией работать нельзя. Бардак выходит. да ладно - делай инсерт в БД с временной меткой вместо апдейта - не мне тебя учить - т.ч. считай, разговор ни о чём! Твоя позиция ясна - сохранять всё по файликам в фс и дёргать их! Явных преимуществ твоего подхода против хранения информации в БД (для конкретного случая) я не увидел! Да и не основная это проблема - место хранения! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 20:17 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
как-то так...м.б. как минимум, целостность информации + тот же бэкап? Про целостность в смысле "чтобы не хранились переводы для объектов, на которые ссылок нет" - можно согласится. Про бэкап - не понял. Делать резервное копирование статических файлов гораздо проще, чем базы. да ладно - делай инсерт в БД с временной меткой вместо апдейта - не мне тебя учить - т.ч. считай, разговор ни о чём! История изменений переводов на этапе функционирования сайта вещь совершенно не нужная, она нужна большей частью тому, кто сайт делает. Поэтому где-то в движке сайта ей заниматься вредно. Вот если именно CMS пишется - тогда нужно об этом думать. Твоя позиция ясна - сохранять всё по файликам в фс и дёргать их! Совершенно верно, подгружается файл ресурсов и используется. Автор темы хочет генерацией страницы на JS заниматься, те можно брать шаблонный движок на JS и хранить на сервере шаблоны для его работы. Вытянуть же браузером статический файл /templates/i18n/ru.json проще и для головы и для сервера. Явных преимуществ твоего подхода против хранения информации в БД (для конкретного случая) я не увидел! Преимущества будут в момент, когда нам потребуется слить изменения от двух разработчиков. Один поправил один раздел сайта, другой человек - другой раздел. Но при этом одну и ту же фразу перевели по разному. Теперь это нужно все слить в одно целое. При использовании текстовых ресурсов у нас система контроля версий заметит, что одну и ту же строку в файле ресурса меняли оба. А с базой данных нужно будет самому отслеживать. Да и не основная это проблема - место хранения! Вопрос был про то, как делать. Я бы дела так: Для динамического контента (те такой, который пользователи сайта сами без участия программистов добавляют) делаем по таблице на язык и жоиним. Если нравится из отдельных столбцов язык вытаскивать - делам подходящий VIEW. Для всего остального - ресурсы в виде статических текстовых файлов для понравившегося варианта gettext. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 21:47 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
авторДля динамического контента... угу... перевод на различные языки и есть тот самый "динамичный контент" (С) +по прежнему интересно - Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. опустим подгрузку json-а - бо это жесть! интересуют твои действия, в соответствии с твоей парадигмой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 10:41 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
опустим подгрузку json-а - бо это жесть! Если шаблонизатор у нас работает внутри браузера, а не на серверной стороне - то вполне неплохо. Другое дело, что сама идея шаблонного движка внутри браузера у меня некоторое сомнение вызывает. интересуют твои действия, в соответствии с твоей парадигмой? [/quot] Загрузку ресурсов и шаблонов пропустим. А в самом шаблоне (условный шаблонизатор) странички будет Код: php 1. 2. 3. 4. 5. Шаблонизатор возмет шаблон, возмет ресурсы локализации и через gettext подставит во все _('...') перевод. Если верстка для разных языков отличается, то тогда придется для разных языков руками разные шаблоны страницы делать. Если хочется сделать оптимизацию загрузки, жертвуя дисковым пространством, то придется делать скрипт, который на этапе сборки сайта из шаблонов c _('') и ресурсов делает странички с уже подставленным языком. Но это уже если очень надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 11:19 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
автор А в самом шаблоне (условный шаблонизатор) странички будет неужели ты так и непонял, что механика будет одна и таже и там и там? Код: php 1. 2. 3. 4. 5. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. можно долго и упорно рассуждать о преимуществах и недостатках одного против другого... у тебя задействован gettext - нужно смотреть\изучать проверять тебе нужны какие то tempates textdomain bindtextdomain изменить тип хранилища ты уже не в состоянии ты вообще жёстко привязан к предоставленному тебе механизму!!! у меня задействован самописный механизм подстановки значений - нужно парится придумывать контроль версий тоже нужно придумать самому зато я волен выбирать хранилище по своему усмотрению - сегодня Sqlite, завтра ФС, послезавтра Mongo и я не привязан ни к чему (кроме PHP) - в принципе, шаблон я могу отдать в другой проект - любой разберётся как наполнить его контентом! и т.д. и т.п. Однако, суть - Механика - ОДНА И ТА ЖЕ!!! и там и там динамичный контент, выводимый из хранилища, в нужных местах по ключу!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 12:48 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
как то так... Однако, суть - Механика - ОДНА И ТА ЖЕ!!! и там и там динамичный контент, выводимый из хранилища, в нужных местах по ключу!!! Пришли таки к выводу, закроем этот балаган? Два разных метода, что кому что нравитьс ятот и юзает. У каждого метода есть свои плюсы и минусы, у каждого свои трудности. Всеравно каждый останеться при своем мнении и продолжит юзать свой метод (я за всю жизнь еще ни разу почемуто не работал с сайтами с мультиязычностью). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 12:54 |
|
||
|
Многоязычность на сайте. Как реализовать и нужно ли париться?
|
|||
|---|---|---|---|
|
#18+
РенатПришли таки к выводу, закроем этот балаган? Можно закрыть. Просто я как раз занимаюсь поддержкой сайта в архитектуре, которую Shitbox2 хочет использовать, сделан. Те 1) Статические по смыслу тексты хранятся в базе. 2) Хранятся в колонках с именами *_ru, *_en 3) Страница большей частью генерируется в браузере клинета 4) Шаблонизатор при этом не используется. Удовольствие, прямо скажем, сильно ниже среднего. Может, когда-нибудь кто-нибудь прочитает и так делать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 14:02 |
|
||
|
|

start [/forum/topic.php?all=1&fid=23&tid=1464099]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 351ms |

| 0 / 0 |
