#--------------------------------------# | INSTRUCTIONS FOR TRANSLATING PORTATO | #--------------------------------------# PRENOTE: This document is copied from the porthole project and slightly changed afterwards. Thanks guys :) The recommended way to translate Portato into another language is to use "Poedit" (app-i18n/poedit). However you might want to try out either KBabel (kde-base/kbabel) or Gtranslator (app-text/gtranslator). Getting the sources: =================== You do need the sources to make translations. The installed program is not sufficient. Change into a local directory where you want to have the sources installed. Then do: > bzr pull lp:portato You now should have the actual sources in the "portato" subdirectory. To update an incomplete translation: =================================== If there is a translation for your language already, then open the .po file in portato's i18n/ directory with Poedit (e.g. pl.po = Polish, fr_FR.po = French (France)). Select "Update from POT file" from the "Catalog" menu, then choose the messages.pot file in the i18n/ directory. Untranslated strings will be highlighted and placed at the top of the list. Translate them and save the file! To create a new translation: =========================== Open poedit and Select "New catalog from POT file" from the "File" menu, and choose the messages.pot file in portato's i18n/ directory. Translate, then save the file (also in the i18n/ directory) as .po where is the two letter code for your language, optionally followed by a two letter modifier. For example en.po would be for English, en_GB.po would be specifically for British English. Important notes about placeholders: ================================== The translatable strings in the messages.pot catalogue and the .po files are partially in Python's string format, partially in GTK's. The following items should be included in translated strings as placeholders for names or figures: "%s" : string placeholder "%d" : number placeholder "%(days)d" : placeholder named "days", do not translate the name pretty much anything starting with "%" Html-Tags ("some_text") should be kept as is and only the text in between has to be changed. In addition, the underscore (_) is used to indicate that the next character will be used as the accellerator key. When the user presses "CTRL" + this key, it will perform the item's action. These are not required, but if you use them the characters chosen must all be different. Strings like "gtk-quit", "gtk-cancel" etc. must not be translated. To test your translation: ======================== run the "pocompile" script in the portato directory: > ./pocompile.sh This will compile all the .po files in i18n/ into .mo files (which gettext uses when translating Portatot) and place them in the necessary subdirectories (/LC_MESSAGES). Now you can run the local portato version in your language: > ./portato.py If you are not seeing your language, make sure the environment variable "LANG" is set to your language code. For example, to run portato using the German translation: > LANG="de_DE" ./portato.py To submit the translation so we can include it in Portato distributions: ======================================================================== The easiest method is to post it to a tracker on portato's site: http://portato.origo.ethz.ch/issues Or send a mail to portato@necoro.net I found a string in Portato that I can't translate! What gives?: ================================================================ Post a bug report on the sourceforge site (http://portato.origo.ethz.ch/issues). Include the untranslatable string and where in Portato you came across it. It's easy for us to mark the strings for translation, but we may have missed some! I don't want to use a stupid GUI, they are plain text files!: ============================================================ The .po files are indeed plain text files. If you don't want to use poedit for some reason, these gettext commands might come in handy: Update a .po file from the messages.pot file: > "msgmerge .po messages.pot > newpofile.po" Create a new .po file from the messages.pot file: > "msginit -i messages.pot -l "