Запись опубликована (Symfony) от ingvar в 11-11-2008 00:33
Часть 2: интернационализация (I18n) – редактирование данных в административной панели
Продолжение темы мультиязычности в Symfony: первой части, где рассказывались основы работы с интернационализацией в Symfony. Теперь рассмотрим, как данные редактировать в административной панели для нескольких языков.
Исходный код к статье - demo-i18n_part2.zip (source code). Код написан на Symfony 1.2, Propel 1.3.
Рисунок 2.1: Пример Frontend (Example Frontend)

Читать дальше
Запись опубликована (Symfony) от ingvar в 29-10-2008 00:32
Начинаю цикл статей по организации мультиязычности в Symfony. Мультиязычность достигается с помощью интернационализации и локализации.
Часть 1.1: интернационализация (I18n) - введение
Немного теории (источник Википедия).
Интернационализа́ция (англ. internationalization) — процесс адаптации продукта, такого как программное или аппаратное обеспечение, к языковым и культурным особенностям региона (регионов), отличного от того, в котором разрабатывался продукт. В английском языке для слова «internationalization» принято сокращение «i18n». При этом число 18 означает количество пропущенных между «i» и «n» букв.
Локализа́ция (англ. localization) — перевод и адаптация элементов интерфейса, вспомогательных файлов и документации. В английском языке для слова «localization» иногда применяется сокращение «l10n». При этом число 10 означает количество пропущенных между «l» и «n» букв.
Читать дальше
Запись опубликована (Symfony) от ingvar в 28-10-2008 22:25
Прошла первая в Украине конференция по фреймворку Symfony. Сие событие происходило в городе Черкассы. Было не так много людей, как предполагалась. Надеюсь на следующую удастся съездить :).
Основная тема была Symfony 1.1 - на глазах у присутствующих было “собрано” небольшое приложение с использованием форм, админки. Осталось только дождаться, когда выложат презентации от всех докладчиков.
Источник - отчет по самой конференции.
Запись опубликована (Symfony) от ingvar в 21-09-2008 19:41
Необходимо было реализовать украинскую версию на Symfony. И какое же было разочарование когда возникли проблемы со словами, где встречается апостроф, например: П’ятниця, и др… В браузерах IE, Opera слова просто “рвало” или, что ещё хуже был просто квадрат, как будто такого символа в таблице UTF-8 нет. При изучения файла uk.xml стало ясно, что это символ апостроф. В итоге после исправления всех слов получился пропатченный файл, который прекрасно работает во всех браузерах.
Скачать пропатченный файл uk.xml.
Возник вопрос: откуда разработчики скопировали данные для файлов i18n и выяснилось, что данные были получены с сайта: unicode.org, где те же проблемы :(. Хотя в файле Ukrainian-Latin-BGN.xml символ апострофа правильный.
P.S.
За что я обожаю сообщество Symfony - за его оперативность, не успел разместить задачу с этой проблемой, как сегодня же обновили этот файл моим патчем :), так что ждем несколько дней и скачиваем обновление из SVN.
Запись опубликована (Symfony) от ingvar в 03-09-2008 00:00
С каждой новой версией разработчики Symfony делают все, чтобы упростить работу API и сделать её более интуитивной и мощной. Вот некоторые примеры того, чем можно будет воспользоваться в symfony 1.2.
1. Названия Приложениний в CLI задачах / Application name in CLI tasks
Некоторые Propel задачи требует указания имя application в аргументах, потому что требуется подключение к БД. На самом деле в некоторых случаях этот параметр не требуется, когда задачи работают с БД не для конкретного application, а всего проекта.
Команда propel:build-all-load теперь выполняется как и другие задачи вида propel:build-*:
# symfony 1.2
./symfony propel:build-all-load
# symfony 1.1
./symfony propel:build-all-load application_name
Читать дальше
Запись опубликована (Symfony) от ingvar в 24-08-2008 02:26
sfPropelPager - это встроенная в Propel функциональность, которая позволяет организовать Пейджинг (Propel Pager), т.е. разбивку на страницы. Работает великолепно, ознакомиться подробнее можно в статье How to paginate a list. Описанные ниже действия проводились на Propel 1.3.
Принцип работы простой, сначала делается запрос на определение количества записей, а далее получаем данные с учетом количества их на странице. Например, имеем Propel ORM объекты News и NewsI18n.
Читать дальше
Запись опубликована (Symfony) от ingvar в 22-08-2008 23:31
В Symfony для Propel есть такая замечательная функциональность как Behaviors. Благодаря Behavior можно расширять существующие модели без необходимости изменять код самой модели. Фактически получает имитация “множественного” наследования. Зачем это надо? К примеру есть вот такой интересный плагин sfPropelActAsTaggableBehaviorPlugin - задумка прекрасная, сделать возможность добавлять теги для любых моделей. Чтобы активировать Behaviors нужно в propel.ini включить их.
Читать дальше
Запись опубликована (Symfony) от ingvar в 17-08-2008 22:06
В документации Propel можно увидеть таблицы соответствия между ним и типами столбцов MySQL (Propel Column Types). Проблема в том, что не все типы столбцов можно явно указать.
Если попытаться указать поле типа ENUM, то при генерировании SQL получим ошибку:
Cannot map unknown Propel type 'ENUM' ...
Cannot map unknown Propel type 'ENUM' to native database type ..
Похожая ситуация наблюдается и в следующем примере. Например, если в схеме указать нижеследующее, то получим ошибку на счет поля created_at ( Cannot map unknown Propel type ‘DATETIME’ to native database type ):
my_product_i18n:
_attributes: { phpName: ProductI18n }
id: { type: integer, required: true, primaryKey: true, foreignTable: my_product, foreignReference: id }
culture: { isCulture: true, type: varchar, size: 7, required: true, primaryKey: true }
name: { type: varchar, size: 50 }
created_at: { type: datetime }
Читать дальше
Запись опубликована (Symfony) от Igor в 16-08-2008 23:42
С каждым днем система плагинов становится все лучше. Благодаря отличной обратной связи комьюнити, в течении недели были внесены следующие изменения:
• К плагину можно загрузить рисунок, который выводиться во вкладке “Plugin Information” и используется в RSS.
• Чтобы присоединиться к команде разработчиков плагина теперь нужно указать причину. Ранее это не требовалось. На основании этой информации руководитель плагина может принять или отклонить запрос.
• С главной страницы можно просмотреть плагины по категориям или перейти на список всех плагинов.
• Появилась вкладка “Изменений” (Changelog). Информация добавляется из файла package.xml. В FAQ можно ознакомиться как все это работает.
• Обновили RSS с целью отображение более подробной информации.
• Каждый пользователь представлен через систему gravatar.
Оригинал поста: The plugin system gets better
Запись опубликована (Symfony) от Igor в 13-08-2008 01:12
Это решение проблемы для Symfony 1.1 и Propel 1.3, когда нужно из двух таблиц объединенных черех join получить все данные. Т.е. хотим выполнить такой запрос
SELECT news.NEWS_ID, news.CATEGORY_ID, news.TITLE, news.BODY, news.CREATED_AT,
news_category.CATEGORY_ID, news_category.NAME
FROM `news`
LEFT JOIN news_category ON (news.CATEGORY_ID=news_category.CATEGORY_ID)
А вот с этим проблема, если таблицы не связаны через внешний ключ (foreign key), вывести данные из второй таблицы news_category проблематично, но возможно. В основе материал: Applying custom joins in doSelect* method. Но для новой версии материал не соответствует действительности. Чтобы все заработало, следует сделать следущее.
Читать дальше
|
|