Здравствуйте, давненько не был, но появился повод спросить:
работаю над сайтом где есть... статьи на разных языках и переводы к ним на русский (и между языками), основной упор - переводы на русский.
языков много, среди них иврит, греческий, арабский, японский и тд, включая европейские и кириллические.
урлы в пределах каждого автора должны быть уникальны.
делал так:
для кирилических транслитерировал и в базу (utf-8)
для европейских романоподобных польский, чешский, немецки, французский и тд - тоже транслитерировал, но тут стали появляться отличия (по буквам/звукам, в правилах транслитерации по сравнению с родными для языка сайтами)
теперь добавились иврит, греческий, арабский, японский и тд, просмотрев "ихние" сайты - вижу что они урлят так сказать и на своей локали.
сейчас же вижу картину работы подругому:
- для русских языков - транслит
- для романских - как есть
- иврит, греческий, арабский, японский - ?
все их в rawurlencode() и в бд
вопрос :
как правильно/лучше/быстрее сохранять/хранить/выводить
а также индексировать в бд, какую кодировку для сравнения использовать, размер поля...
требуется сохранить дружественность внешнего вида урла для посетителей
учесть СЕО, (получать и иностранных посетителей на сайт)
в общем кто сталкивался - подскажите как у вас, как вы видите это?
(надеюсь доступно изложил суть)
спасибо
1. broshurkaplus - 01 Октября, 2018 - 19:24:57 - перейти к сообщению
2. LIME - 01 Октября, 2018 - 19:44:47 - перейти к сообщению
ничего не понял
с разноязычностью сталкивался но не понял что у тебя не получается
дай пример задачи
как положено
что имеем - что надо сделать - что не получается
на конкретном примере конкретной задачи
(Добавление)
ответ на вскидку: b64
теряем в размере зато все лежит в ASCII
(Добавление)
хм
кажется вопрос в сео
я бы поискал готовую библу для транслитерации
практически уверен что есть такая
или несколько под разные типы языков
и не всякий романский язык можно отображать как есть
например молдавский не получится
как молдаванин заявляю)))
с разноязычностью сталкивался но не понял что у тебя не получается
дай пример задачи
как положено
что имеем - что надо сделать - что не получается
на конкретном примере конкретной задачи
(Добавление)
ответ на вскидку: b64
теряем в размере зато все лежит в ASCII
(Добавление)
хм
кажется вопрос в сео
я бы поискал готовую библу для транслитерации
практически уверен что есть такая
или несколько под разные типы языков
и не всякий романский язык можно отображать как есть
например молдавский не получится
как молдаванин заявляю)))
3. broshurkaplus - 01 Октября, 2018 - 20:22:25 - перейти к сообщению
как пример:
пример - статья с заголовком
ΔΕΝ ΣΕ ΕΝΔΙΑΦΈΡΕΙ ΠΩΣ ΑΙΣΘΆΝΟΜΑΙ
урл для него транслитерированный
den-se-endiaferei-pos-aisthanoma i
статью перевел вася с заголовком
ПЕРЕВОД ТЕСТ
и урлом
perevod-test
перевел мойша с заголовком
למנצח על-המחולות
и урлом
lm-sh-al-hmhwlwt
ТУТ уже нет гласных и много вариантов для транслитерации
дальше ее перевел ахмед с заголовком
الأحلام، وأنهم جميعا الحصول عليها
и урлом
?
тут тоже нет гласных и 100500 языковых наречий и символов, что все сразу и не учтёш для замены, получаем малочитаемый текст урла, strtr() не получается, пробую заменяеть посимвольно с проверкой есть ли исходный символ как ключ для замены, и получаем для непредусмотренных символов ошибку - сохранение статьи не проходит
символа ا нет в массиве
символа ل нет в массиве
при rawurlencode() для الأحلام، وأنهم جميعا الحصول عليها имеем для хранеия в бд
string(186)
пример - статья с заголовком
ΔΕΝ ΣΕ ΕΝΔΙΑΦΈΡΕΙ ΠΩΣ ΑΙΣΘΆΝΟΜΑΙ
урл для него транслитерированный
den-se-endiaferei-pos-aisthanoma i
статью перевел вася с заголовком
ПЕРЕВОД ТЕСТ
и урлом
perevod-test
перевел мойша с заголовком
למנצח על-המחולות
и урлом
lm-sh-al-hmhwlwt
ТУТ уже нет гласных и много вариантов для транслитерации
дальше ее перевел ахмед с заголовком
الأحلام، وأنهم جميعا الحصول عليها
и урлом
?
тут тоже нет гласных и 100500 языковых наречий и символов, что все сразу и не учтёш для замены, получаем малочитаемый текст урла, strtr() не получается, пробую заменяеть посимвольно с проверкой есть ли исходный символ как ключ для замены, и получаем для непредусмотренных символов ошибку - сохранение статьи не проходит
символа ا нет в массиве
символа ل нет в массиве
при rawurlencode() для الأحلام، وأنهم جميعا الحصول عليها имеем для хранеия в бд
string(186)
CODE (html):
скопировать код в буфер обмена
скопировать код в буфер обмена
- "%D8%A7%D9%84%D8%A3%D8%AD%D9%84%D8%A7%D9%85%D8%8C%20%D9%88%D8%A3%D9%86%D9%87%D9%85%20%D8%AC%D9%85%D9%8A%D8%B9%D8%A7%20%D8%A7%D9%84%D8%AD%D8%B5%D9%88%D9%84%20%D8%B9%D9%84%D9%8A%D9%87%D8%A7"
а если заголовок подлиннее
если применить rawurlencode() для "сложных языков"и в бд, то получается длинно, хоть красиво при отображении ссылки для пользователя, (гуглу ведь пофиг)
как правильнее все организовать, ваше видение этого, как хранить преобразованные ссылки в бд индексить их, иль преобразовывать на лету при вводе выводе, а хранить сам текст
както так. ?
обернул в html, а то не прерывает строку
добавлю
дык для сербского например траслитим (пока) по двум вариантам для Вуковицы - по кирилическому, для Гаевицы - по романическому, типа заменяя ź=>zh,
для некоторых языков
ź => z (так них подсмотрел, в сео гугль выделяет в урле для польского точно)
сори проправлю тут еще раз
модератор не катит проект не коммерческий (

склоняюсь к rawurlencode() там индекс для latin1 777
вот спрашиваю советов