Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Мультиязычный сайт
Форумы портала PHP.SU » » Вопросы новичков » Мультиязычный сайт

Страниц (1): [1]
 

1. Perun - 30 Апреля, 2019 - 18:48:17 - перейти к сообщению
Прошелся поиском, результатами не удовлетворился...

Во-первых - слишком неоднозначно. как и статьи из интернета, во-вторых информация об этом 5-6 летней давности.

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

В силу своего разумения, варианты могут быть такими: либо отдельные домены/поддомены для разных языков, либо на одном домене но разные странички.

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

А если это динамические странички, и нужно каждый день, а то и по несколько десятков раз на день менять/добавлять не только ценники и названия товаров например для интернет магазина, а и выводить новые/редактировать имеющиеся массивы текста в виде статей, новостей и т.п.?
2. LIME - 01 Мая, 2019 - 15:01:31 - перейти к сообщению
Perun пишет:
сегодня этот вопорс или не имеет значения или вообще никак не решается, а мультиязычность образуется как-то сама собой
просто избитая уже тема
Perun пишет:
во-вторых информация об этом 5-6 летней давности.
говорю же избитая
короче слушай кратко
Perun пишет:
либо отдельные домены/поддомены
вариант просто реализовать
но есть проблемка
называется CORS
шоб ты понимал браузер отрежет все твои подзапросы к другому сайту
а поддомен для него это другой сайт
решаемо...но всеже
Perun пишет:
либо на одном домене но разные страничк
типа да
Perun пишет:
А если это динамические странички, и нужно каждый день
значит у тебя ахеренно успешная тема
не выеживайся и нанимай каунтри-мэнеджеров
лепи все тексты через переводчик(надеюсь нагуглил что это)
сложно значит сложно
серебряной пули не изобрели
успокоил твои нервы?
3. Perun - 01 Мая, 2019 - 15:35:12 - перейти к сообщению
LIME пишет:
успокоил твои нервы?

Даже не думал нервничать) Но все равно спасибо.
4. LIME - 01 Мая, 2019 - 16:14:39 - перейти к сообщению
Perun пишет:
либо на одном домене но разные странички.
я кажется неверно понял
неееет нет нет
не разные
страничка одна но все текстовые лексемы выводим в шаблоне через функцию переводчик
например
PHP:
скопировать код в буфер обмена
  1. echo _('это строчка на русском');

PHP:
скопировать код в буфер обмена
  1. function _(string $text) {
  2.     return дай_мне_из_базы_или_текстового_файла->text;
  3. }

функция переводчик
переводы автоматически или вручную регистрируются в админке
и проставляются переводы
можно по ключу

теперь перечитай выше инфу
сорь что недопонял
рецепт давно изобретен и юзается во всех маломальских фреймворках или цмс
5. Vladimir Kheifets - 03 Мая, 2019 - 12:59:49 - перейти к сообщению
Perun пишет:
...А если это динамические странички, и нужно каждый день, а то и по несколько десятков раз на день менять/добавлять не только ценники и названия товаров например для интернет магазина, а и выводить новые/редактировать имеющиеся массивы текста в виде статей, новостей и т.п.?

Добрый день!
Попробуйте сделать так:
1. Создайте одну или несколько таблиц в БД со следующими столбацами: id, ru, de, en, fr и.т.д. по столбцу на каждый язык.
2. Далее Вам нужно написать программу для заполнения таких таблиц.
3. Затем нужно выбрать все тексты из статического сайта и записать их в БД.
4. Вам потребуется функция, которая будет выбирать текты из БД
Спойлер (Отобразить)
5. Это пример вставки текста
Спойлер (Отобразить)

Ниже скиншоты сайта https://www[dot]alto-booking[dot]com/demo , на котором работает, описанное выше.
6. Perun - 03 Мая, 2019 - 13:05:56 - перейти к сообщению
Большое спасибо. Я пока только знакомлюсь с БД. Как продвинусь в этом вопросе, обязательно перечитаю все подсказки и советы!
7. LIME - 03 Мая, 2019 - 13:06:28 - перейти к сообщению
Нет не делай так
По столбцу на язык
Рукалицо
8. Строитель - 03 Мая, 2019 - 13:16:50 - перейти к сообщению
LIME пишет:
Рукалицо


