Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Несколько языков, CMS/CMF 
:(
    Опции темы
CyClon
Дата 24.2.2008, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Собственно, интересует описание вариантов организации мультиязычности на сайте (т.е. системные сообщения будут выводиться на выбранноя языке).

На данный момент в голове крутиться всего лишь один разумный вариант: инклюдим файл, например /languages/$language.php с подобным содержанием:

Код
<?php

define('LANGUAGE_ERROR', 'Ошибка!');
define('LANGUAGE_WELCOME', 'Добро пожаловать!');
define('LANGUAGE_GO', 'Перейти');


И далее просто используем в коде константы.

Но что-то мне подсказывает, что есть более разумные варианты организации мультиязычности smile Поделитесь? smile


--------------------
user posted image
PM   Вверх
gta4kv
Дата 24.2.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: нет
Всего: 91



Имхо, тоже самое, но только array()'ем надо делать.
PM MAIL   Вверх
CyClon
Дата 24.2.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Этот вариант не рассматриваю, ибо получиться тормознутее даже чем у меня в первом посте smile

Добавлено через 1 минуту и 43 секунды
Да и смысл от Array нулевой, что писать LANGUAGE_WELCOME, что $language['welcome'] - одно и тоже, только теоретичеси массив должен больше ресурсов жрать. Плюс значения массива можно изменять (что нам абсолютно не нужно).


--------------------
user posted image
PM   Вверх
WolfON
Дата 24.2.2008, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 1
Всего: 8



Эффективно для этого использовать xml, в техногрете было много статей на эту тему

А константы для этого дела - бред сумасшедшего
PM MAIL ICQ   Вверх
gta4kv
Дата 24.2.2008, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: нет
Всего: 91



CyClon, предложил array, т.к уже выше сказано - "А константы для этого дела - бред сумасшедшего".
XML тоже интересная идея. Но помойму не очень удобная.
PM MAIL   Вверх
skyboy
Дата 24.2.2008, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



PM MAIL   Вверх
gta4kv
Дата 24.2.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: нет
Всего: 91



skyboy, ваще не в тему
PM MAIL   Вверх
Daevaorn
Дата 24.2.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: нет
Всего: 70



Цитата(gta4kv @  24.2.2008,  16:32 Найти цитируемый пост)
skyboy, ваще не в тему 

похоже вы не в теме самиsmile
PM MAIL WWW   Вверх
CyClon
Дата 24.2.2008, 15:54 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



gta4kv, Ну тогда приведи хотя бы пару фактов в пользу массивов. Я могу привести как минимум один против, причем весомый - константы видны везде, массивы придется объявлять глобальными для видимости в функциях.

Вот вы пишите, "бред сумасшедшего". А обосновать? Чем тот же gettext/xml будет лучше такого варианта?


--------------------
user posted image
PM   Вверх
awers
Дата 24.2.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: нет
Всего: 31



Функции gettext реализуют NLS (Native Language Support) API, который может использоваться для интернационализации ваших PHP-приложений

что не так?
PM MAIL WWW ICQ Skype   Вверх
CyClon
Дата 24.2.2008, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Другими словами - дает возможность юзать несколько языков на сайте. Теперь вчитайся в мой пост. Я просил аргументы в пользу gettext/xml и против использования констант.


--------------------
user posted image
PM   Вверх
awers
Дата 24.2.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: нет
Всего: 31



Цитата(CyClon @ 24.2.2008,  17:07)
Другими словами - дает возможность юзать несколько языков на сайте. Теперь вчитайся в мой пост. Я просил аргументы в пользу gettext/xml и против использования констант.

Ну мне кажется что приемущество констант не отнять (видимость). Но ИМХО константы это муветон. Представь как будут смотреться 2-3 тысячи констант. Не правильно это.

Ассоциативные массивы - в топку сразу. Они намного больше памяти кушают.
XML - тут надо искать подход. Если незнать как на данном этапе устроин движок - каких либо плюсов выделить нельзя.
PM MAIL WWW ICQ Skype   Вверх
solenko
Дата 25.2.2008, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 2
Всего: 67



Цитата

Ассоциативные массивы - в топку сразу. Они намного больше памяти кушают.
XML - тут надо искать подход. 

А xml вы в куда парсить будете? Уж не в асоциативный ли массив )
XML/ini/ваш_вариант хорош только тем, что с ним может работать не программист. Ну и еще один довод есть -- это модно )

