!/Multilanguage Pages
Нп Ж.Языки
| Dima | привет. есть вопрос по WackoWiki. ты тут? | 13.08.2003 18:32:06 |
| Роман Иванов | тут, ага. | 13.08.2003 18:32:21 |
| Dima | WackoWiki конечно, не Wiki :) | 13.08.2003 18:32:36 |
| Dima | да, вопрос: будет ли проблемой использовать её для хранения данных на многих языках, включая такие как китайский, японский? | 13.08.2003 18:33:10 |
| Роман Иванов | да, будет. ибо она не работает с UTF (пока?). | 13.08.2003 18:33:41 |
| Dima | мне нужен Wiki для хелпа по eMule Plus, а там очень много переводов, и хелпы будут многоязычные | 13.08.2003 18:33:50 |
| Роман Иванов | и FTS в mysql по UTF не бывает вроде =( | 13.08.2003 18:34:03 |
| Dima | причём очень желательно на PHP, т.к. хост sourceforge.net | 13.08.2003 18:34:16 |
| Dima | не подскажешь, чем воспользоваться? | 13.08.2003 18:34:24 |
| Роман Иванов | >> 13.08.2003 18:33:50 Dima wrote: если в разных документах, то можно подумать, и какой-то логики добавить | 13.08.2003 18:34:47 |
| Dima | в разных | 13.08.2003 18:34:59 |
| Dima | а какая логика тут нужна? выдать странице нужный charset? | 13.08.2003 18:35:53 |
| Dima | или пихать данные в MySQL в нужной форме? | 13.08.2003 18:36:06 |
| Роман Иванов | тогда можно в качестве метаинформации каждой страницы добавить lang, и выдавать соответствующий чарсет и использовать соотвествующую локаль. однако, это не поможет с FTS =( | 13.08.2003 18:36:33 |
| Dima | кстати, можно спокойно перевести на Unicode – нужно просто все данные туда/сюда конвертить, например, через base64 | 13.08.2003 18:37:24 |
| Dima | и FTS будет работать | 13.08.2003 18:37:33 |
| Dima | вопрос, сколько кода для этого нужно перелопатить | 13.08.2003 18:37:44 |
| Роман Иванов | base64? хммм. хммм. | 13.08.2003 18:38:08 |
| Dima | ну да, придётся проверку ещё раз делать, перед показом данных, что ошибки не произошло и мы нашли правильно | 13.08.2003 18:38:56 |
| Dima | но это уже мелочи | 13.08.2003 18:39:02 |
| Роман Иванов | пока я не очень понимаю, как это делать, с base64. | 13.08.2003 18:39:49 |
| Dima | но у меня нет времени такими вещами заниматься, я лучше в регистр mysql поддержку добавлю :)) | 13.08.2003 18:39:54 |
| Dima | ну как, очень просто | 13.08.2003 18:39:58 |
| Dima | когда добавляешь данные в БД, сначала пропусти через base64_encode() | 13.08.2003 18:40:28 |
| Dima | на обратном пути base64_decode() | 13.08.2003 18:40:38 |
| Dima | не все данные, а только те, которые содержат текст, конечно | 13.08.2003 18:41:00 |
| Роман Иванов | как это поможет найти документ, содержащий японской слово kuso (на иероглифах)? | 13.08.2003 18:41:27 |
| Dima | можно даже сделать, чтобы это внутри функций, работающих с БД было, просто нужные поля им пометить | 13.08.2003 18:41:27 |
| Dima | при поиске ты тоже ищешь слово, закодированное в base64 | 13.08.2003 18:41:50 |
| Dima | или оно там неоднозначно кодируется? ща проверю | 13.08.2003 18:42:23 |
| Dima | в общем неважно, можно использовать более простую функцию, однозначно перекодирующую | 13.08.2003 18:43:29 |
| Dima | да, размер БД сильно возрастёт | 13.08.2003 18:43:38 |
| Dima | но зато будет поддержка юникода | 13.08.2003 18:43:45 |
| Роман Иванов | а откуда узнавать праввильный чарсет? | 13.08.2003 18:44:13 |
| Dima | гм | 13.08.2003 18:44:23 |
| Dima | а в каком виде данные в php скрипт попадают? т.е. если я введу юникод, в скрипт придёт юникод или система данные почикает в соответствии с локалью? | 13.08.2003 18:45:33 |
| Dima | т.е. вопрос: проблема только с БД или на уровне скрипта тоже? | 13.08.2003 18:45:48 |
| Dima | я не проверял, честно говоря – у меня до сих пор таких проблем не возникало | 13.08.2003 18:46:04 |
| Роман Иванов | тебе не ввести уникод, пока на странице выставлен charset=windows-1251, ага? | 13.08.2003 18:46:12 |
| Dima | наверное, я не проверял :) | 13.08.2003 18:46:20 |
| Роман Иванов | >> 13.08.2003 18:44:13 Роман Иванов wrote: я понял ответ, ага, оно в уникоде будет. | 13.08.2003 18:46:45 |
| Роман Иванов | но кроме чарсета есть ещё локаль | 13.08.2003 18:46:55 |
| Dima | ладно, мы от темы уклонились :) | 13.08.2003 18:46:57 |
| Роман Иванов | КемелКейс без локали не опознать | 13.08.2003 18:47:08 |
| Dima | ты мне лучше скажи, если я текст буду пихать как обычно в БД, а на странице будет правильный чарсет, оно работать будет? | 13.08.2003 18:47:33 |
| Dima | оно=WackoWiki | 13.08.2003 18:47:52 |
| Роман Иванов | вопрос не понял. | 13.08.2003 18:47:57 |
| Dima | ну допустим, кто-то пишет по-китайски страницу, в которой указан китайский чарсет | 13.08.2003 18:48:18 |
| Dima | в БД оно запишется без проблем? | 13.08.2003 18:48:27 |
| Dima | или одними вопросительными знаками? | 13.08.2003 18:48:41 |
| Роман Иванов | смотри. сейчас: текст не в уникоде приходит от юзера. кладётся в бд. согласно настройкам ___ваки___ в нём размечаются КемелКейсы (т.е. используется локаль). потом никем никуда неконвертированный текст согласно настройкам ___ваки___ выдаётся с определённым чарсетом. | 13.08.2003 18:49:38 |
| Роман Иванов | то есть если поставить рядом две ваки, одну с lang => de, другую с lang => ru, то всё будет хорошо. а в рамках одной не будет. | 13.08.2003 18:50:13 |
| Роман Иванов | если перевести на уникод: | 13.08.2003 18:50:24 |
| Роман Иванов | текст от юзера приходит в уникоде, кладётся в БД, выдаётся юзеру обратно в уникоде. но как размечать КемелКейс — непонятно. | 13.08.2003 18:51:00 |
| Dima | ясно | 13.08.2003 18:51:12 |
| Dima | ну у меня ситуация всё-таки проще | 13.08.2003 18:51:19 |
| Dima | на одной странице может быть только один язык использован | 13.08.2003 18:51:30 |
| Роман Иванов | ничуть не проще =) | 13.08.2003 18:51:45 |
| Dima | то есть, если я настрою, что у страниц /wiki/ru/... будет русская локаль, а у страниц /wiki/cn/... китайская, оно ведь будет работать? | 13.08.2003 18:52:23 |
| Роман Иванов | ну, наверное, да =) | 13.08.2003 18:54:23 |
| Dima | ну в общем, будем посмотреть :) | 13.08.2003 18:54:32 |
| Dima | не подскажешь, где эти строчки дописать? мне просто лень искать нужное место в скрипте :) написать-то я напишу | 13.08.2003 18:55:07 |
| Роман Иванов | сейчас локаль жёстко прописана в начале wakka.php зависимость от lang будет только в R4. | 13.08.2003 18:56:39 |
| Dima | вот это setlocale(LC_CTYPE,'ru_RU.CP1251'); и вот это header("Content-Type: text/html; charset=windows-1251") правильно? т.е. если я что-то пропустил, то поиск по 1251 выведет меня на нужную дорогу, да? :) | 13.08.2003 18:57:59 |
| Роман Иванов | вот эти два плюс define("UPPER","[A-Z\xc0-\xdf\xa8]"); define("UPPERNUM","[0–9A-Z\xc0-\xdf\xa8]"); define("LOWER","[a-z\xe0-\xff\xb8\/\']"); | 13.08.2003 18:58:29 |
| Dima | вопрос, а насколько нужен setlocale в скрипте? на что он влияет? | 13.08.2003 18:58:47 |
| Роман Иванов | на ровно две вещи. \b в регекспах и strtoupper/strtolower | 13.08.2003 18:59:08 |
| Dima | а что такое UPPER/LOWER? разрешённые символы? что случится, если я уберу эти ограничения? | 13.08.2003 18:59:21 |
| Роман Иванов | переписывать регекспы без \b – заимёшся =( \b(".UPPER.ALPHANUM."+\.".ALPHANUM."+)\b | 13.08.2003 19:00:45 |
| Dima | гм... | 13.08.2003 19:00:59 |
| Dima | что же мне делать? | 13.08.2003 19:01:02 |
| Роман Иванов | стреляться =((( или тщательно собирать инфу о чарсетах, локалях и списки upper/lower символов. | 13.08.2003 19:01:33 |
| Dima | да уж | 13.08.2003 19:01:41 |
| Dima | блин | 13.08.2003 19:01:43 |
| Dima | как же мне быть... | 13.08.2003 19:01:50 |
| Роман Иванов | поискать уинкодную вику. | 13.08.2003 19:01:59 |
| Роман Иванов | уникодную. | 13.08.2003 19:02:03 |
| Dima | :) | 13.08.2003 19:02:03 |
| Роман Иванов | не исключено, что такие в природе есть. | 13.08.2003 19:02:15 |
| Dima | есть вроде | 13.08.2003 19:02:45 |
| Dima | http://www.wikipedia.org/wiki/Wikipedia:PHP_script | 13.08.2003 19:02:48 |
| Роман Иванов | не вижу там про уникод но если это так, то это клёво | 13.08.2003 19:04:14 |
| Dima | ну сама wikipedia работает на куче языков и не жалуется | 13.08.2003 19:04:32 |
| Dima | мне это и надо :) | 13.08.2003 19:04:36 |
| Dima | а как они там внутри организовали – не важно, | 13.08.2003 19:04:50 |
| Роман Иванов | угу, если там не отдельная инсталляция для каждого языка. | 13.08.2003 19:04:57 |