search

Tuesday, August 16, 2011

fedora 15: Установка Thunderbird 6

Если у вас уже есть установленная версия Thunderbird из официального репозитория, то начинайте сразу с шага 2.

1. Для того, чтобы не мучаться с зависимостями и созданием ссылок, установим в начале версию Thunderbird присутствующую в официальном репозитории (на момент написания статьи это версия 5.0). Сделать это можно через Add / Remove Programm.

2. скачиваем с официального сайта файл программы - архив thunderbird-6.0.tar.bz2

3. Разархивируем скачанный архив (например, в папку Downloads, которая находится в вашем домашнем директорие)

4. Переименуем ее в thunderbird6 - это для того, чтобы на всякий случай сохранить версию 5. Шаг 3, 4 можно было выполнить из файлового менеджера.

5. Далее, нам понадобится Терминал. Запускаем его и оказываемся в домашней директории пользователя. Переходим в папку Downloads
cd Downloads

Перемещаем папку с программой:
sudo mv thunderbird6 /opt/thunderbird6

6. Сохраняем возможность запускать предыдущую версию thunderbird:
sudo mv /usr/bin/thunderbird /usr/bin/thunderbird5

7. А теперь свяжем все ярлыки запуска с новой версией thunderbird:
sudo ln -s /opt/thunderbird6/thunderbird /usr/bin/thunderbird

Готово.

fedora 15: Как установить Firefox 6

Процесс установки firefox 6 очень схож с firefox 5. Рассмотри все детально по шагам:
1. скачиваем с официального сайта файл программы - архив firefox-6.0.tar.bz2

2. Разархивируем скачанный архив (например, в папку Downloads, которая находится в вашем домашнем директорие)

3. Переименуем ее в firefox6 - это для того, чтобы на всякий случай сохранить версию 5. Шаг 2, 3 можно было выполнить из файлового менеджера.

4. Далее, нам понадобится Терминал. Запускаем его и оказываемся в домашней директории пользователя. Переходим в папку Downloads
cd Downloads

Перемещаем папку с программой:
sudo mv firefox6 /opt/firefox6


5. Сохраняем возможность запускать предыдущую версию firefox:
sudo mv /usr/bin/firefox /usr/bin/firefox5


6. А теперь свяжем все ярлыки запуска с новой версией firefox:
sudo ln -s /opt/firefox6/firefox /usr/bin/firefox

Готово! Теперь Firefox 6 - ваш браузер по умолчанию.

P.S. Первое впечатление - он работает заметно быстрее версии 5 (это, конечно субъективно; по крайней мере у меня; в отличии от Linux, в Windows разницы в работе 5ой и 6ой версии обнаружено не было). Так что, всем советую обновится!

Saturday, August 13, 2011

fedora 15: Установка Google Earth

Установка Google Earth в fedora 15 очень простая. Для этого с официального сайта http://www.google.com/earth/download/ge/agree.html необходимо скачать rpm -пакет для 32-битной (около 30 Мб) или 64-битной системы.

Кликаем два раза на скаченный файл и нажимаем Install. Все зависимости автоматически найдутся и установятся.

Friday, August 5, 2011

Python: Интернализация (i18n) приложения

Интернализацию приложения будем проводить с помощью GNU gettext, который в версии Python 2.7 присутствует. Цель - добавить русский язык в приложение, созданное с помощью wxPython.

Идея:
1. Строки, предназначенные для перевода необходимо пометить - в данном случае вот так _('Строка для перевода')
2. Извлечь помеченные строки в отдельный файл, который будет иметь расширение *.pot
3. Отредактировать полученный файл, вставляя переведенное значение, и сохранить его с расширением *.po
4. Скомпилировать полученный файл в файл с расширением *.mo.
5. Загрузить перевод в приложение.

Пример:
В начале, в код программы необходимо импортировать следующие модули:
import wx
import gettext
import sys, os


Затем создаем иеархию папок с переводами. Они будут иметь следующий вид:
./locale/en_US/LC_MESSAGES/
где en - язык, US - страна.

В приведенном ниже коде при старте программы будет определено местоположение пользователя и его язык по-умолчания. По полученным данным будет загружен файл перевода. При его отсутствии будут отображены символы, присутствующие в коде (_())

basepath = os.path.abspath(os.path.dirname(sys.argv[0]))
localedir = os.path.join(basepath, 'locale')
langid = wx.LANGUAGE_DEFAULT
domain = 'main'
mylocale = wx.Locale(langid)
mylocale.AddCatalogLookupPathPrefix(localedir)
mylocale.AddCatalog(domain)
mytranslation = gettext.translation(domain, localedir, [mylocale.GetCanonicalName()], fallback = True)
mytranslation.install()

wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, wx.DefaultSize)
panel = wx.Panel(self)
text = _(u'Press Me')
button = wx.Button(panel, -1, text)


Код этот можно поместить в def __init__, например.

Теперь, когда код готов, приступим к генерации файлов перевода.

Для этого, если Python у вас установлен на диске C:\, скопируйте файл с кодом (в примере main.py) в папку C:\Python27\Tools\i18n

Затем, для генерации *.pot - файла, выполните из командной строки, находясь в папке i18n:
python pygettext.py -d main -o main.pot main.py


Откройте для редактирования появившийся файл и сделайте превод и укажите кодировку:
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"


Перевод записывайте в строку с msgstr:
#: main.py:28
msgid "Press Me"
msgstr "Переведено - Нажми меня"


Отредактированный файл сохраняем как main.po.

Теперь сгенерируем *.mo - файл. Для этого в терминале выполняем:
python msgfmt.py -o main.mo main.po


Полученный файл вставляем в соответствующую директорию.

P.S. При сохранении переведенного файла использовалась программа Notepad++. Необходимо, чтобы *.po - файл был в кодировке UTF-8. Для этого необходимо зайти в Settings -> Preferences -> New Document/ Default Directory и отметить Encoding UTF-8 without BOM. Внизу появится строка ANSI as UTF-8. Если этого не сделать, компилятор может выдать сообщение об ошибке.

P.P.S. Вышеизложенное было рассмотрено на примере Linux и Eclipse. Чтобы локализацию заставить работать в Windows, необходимо во всех случаях utf-8 заменить на cp1251 (и сохранять *.po -файл также в кодировке cp1251). Таким образом, *.po файлы различны для Windows и Linux.