А использовал кто-то gettext? Я видел олько один продукт с его использованием -- gallery2. Если использовали, может поделитесь опытом, расскажите о подводных камнях? А то вроде бы и самый логичный способ локализации и, в то же время, мало кто пользует.


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
awers
Дата 25.2.2008, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: нет
Всего: 31



не . геттекст я в живую не видел.. 

по поводу XML - нефакт что в массивы. надо смотреть что сейчас наработанно, что-бы что-то советовать или решать
PM MAIL WWW ICQ Skype   Вверх
skyboy
Дата 25.2.2008, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



[offtopic]
Цитата(solenko @  25.2.2008,  01:11 Найти цитируемый пост)
самый логичный способ локализации и, в то же время, мало кто пользует

кстати, судя по форуму, такой подход не только на gettext распространяется :(
[/offtopic]
PM MAIL   Вверх
CyClon
Дата 25.2.2008, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Цитата
2-3 тысячи констант


Ну, представь xml файл в 3 тысячи строк, что, намного проще чтоли будет? smile
Опять же с того же XML данные будут гнаться в константы, которые уже будут использоваться в коде. Так что думаю пока на своем варианте остановлюсь, потом если нужно, просто прикручу парсер и особо ничего менять не придется.

На счет gettext - недостаточно инфы для его использования, да и пользы пока не вижу smile
Цитата
2-3 тысячи констант


Ну, представь xml файл в 3 тысячи строк, что, намного проще чтоли будет? smile
Опять же с того же XML данные будут гнаться в константы, которые уже будут использоваться в коде. Так что думаю пока на своем варианте остановлюсь, потом если нужно, просто прикручу парсер и особо ничего менять не придется.

На счет gettext - недостаточно инфы для его использования, да и пользы пока не вижу smile


--------------------
user posted image
PM   Вверх
lumega
Дата 25.2.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 13.2.2008

Репутация: нет
Всего: нет



я вижу очень большое преимущество в геттексте.
Это ж встроенный переводчик. Не нужно задавать тонну непонятных переменных или констант. Пишем на родном языке, а потом достаточно просто обратиться к переводчику (нужной языковой таблице). Думаю мысль понятна. smile 
PM MAIL WWW   Вверх
CyClon
Дата 25.2.2008, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Цитата
я вижу очень большое преимущество в геттексте.
Это ж встроенный переводчик. Не нужно задавать тонну непонятных переменных или констант. Пишем на родном языке, а потом достаточно просто обратиться к переводчику (нужной языковой таблице). Думаю мысль понятна.  


Поятно smile Но писать на русском языке я внутри скриптом однозначно не буду smile В общем. как я понял - gettext - это использование вместо констант выражений на одном из языков, которые при надобности через таблицу соответствий транслируются в другие? )


--------------------
user posted image
PM   Вверх
CyClon
Дата 25.2.2008, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Кто использует gettext, плз приведите пример .po файла.

ЗЫ: На самом деле очень удобная штука оказывается. Просто хочу на всякий случай реализовать свой парсер файлов, на случай если на сервере не будет gettext.


--------------------
user posted image
PM   Вверх
CyClon
Дата 25.2.2008, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Код
<?php

$locale['Hello world!'] = 'Привет мир!';
$locale['Loading...'] = 'Загрузка...';

function _($string)
{
    if (isset($GLOBAL['locale'][$string])) {
        return $GLOBAL['locale'][$string];
    } else {
        return $string;
    }
}

echo _('Hello world!');


Можно парсить XML файл, загонять все данные в массив и так использовать. Плюс данного подхода - полная совместимость с gettext (использовать только при его отсутствии).


--------------------
user posted image
PM   Вверх
Daevaorn
Дата 25.2.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: нет
Всего: 70



gettext позаоляет делать умный pluralization...
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0938 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.