Есть:
1. Нода node/23 - русская
2. Нода node/24 - английский перевод 23-й
Находясь по адресу /ru/node/23 имеем две ссылки:
1. В блоке "Языки" ссылку на /en/node/23 - переключает интерфейс на инглиш но оставляет показ русской ноды
2. Под нодой ссылка на /ru/node/24 - показывает английскую ноду на русском междумордии
Нужно:
В блоке "Языки" иметь ссылку на /en/node/24
Интуитивно я догадываюсь как, но хотелось-бы уточнить
Фактически реализовывается таким-вот образом:
1. Если текущий URI указывает на ноду определённого типа (из заданного списка, например: story, blog, page, book)
2. Если у текущей ноды есть перевод на соответствующий язык
3. Заменить в блоке "Языки" ссылку на ту, которая переключит и междумордие и перевод контента.
В идеале хочется чтобы при заходе на /en/node/23 показывался английский перевод с английским междумордием а на /ru/node/24 - русский с русским. Т.е. чтобы содержание ноды подменялось её переводом если таковой имеется под текущий язык.
Для чего нужен идеальный вариант:
1. Создаём алиас soft для node/23 и при заходе на ru/soft видим контент node/23 на русском междумордии
2. Создаём перевод 23-й ноды node/24 но алиас ему задать не получается ибо ужо занят и при заходе на en/soft видим всё ту-же node/23 но с английским интерфейсом, что не есть гуд.
Фактически нужно шарить алиасы между переводами и переключать контент вместе с междумордием одним кликом, а не двумя.
Подскажите где копать
Комментарии
Неужели никому не интересен вопрос?
пока нет! но тебе пожелаю удачи, поскольку вещь нужная
мало у кого имеются двуязычные сайты... наверное поэтому и интерес невелик...
а какой модуль используется для двух языков?
Не очень долго мучался с таки, так как понял что создам себе еще больше проблем, смотрел модуль i18 - не понравилось
Потом просто у домена русского softq.org сделал английский поддомен eng.softq.org
Что это дало:
- просто, не надо мучаться с указанной проблемой
- зарегестрировал на поисковиках как 2 отдельных сайта, что сделало возможным такую ситуацию: если в среднем поисковик за проходод берет около 30 страниц, то теперь, так как это 2 отдельных сайта (с точки зрения поисковика) то берется 60 страниц, по 30 на каждый, т.е. более быстрая индексация сайта
- человек когда за ходит а сайт видит именно нужный ему язык, вверху сделал просто 2 флага, для выбора языка.
кстати, есть ещё мультисайтинг... где-то на Друпале.ру обсуждалось, что можно сделать разные таблицы для разных языков и всё это будет работать под одним сайтом нормально...
Юзаю i18n. Мультисайтинг не подходит потому что пробовал - не понравилось. Модуль нормально рулит переводами, создавая фактически упрощённый вариант мультисайтинга. В "Типах материалов" могу задать какие типы нод локализуемы а в sites/default.php задать какие системные переменные локализуемы. Плюс через отдельный модуль рулю какие блоки на каких языках показывать, что актуально для вручную нарисованного графического меню. Всё хорошо кроме вышеозначенной траблы. Перевод фактически является другой нодой. Переключение пути с ru/xxx на en/xxx переключает междумордие (включая меню навигации и блоки) но вот открытая нода не затрагивается. Фактически нужно написать простейший хук но я API Друпала совсем не знаю и никогда под него не программировал (кроме ковыряния кривых модулей под 4.3.0). Подскажите как начать и я попробую.
Проблема актуальна т.к. делаю сейчас несколько двухъязыковых сайтов с распределённой системо обслуживания. Т.е. одним людям я дам право на размещение картинок, другим на написание статей а третьим на их перевод. Вот только-бы решить как-то проблему смены языка открытой статьи и всё будет в шоколаде
Пока временно решил проблему, оставив выбор языка на странице входа и спрятав соответствующий блок со всех остальных страниц.
и статья открытая переключается, все нормально - никаких хуков делать не надо, просто переключалку-ссылку нормальную повесить
<a href=\"/ru/". translation_url($_GET['q'], 'ru') ."\">рус</a>
О! Работает
Создал блок с таким текстом:
Для русского интерфейса:
<a href="/en/<?php print translation_url($_GET['q'], 'en') ?>">Переключиться на английский</a>
Для английского:
<a href="/ru/<?php print translation_url($_GET['q'], 'ru') ?>">Switch to russian</a>
Пока так, а когда будет диз сайта - влепим туды графическую переключалку
Откопал в официальной доке. Всё оказалось до безобразия просто.
Получается так:
Допустим у нас сайт на двух языках (en/ru)
Если я создаю ноду и присваиваю ей путь soft то она будет видна в ru/soft и en/soft, но вот если русской копии присвоить путь ru/soft а английской en/soft то они будут не на ru/ru/soft а именно на указанных местах. Так мы имеем на ru/soft русскую версию а на en/soft английскую. В меню подставляются эти-же самые алиасы. Вроде всё ок, но остаётся одна фигня: если использовать приведённую выше переключалку языков, то она нас будет бросать на ноды с путями node/xxx а не на алиасы. Так что остался вопрос как по коду ноды узнать её алиас.
Пойду покопаю path.module
[b]Для русского интерфейса:
Для английского:
<a href=”/ru/<?php print translation_url($_GET[‘q’], ‘ru’) ?>”>Switch to russian</a>
[/b]
надо бы наоборот... Switch to English и Переключиться на русский. Ведь, тем кто попадает ев английскую страницу (если они говорят на английском) переключаться на русский не нужно. Им наоборот, если они случайно на русскую попали, надо перейти на английскую версию... а если там будет надпись "Переключиться на английский", они же не понять могут...
Дельно, но я потом заменил это на:
[b]EN[/b]-[u]RU[/u] в английском
и на:
[u]EN[/u]-[b]RU[/b] в русском
Где подчёркивается ссылка на переключение.
А потом стало ещё смешнее, когда я обнаружил блок Translations который вместо Languages переключает всё, а не только интерфейс
Вот оно как бывает с невнимательными
А можно квотировать код а то нифига не видно?
Ну это то что ты только что сделал
От англ quote - брать в кавычки, квотировать - видоизменять текст для вставки если его непосредственная вставка невозможна ввиду присутствия управляющих символов или тегов.