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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение языковых файлов 
:(
    Опции темы
Gold Dragon
  Дата 19.6.2012, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Вопрос всё снова и снова всплывает у меня. Так как же лучше создавать языковые файлы?

Понятно, что для мультиязычного сайта в коде используются или константы или переменные. Вопрос можно разделить на несколько частей
1. Безопасность
2. Читаемость кода
3. Затраченные ресурсы
4. Универсальность

Допустим языковой файл представляет из себя простой PHP-файл с набором 
Код

DEFINE('_PRIMER','Пример');

Особых проблем с ним нет. Во-первых, получить прямой доступ к файлу не получится (достаточно вставить на это проверку). Во-вторых, для использования достаточно просто подключить файл. В-третьих, константы доступны в любой части кода

Но возникает вопрос, на сколько целесообразно иметь в памяти столько констант? Для большого портала их количество очень и очень большое... 

Второй пример, это INI. Из плюсов это нет избыточного кода ка в первом случае: только само значение и что оно значит. Простое подключение, возможность делить на разделы. Из минусов наверное сами файлы не так защищены как PHP, сложность при подключении, т.е. нужна дополнительная обработка и для подключения и для вставки в код..

Очень хочется услышать какова сегодняшняя практика, больше плюсов и минусов того или иного способа и конечно "потребляемая мощность" способов.. Кто каким путём идёт? Может есть у кого более интересные способы?





--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
bars80080
Дата 19.6.2012, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



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

сделать автоматический подгружатель шаблона выбранного языка или дефолтного - не проблема
PM MAIL WWW   Вверх
Vardoulacha
Дата 20.6.2012, 04:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



по поводу защиты, ставим .htaccess в папку с файлами ini и пишем туда

Код

# Запрет на обращение к ini-файлам напрямую из браузера
<Files ~ "\.(ini)$">
Deny from all
</Files>


после этого файлы можно подключать скриптами, а из браузера их не получить
PM MAIL   Вверх
Gold Dragon
Дата 20.6.2012, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



bars80080, шаблон не выход. В CMS их может быть десятки.

Vardoulacha, спасибо smile Конечно это так, но не везде Апач


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Vardoulacha
Дата 20.6.2012, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Gold Dragon @  20.6.2012,  07:07 Найти цитируемый пост)
Vardoulacha, спасибо smile Конечно это так, но не везде Апач 

у IIS есть вот такое

http://snippets.crisp-studio.com/view/53/z...aniem-webconfig

или может напишете какой сервер то у вас?

Это сообщение отредактировал(а) Vardoulacha - 20.6.2012, 07:17
PM MAIL   Вверх
Gold Dragon
Дата 20.6.2012, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



ну это понятно.. вопрос всё же больше касается нагрузки на ресурсы сервера и "удобство использования"


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Aliance
Дата 20.6.2012, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Или я чего-то не понял, или использование констант для локализации - как-то старый век что ли. Я использую gettext
PM MAIL WWW ICQ Skype   Вверх
Gold Dragon
Дата 20.6.2012, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Цитата(Aliance @  20.6.2012,  10:51 Найти цитируемый пост)
Я использую gettext 
наверное ты прав, может даже не наверное, а прав.. А пример маленький покажи. Я примерно понимаю про что ты, но вдруг иное



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Aliance
Дата 20.6.2012, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Gettext на wikipedia
Gettext на php.net
&target_type=posts]Gettext на habrahabr

Смысл в том, что ты генерируешь файлики *.mo/*.po с переводом (аналог - php массив вида 'key' => 'перевод') и используешь в коде его так:
Код

print _('key');

PM MAIL WWW ICQ Skype   Вверх
Gold Dragon
Дата 20.6.2012, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



вот спасибо за ссылки.. В принципе я про такое и думал, но только использовать файлы INI.. Сейчас посмотрю что за библиотека и стоит ли её использовать или воспользоваться собственными разработками

Добавлено через 1 минуту и 46 секунд
Хотя начинаю читать и что-то малость не понятно.. 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 20.6.2012, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



Gold Dragon как подключить языковые файлы сам догадаешься)
Код

function lng($key = null)
{
    static $lang = null;

    if ($lang === null) {
        //require 'lang/ru.php';
        $lang['Привет'] = 'Привет';
        $lang['Как дела'] = 'Как дела';
    }

    if( ! isset($lang[$key]) )
        return $key;
    else
        return $lang[$key];
}


echo lng('Привет').'. '.lng('Как дела').'? '.lng('Чем занимаешься');



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 20.6.2012, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Aliance, всё таки нужно дополнительно готовить код. Что-то слишком сложный вариант для простого сметрного


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 20.6.2012, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



MoLeX, ты загружаешь опять избыточный код. Если использовать INI то он короче получается
Код

Привет=Привет
Как дела=Как дела

а вот по реализации склоняюсь к чему-то подобному. т.е. есть к примеру класс
Код

class Lang{
   $languages;

   function load(){
       // загружаем содержимое INI в $languages по типу
       $this->languages[ЗНАЧЕНИЕ][СЛОВО];
   }

  function _($string){
       return $this->languages[$string];
  }
}
echo Lang::_(ЗНАЧЕНИЕ);
где-то так если наброском


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 20.6.2012, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



Цитата(Gold Dragon @  20.6.2012,  21:06 Найти цитируемый пост)
ты загружаешь опять избыточный код.

хе

Цитата(Gold Dragon @  20.6.2012,  21:06 Найти цитируемый пост)
Если использовать INI то он короче получается

смысл не меняется

класс не стал бы делать, зачем для такой ничтожной операции класс? ресурсы лишними не бывают


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Evghenusi
Дата 20.6.2012, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

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



Gold Dragon, языковые файлы кто будет создавать/редактировать?
PM WWW   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




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


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

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