Translation Guidelines
From PsiWiki
Contents |
What's it like translating Psi?
Psi has a vibrant and supportive translators' group. Would you like to help with the translation of your favourite Jabber program? We'll welcome you and help you out in any way we can. It's fun, and very rewarding, to be part of our group, and you're doing a very worth-while and important thing for your language community.
So, where do I start?
I'm so glad you asked. ;-)
- Please read all the guidelines on this page. Then check out the below resources. You may want to ask to make sure nobody else is already working your language.
- You can drop in at our translators' forum, and catch up with the hot topics.
- Most importantly, please join our mailing list. This is where all the key announcements are posted, and where we discuss the technical issues of translating, and generally help each other out. It's a very quiet list, only coming to life when a new release is imminent, and we need to update our translations. Right now, Akito's developed a new translation-update tool, so we're trying that out, and talking about it. Come and join us!
Do I need special software?
Well, apart from your own ability and experience, which no software can replace, you'll find the task is simplified and facilitated extensively by an excellent translation tool called Qt Linguist. Since Psi is based on Qt™, we have Linguist to help us out. Where do you get it? It's on the download page, along with the program downloads, iconsets and other goodies, far from least of which are ... [note: if you use Linux and you already have a qt package installed, you can just type linguist in a console and use the tool]
How are translation files named?
Psi uses the OS's environment to find the correct translations on initial install. In order for Psi to find the correct file, it must be named according to a known convention. Psi uses a naming scheme closely relating to IETF RFC 3066.
The actual naming scheme that we use (omitting file extensions) is "psi_${language}[_${COUNTRY}]", where ${language} is the language code in lowercase and [_${COUNTRY}] is an optional country code in uppercase prepended by an underscore.
The language codes are specified in either ISO 639-1 or ISO 639-2. ISO 639-1 specifies languages by two-letter codes, while ISO 639-2 specifies languages by three-letter codes. If available, the two-letter codes must be chosen over the three-letter codes.
The country codes are specified in ISO 3166-1. A country code only needs to be specified if the translation is only for one country's dialect of a language that is not the default dialect. For lack of a better reference at the moment, and assuming the glibc people did their homework, the default dialect (if it is ambiguous) can be determined by running "LC_IDENTIFICATION=${language} ; locale -k territory" under Linux, where ${language} is the language code in lowercase.
Examples
- English language for USA: (no translation files needed)
- English language for Canada: psi_en_CA.qm
- English language for Great Britain: psi_en_GB.qm
- French language for France: psi_fr.qm
- French language for Canada: psi_fr_CA.qm
- Portuguese language for Portugal: psi_pt.qm
- Portuguese language for Brasil: psi_pt_BR.qm
- Serbian language for Serbia and Montenegro: psi_sr.qm
- Ukrainian language for Ukraine: psi_uk.qm
Where do people get the translations?
Yes, they're on the download page, too. ;-) Translations are called Language Packs, and you can see that we have an impressive array of languages already. However, maintaining good translations is an ongoing task, so any time you can contribute to your language will be very much welcome and appreciated. Pass the word around in your language community: Psi speaks our language!