Спойлер (Отобразить)
9. LIME - 03 Мая, 2019 - 13:22:44 - перейти к сообщению
Нееет
Тут уместнее видео как мальчик хочет шикаладку и плачет
Логика прибита гвоздями к инфраструктуре
Я реву навзрыд
Но ладно
На мелких проектах делайте как хотите
(Добавление)
А еще можно хотеть переводы привязать к релизу
Тогда текстовый файл удобнее
Тогда уже и пожалеешь что к инфраструктуре прибит намертво
10. Lolya - 09 Мая, 2019 - 10:00:47 - перейти к сообщению
Vladimir Kheifets пишет:
Попробуйте сделать так:
1. Создайте одну или несколько таблиц в БД со следующими столбацами: id, ru, de, en, fr и.т.д. по столбцу на каждый язык.
2. Далее Вам нужно написать программу для заполнения таких таблиц.
3. Затем нужно выбрать все тексты из статического сайта и записать их в БД..


О майнгад.. Однако Вы представляете НА СКОЛЬКО увеличится объем БД ???
Никогда не делайте так, это же бред и засерание БД лишней инфой. Чем больше объем БД, тем скорость меньше считывания, да и запросов будет - повесится можно...

Выход только один: сразу писать на 2-х языках, Английском и Русском, это самые пользуемые языки, их все учат, даже в странах азии.
11. LIME - 09 Мая, 2019 - 10:26:40 - перейти к сообщению
Lolya нет
Направление верное предложено
Вернее разжевано)
Реализация хромает
Можно тексты через переводчик по ключу в шаблон вставлять
Я вот работал с ресурсами на более 10 языках
12. Lolya - 09 Мая, 2019 - 11:31:53 - перейти к сообщению
LIME пишет:
Lolya нет

Что нет? У меня самопис-переделка TBDev трекера, реализовано аж 3 языка. Но все они завязаны на меню и страницы с функцией что вбиты в страницу языка (три страницы - Английский, Русский, Украинский). Что юзер выбрал (язык), на таком все страницы и показывает, а вот внутри (наполнение) уже из БД берется в том, в чем изначально туды залито, у меня это Английский/русский сразу, так как сайт в основном для запада. Украинцам юзать проще через украинское меню сайт, ну и читать на русском, или английском.

А брать из БД описание, допустим на Английском и через автоперевод вставлять в страницу Русским/Украинским - бред. Вы хоть раз этот переводчик видели? Там такой бред выходит в самых неожиданных местах... Ха-ха
13. Vladimir Kheifets - 09 Мая, 2019 - 11:58:10 - перейти к сообщению
LIME пишет:
Lolya нет
Направление верное предложено
Вернее разжевано)
Реализация хромает
Можно тексты через переводчик по ключу в шаблон вставлять
Я вот работал с ресурсами на более 10 языках


Я попробовал на примере из Вашего сообщения:
Спойлер (Отобразить)
ещё один пример, текст на немецком:
Das Oktoberfest generiert in den zwei Wochen jährlich durchschnittlich eine Milliarde Euro Umsatz.
При автопереводе на русский, текст искажается по смыслу:
Октоберфест генерирует в среднем один миллиард евро продаж каждые две недели.
автоперевод части текста
in den zwei Wochen jährlich => в течение двух недель ежегодно
14. LIME - 09 Мая, 2019 - 13:52:00 - перейти к сообщению
Lolya пишет:
У меня самопис-переделка TBDev трекера, реализовано аж 3 языка.
я таки вас сердечно))
какой еще такой "автоперевод"??!!
вы откуда это взяли вообще
функция-переводчик
Vladimir Kheifets не по столбцу на язык а по записи на язык
переводчик берет ключ и текущий язык и вытаскивает перевод
и не надо внутри метода явно лезть в бд
лучше использовать метод какого-нибудь класса-репозитория
тогда можно менять хранилища как перчатки и трогать при этом только репозиторий
а вернее менять его на другой тогоже интерфейса если уметь IoC и как правило DI
таким образом слои логики и инфраструктуры разделяются и мы становимся ГибШе)
(Добавление)
ну и раз пошла такая пьянка то и язык лучше получать из какого-нибудь класса UserContext
который внедрять в переводчик и который знает как выбирается язык
таким образом вам и единственность ответственности и разделение интерфейсов
полная любовь

 

Powered by ExBB FM 1.0 RC1