Compilar o IceCat com suporte para um idioma à sua escolha

De há pelo menos um mês para cá que o IceCat é o meu browser de eleição. Este browser é baseado no Firefox e tem algumas adições, como uma funcionalidade que permite bloquear, individualmente, cada cookie de um determinado website.

Aproveitando o post do cenourinha sobre a sua experiência com a última versão estável do Ubuntu, deixo este pequeno tutorial.

O browser é mantido apenas para o sistema GNU/Linux, mas deverá ser possível compilá-lo em Windows, Mac OS X e outras plataformas sem grandes problemas, já que o código-fonte deste se mantém alinhado com a última versão do Firefox – e, como sabem, o Firefox está disponível para diferentes sistemas. Para além disso, está apenas disponível em inglês. Para que possam o Icecat em português – ou qualquer outra, se assim o entenderem -, vou explicar como compilar o browser, num sistema GNU/Linux, já com o idioma em português.

Primeiro que tudo, tenho que dizer que eu uso o gNewSense, por isso este tutorial reflecte os passos nesse sistema. Como o gNewSense é baseado no Ubuntu, deverá ser possível reproduzir este pequeno tutorial na integra na distribuição mantida pela Canonical, assim como no Debian e distribuições baseadas nesta. Nas outras, os passos deverão ser semelhantes. Também, este tutorial não é para quem agora começou a usar o sistema GNU/Linux, mas para quem já tem um conhecimento ligeiro do sistema e da linha de comandos.

Agora que a introdução chata está feita, vamos pôr as mãos na massa. O primeiro passo é a instalação das dependências do IceCat. Abram um terminal e digitem o seguinte comando:
sudo apt-get install libx11-dev ftgl-dev libotf-dev libxft-dev libpango1.0-dev doxygen autoconf libgtk2.0-dev libnm-glib-dev libidl-dev libxt-dev libpng12-dev libxp-dev

Depois de instaladas as dependências, temos que descarregar o código-fonte, descompactar o arquivo e movê-lo para /usr/src (como tenho o código-fonte de todas as aplicações nesta localização, vou obrigar-vos a seguir este meu hábito):
wget ftp://ftp.gnu.org/gnu/gnuzilla/3.0.1-g1/icecat-3.0.1-g1.tar.bz2
sudo tar xvf -C /usr/src icecat-3.0.1-g1.tar.bz2

Agora, vamos até à pasta /usr/src e vamos preparar tudo para descarregar os ficheiros de idioma necessários:
cd /usr/src
sudo cvs -z3 -d:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
sudo cvs -z3 -d:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/tools/l10n

Precisamos dos ficheiros para o idioma português europeu (pt-PT). Para isso, primeiro temos que entrar na pasta mozilla, criada pelo passo anterior, e depois correr um comando. Como não saímos de /usr/src:
cd mozilla
sudo make -f client.mk l10n-checkout MOZ_CO_PROJECT=browser MOZ_CO_LOCALES=pt-PT

Depois de executado o comando anterior, ficamos com o código-fonte do Firefox na pasta mozilla e os ficheiros de idioma que queremos na pasta l10n, localizada em /usr/src. O facto da pasta l10n ficar em /usr/src e não em /usr/src/mozilla poupa-nos o trabalho de a mover.

Como já temos o código-fonte do IceCat no local correcto (fizemos isso num dos primeiros passos), temos que preparar a tradução para ser usada pelo IceCat. Isso passa por criar duas pastas, copiar dois ficheiros para elas e editá-los. Primeiro, vamos entrar na pasta browser, que está dentro da pasta do idioma, que por sua vez está dentro da pasta l10n.
cd /usr/src/l10n/pt-PT/browser

Agora, criamos as duas pastas que precisamos:
sudo mkdir -p branding/unofficial

Copiamos os dois ficheiros de que necessitamos:
sudo cp ../../chrome/branding/brand.*

E agora editamos os ficheiros brand.dtd e brand.properties. Vejam os meus para saberem como eles devem ficar.

Para além de editar os ficheiros que movemos para as pastas que criámos, eu fiz outras alterações. Para saberem quais, vejam o diff que criei.

Agora que a tradução está pronta, vamos até à pasta do IceCat e compilamos este browser com o Português Europeu (pt-PT):
cd /usr/src/icecat-3.0.1-g1
sudo ./configure –enable-ui-locale=pt-PT; sudo make

Agora, o IceCat está compilado em português, mas não instalado globalmente. Para o instalarem no sistema, teriam que usar o comando sudo make install. Se quiserem, podem fazê-lo, mas eu aconselho antes a criação de um arquivo com os binários, tal como a Mozilla distribui o browser no seu site. Para o fazer basta, no final do sudo make:
sudo make -C browser/installer/

O comando sudo make -C browser/installer/ vai criar-vos um arquivo bzip2 em dist/ chamado icecat-3.0.1-g1.pt-PT.linux-i686.tar.bz2. Podem copiá-lo para onde quiserem e usar o IceCat como se usassem o Firefox descarregado do site da Mozilla.

Se quiserem criar uma extensão para adicionar um idioma ao IceCat, vão precisar de executar todos os passos até à compilação do browser. Aí, não se passa a flag para o idioma (se já tinham compilado antes o IceCat, podem saltar este passo). Em vez disso, executam-se os seguintes comandos:
sudo ./configure
sudo make;

Assim que acabar, vão até browser/locales:
cd browser/locales

E executem o seguinte comando, que criará uma extensão xpi em dist/install (/usr/src/icecat-3.0.1-g1/dist/install):
sudo make langpack-pt-PT

Essa extensão poderá ser instalada no IceCat e Firefox – e, muito provavelmente, em qualquer browser baseado no Firefox – que esteja noutro idioma que não o Português Europeu. Por uma razão que desconheço, o nome da extensão fica firefox-3.0.1-g1.pt-PT.langpack.xpi. Talvez se deva a um makefile, mas não tenho a certeza.

Volto a repetir que este tutorial requere alguns conhecimentos mínimos do sistema GNU/Linux. Se não os tiverem, podem descarregar o IceCat pronto a usar do seu site oficial. Se usarem Debian, Ubuntu ou uma distribuição baseada numa delas, também podem instalar um pacote deb.

Author: Bruno Miguel

Blogger, apreciador de cerveja e defensor do software livre, corre um sistema GNU/Linux de acordo com Stallman e sem quaisquer bugs - apenas com funcionalidades não desejadas.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.