The Localise Software sub-project is looking at localising existing FOSS projects into different African languages.
The different language teams will be assisted with a small team of technical experts, who will help them with the different localisation processes for each of the software they will be localising.
Localise Software documentation
Below is a list of links documenting the localisation process for the selected software to be localised through the scope of this project.
General localisation guidelines
Introduction
- Read through Translate.org.za's localization guide to get started. Refer to this documentation whenever you get stuck somewhere. You definitely need to read about these topics before you start:
- Changing the locale of your operating system.
- Windows
- Control Panel -> Regional Settings.
- Check the list of supported locales
- Linux:
- Ubuntu: System -> Administration -> Language Support
- Check for your locale in the list of supported locales
- Check Glibc locales guide if you want to add a new locale or fix existing ones.
Terminology
- to the localize-software team mailing list to discuss the terminology sources you will be using for your project:
- If your team worked on Glossmaster, this should be the best starting point
- If you have no terminology available for you language, inform the rest of the team, and someone might be able to point you to where you can find terminology for your language. The support team can put a template terminology file on Pootle for your language.
- How to add terms to the existing terminology list?
- If the terminology project in Pootle has an untranslated term, you can translate it like with any other translation project. Just search for the term and add the translation. Be sure to discuss this with your team.
- To add a term that is not currently in the terminology project, contact the support team for help.
- If you unsure of a term, do not add it
- Remember that you can add different translations for the same English term. Ask the support team for help.
Translation
Online using Pootle
- Get a Pootle account
- Check the Pootle user guide.
- Pootle can provide terminology help while translating online.
Offline
- Download the .po or .pot files for the open source applications you will be localizing from the Pootle server.
- Go to the project page for your language.
- Go the the "Translate" tab (usually third from the left)
- Look for the link that says "Download"
- Translate using any CAT tool you are familiar with, but we recommend that you use Virtaal (available for Windows and Linux users) or Poedit (for Mac OS X users).
- Check the Virtaal user guide.
- Integrate terminology, how? Instructions needed here
- You will need to upload your translations to the Pootle server at the project that you downloaded it from.
- Go to the project's page on Pootle (say, Tux Paint) and click on your language link.
- Then you'll find an "upload file" block at the bottom of the page.
- Click on browse button and select files from your computer and upload it.
- Files can be individual PO files or a ZIP containing collection of PO files.
Translating from a different source language
Pootle
If members of your team has better skills in another language than English (like French or Arabic), Pootle can display a translation while translating. This is the recommended way. More information available here
Virtaal
Virtaal doesn't currently support using different source language, but you can get around this:
- Download the complete French translation from Pootle, and the PO files for your language.
- Swap the English-based PO files to French-based PO files using the Translate Toolkit tool "poswap".
- Then translate the French-based PO files offline in Virtaal.
- After finishing the translation, you can swap back the files to English using "poswap" with the --reverse option.
Review
- Can be done after uploading your translation back on Pootle server.
- Pootle's Quality Checks
- Read about Pootle's translation checks
- Some tests are crucial (some translation mistakes can break Firefox). It is very important that you perform all these tests. They are:
- accelerators: Accelerators are the underlined letters in application's user interface, and are used to access action by keyboard shortcuts. In Firefox accelerators are marked by '&', as in "&File", and the translation must contain an '&' as well. You can but the '&' before any letter in your translation, just make sure it doesn't conflict with other items and is easily accessible in the keyboard.
- printf
- variables
- xmltags
(other tests are important, but more cosmetic)
- You can use Pootle's search feature (in the upper right side of the page) to search for specific string, by clicking on the arrow next to search field you can choose to search the source text or the target (translation) text. Pootle doesn't provide a search & replace functionality, though.
Testing
- Install the software and go through all menus, dialogues, installer, etc.
- Reach out to the community for wider testing and feedback
Resources
- You can download and install keyboards and fonts for your language from here.
- to the localise-software team should you have any special needs.
How to get help
- to the localise-software team mailing list.
Pootle localisation documentation
Pootle is a web based system for translation and translation management. Read more about Pootle here. he translation work for Pootle involves about 1500 words.
To translate the user interface of Pootle, follow these steps:
- Visit the Pootle server
- Register an account
- Activate the account by following the instructions in the e-mail that you receive
- Set up your preferences by selecting your languages and the appropriate projects that you will be working on.
If your language is not available yet, ask for it to be added on the ANLoc "localise software" mailing list. If your language is not listed on this page, mention it on the mailing list so that the necessary information about plural forms can be worked out.
- From the front page or from your account page, click on the project and language combination that you want to work on. To translate Pootle, select the project called "Pootle", and your language. Here you can see the progress so far.
- Activate the editing functions to find all the available actions
- "Quick Translate" will take you to all the translations that need attention
- "Show Checks" will show possible translation errors that you might want to review. For more information on what these checks mean, see the documentation
- The download action will allow you to translate offline using Virtaal. To get your offline translations back onto Pootle, select the translated file in the upload dialogue, and check that the statistics for the files is correct after your upload. Remember to review the quality checks again.
If you selected your language when logging in (or in your preferences), you should see the translations updated while you translate.
For more information on how to use Pootle, visit the Pootle website or join the Pootle mailing list to ask any questions and to learn from the discussions. If your translation is reasonably complete, it will automatically form part of the next Pootle release.
Virtaal localisation documentation
Virtaal is a program to help you translate even if you don't have an internet connection. Read more about Virtaal here. Download and install Virtaal to become familiar with its features and how it works. The translation work for Virtaal involves about 1500 words.
To translate the user interface of Virtaal, follow these steps:
If your language is not available yet, ask for it to be added on the ANLoc "localise software" mailing list. If your language is not listed on this page, mention it on the mailing list so that the necessary information about plural forms can be worked out.
- Go to the project for Virtaal in your language.
- You can translate the user interface for Virtaal on Pootle, but it would be best to actually use Virtaal to ensure you get to know it well.
- Activate the editing functions, and download the PO files to your computer
- Open the file in Virtaal and activate the "Incomplete" mode which will take you to all translations that need attention.
- Save the files and upload it to Pootle
- Review the quality checks on Pootle
For more information on how to use Virtaal, visit the Virtaal website, or join the Virtaal mailing list to ask any questions and to learn from the discussions. If your translation is reasonably complete, it will automatically form part of the next Virtaal release.
If you want to test your translation (by running Virtaal in your language), ask for help on the Virtaal mailing list or on the IRC channel (#pootle on irc.freenode.net) on how to install the translation.
As part of translating Virtaal, you will be translating a small part of GTK+ which contains some basic translations used in several programs. Although we will publish these translations with Virtaal, you should contribute it to the main GTK+ project. Some more instructions are available here.
Fennec localisation documentation (2009)
Fennec depends largely on Firefox translation, so you've to do Firefox translation first, see firefox localisation documentation for details.
- Start translating Fennec, either in:
- Pootle, or download PO files to translate from there, see general localisation guidelines for more details. After doing the translation, you can get Mozilla l10n files from XXX for submitting to Mozilla repository.
- or you can do the conversion to and from PO files yourself, refer to post for more details.
- Commit your file to the repository.
- Request adding your locale to all-locales by filing a bug.
- Make sure your locale appears in the dashboard and fix any reported issues.
- Check the nightly builds for testing.
Firefox localisation documentation (2009)
- Check existing Mozilla localisation teams in Mozilla wiki, if there is no team for your language register a team by creating a new wiki page with the category L10n:Teams following this example, replacing 'af' with your language code .
- You need to sign the Committer's Agreement. Complete instructions are available on that page.
- Start translating Firefox on-line on Pootle, or download the translation files and translate them off-line using Virtaal, check general localisation guidelines for more details. The translation files on Pootle are prioritised:
- first milestone: user1 and user2 phases
- second milestone: user3, user4, config1 and config2 phases
- third milestone: finish the rest of the translation and review all Pootle automated checks.
- For testing your translation, download the language packs.
- Install the language pack as regular Firefox extensions
- Install the locale switcher extension to switch Firefox to your language
- Use your translated version as much as possible, and try to review menu, dialogue box, error message, etc. Also check for dialogue boxes that might need to be enlarged and ask for help on how to do that.
- After finishing the first milestone, register at addons.mozilla.org, submit the language pack to appear under the category for language packs and encourage users to test it and give feedback.
- Create an account on Mozilla's bug tracking system for feature requests and bug reports.
- When the translation is complete:
- File a registration bug to get official builds for your language. Fill in the summary and description with information about your language and your team.
- File a bug report, to get write access to Mozilla source code repository for submitting your translations directly. Fill in the summary and description with information about your language.
- At this stage you should have signed the Committer's Agreement for this bug report to succeed
- You also need to attach your translation to the bug report for review
- After committing the files to Mozilla repository:
- Check the dashboard to see if your language builds correctly, and fix any problems.
- Get the daily localized builds from Mozilla ftp site for testing and reviewing
- At this stage your translation is almost done, and you will need check the final pieces of the localisation, which include choosing the best default search engine for your locale, Google snippets, etc. Check Firefox Productization page for more details.
- Web pages: check Firefox's In-Product Pages and its L10n requirements.
Resources:
- https://developer.mozilla.org/en/Create_a_new_localization
- https://wiki.mozilla.org/L10n
- https://wiki.mozilla.org/Firefox3/L10n_Requirements
- partial-translations
Tech Team meeting notes
The Tech Team meeting took place in Cairo, Egypt in August 2009 and was hosted by OpenCraft in their premises.
Attendants:
- Manal Hassan (Localise Software coordinator)
- Khaled Hosny
- Jojoo Imbeah
- Walter Leibbrandt
- Friedel Wolff
Agenda:
Day 1: Mon 10
- Session 1: Expectations and setting up the agenda for the rest of the days
- Session 2:
- Localisation Process
- Terminology
Day 2: Tue 11
- Session 1:
- Required infrastructure
- Tech Team tasks
- Session 2: Setting up the required infrastructure
Day 3: Wed 12
- Session 1:
- Testing / Review / Validation
- Partial translations (and what's need to be done by end of September)
- Timeline and Deliverables
- Session 2: Setting up the required infrastructure (cont.)
Day 4: Thu 13
- Session 1:
- Back ups
- Marketing & distribution
- Session 2:
- Documentation
- Anything else?
Below is a list of links to the notes of each topic:
Actions needed
- Check with Louise and Alberto on the localisability of GlossMaster, suggest using PO if they havent dont it yet. (Friedel/Manal)
- Extract the list of languages and countries from AfriGen and send to Walter (Jojoo => done)
- Convert the list of languages and countries to PO (Walter)
- Contact Christian Perrier from the ISO project for submitting our reviewed list of languages and countries (Friedel)
- Discuss with Martin about integrating the terminology lists with Pootle (Jojoo)
- Discuss with Martin on the best approach if people want to modify terms on the terminology list
- Document how to use the terminology lists with Virtaal (Friedel)
- Change the CSV to PO converter to understand the definition column from GlossMaster and added as a comment (Walter)
- Check with Mozilla on how to add to the list of content languages (Friedel => done)
- Crucial to be able to have an official release of Firefox in that language. The language name need to be translated in Firefox's official language, and therefore it needs to be part of its strings before code freeze
- Friedel got an answer from Mozilla that any language with an ISO code can be added automatically
- Check/Plan how "Goals" will be implemented in the next version of Pootle (Friedel)
- Generate terminology file before localisation start
- One file for Pootle and Virtaal
- One file for Firefox
- Different starting points for languages that are part of the terminology project and those who are not
- Convert from GlossMaster with new script (extend csv2po), or
- Create with poterminology
- Untranslated terms to appear as part of the terminology list in Pootle and Virtaal (suggestion)
Back ups
- Script to backup PO files on Pootle server (needs modification to use rsync??)
- This makes the PO files available for download (location needs to be in the documentation)
- Backup for Pootle database (to be determined)
- No need to keep backups of Mozilla l10n files, they can be (re)generated at any time.
- Scripts will be backed up on Translate.org.za servers and SourceForge Subversion, as applicable.
Documentation of the process
TODO: Complete in Thursday morning session
- If you unsure of a term, do not add it
- Verb-noun ambiguities?
- How to add terms
- QA guidelines
- Document Mozilla process
- Should be clear that the language teams are expected to learn how to commit to Hg
Task distribution
- General guidelines: Extract tips and links from meeting notes (Jojoo)
- Fennec (Khaled)
- Pootle (Friedel)
- Virtaal (Friedel)
- Firefox (Khaled, Jojoo, Friedel)
- Walter will work on finalising the scripts needed in our infrastructure
Infrastructure setup
Tasks that need to be done
We agreed that all scripts below will run on the Mozilla localisation server
- CLDR2po script (Khaled & Jojoo done)
- Terminology collection script (Friedel & Khaled done)
- Fix for poterminology to improve handling of "you" and "your" (Friedel 95% - bug report needing review)
- CSV2po for GlossMaster (Khaled & Jojoo done)
- moz2po script (Walter 80%)
- check if script generates correct English files for Fennec or not (Walter)
- po2moz script (Walter 80%)
- pomigrate2 script (Walter 80%)
- Downloads directory (Friedel 100%)
- CGI script (Walter)
Integrating terminology
Terminology
- One file for Pootle and Virtaal
- One file for Firefox
- Document tips
- Monitor terminology projects for each of the language teams
- Discuss with Martin on the best approach if people want to modify terms on the terminology list
- DIfferent starting points for languages that are part of the terminology project and those who are not
- Convert from GlossMaster with new script (extend csv2po), or
- Create with poterminology
- Untranslated terms to appear as part of the terminology list in Pootle and Virtaal (suggestion)
Localisation Processes
Localisation Methods
- Online:
- Localisers just need an account on the Pootle server
- We can integrate the terminology lists as a project on Pootle server
OR
- Offline:
- Download PO file from the Pootle server
- Translate with Virtaal/POEdit
- Upload when they are done (needs an account on the Pootle server)
- How can we integrate the terminology lists??
Glossmaster
Suggestions? (need to check with IT+46)
- Single file per language
- On Pootle server
- Encourage to use PO
Pootle
- 1 file ~ 1500 words (==> 12 to 15 hours)
- Join translate-pootle mailing list
- Online translation of Pootle allows for testing while translating
Virtaal
- 3 files (virtaal.po, 1 for GTK (<200 words), 1 for gtkspell (12 words)) ~ 1500 words (==> 12 to 15 hours)
- Locales are necessary to work (check how to add new locales if needed with Martin)
- Encourage teams to submit their GTK translation through to GNOME project
- Join the mailing list
Firefox
- About 23000 words, some are very rare error messages and are very hard to translate, usually left untranslated
- Localised copy is a different version
- Language pack: similar to a Firefox extension that has enables a different languages to the current version used.
Jargon
- Official release
- Available on main web-site
- Localised installer
- Localised search engines, bookmarks
- A release for each official language
- Translated web-pages
- Translated snippets
- Language pack release
- Is a step in the road for official release
- On AMO (addons.mozilla.org) site
- Install "Locale switcher" extension
- Search engine, bookmarks, etc. in original language
- Can be distributed on ANLoc website for testing
- Productisation
- Non-translation localisation (search engines, bookmarks webmail, etc. customization)
Translation timeline
|-
Stages
|
Language Team
|
Mozilla
|
Start Point
|
- Register language team on Mozilla's wiki
- Sign Mozilla contributors' agreement (required for VCS access)
- Create Mozilla bugzilla account
|
|
Translate ~ 5k words?
|
- Build 1st language pack
- Put on ANLoc for testing
|
|
Translate ~ 10k words?
|
- Build 2nd language pack
- Put on Addons website
|
Mozilla approves language pack
|
Language pack on addons.mozilla.org
|
- Get pack tested and reviewed
- Report bug to request Mercurial access, attach translation files
|
First commit by Mozilla
|
Have Mercurial access
|
Report bug to request language to be added to product (FF)
|
Mozilla starts making the daily builds
|
Daily Builds
|
- Check if it builds correctly on the dashboard
- Start testing the installer, bookmarks, etc.
|
|
Translate ~ 100% done
|
Start work on productisation, Snippets, Mozilla.com web pages
|
Mozilla builds Beta (Mozilla is in control from this point onward)
|
End
|
- Finalise productisation, Snippets, Mozilla.com web pages
- Fixes
- Perform Litmus tests
|
Official release
|
|
Fennec
- 244 strings/1076 words
- Similar process to Firefox
- Mozilla is doing localised builds
Marketing & distribution
Call for Application
- ANLoc (mailing list, website) sent and published
- Terminology teams
- Locales teams
- LUGs (see this list to get started) sent
- APC Africa (mailing list) sent
- Was invited to blog about it on their blog published
- AfricaSource 2 (mailing list) sent
- Friedel to invite his contacts who were trained (by him) on localisation sent
- Seth Bindernagel from Mozilla sent
- FOSSFA sent
- GHOSS sent
- LAUG sent
- People at the Africanisation (a12n) meeting in South Africa asked Heather
- Ask Dwayne for contact information
- Congo
- Senegal (have worked on previous version of Firefox) sent
- Moroco (Tifinagh)
- Ubuntu ZA LoCo (local community) sent
- Universities
- African Wikipedia teams
- Announce on Afrigator
- African Languages group on Facebook
- ACALAN sent
- Facebook, twitter, etc. sent and published
Marketing and Distribution for Localised Software
- Mozilla university reps
- Seth Bindernagel from Mozilla
- Localise "Get Firefox" buttons to mention its availability in African languages
- Announce the availability of localised projects (Fennec, Firefox, Glossmaster, Pootle, Virtaal) versions on local/appropriate news sites
- Prepare some CDs with a set of localised software for distribution at any event
- To be ready for the next ANLoc conference
- Should also include outcomes from the other sub-projects, like fonts and keyboard layouts
- Ideas from the language teams
- Promote the language packs for Mozilla products
- Needed for feedback and testing
- Announce to the channels mentioned in "Call for Applications" above
- Use Twitter to announce new languages and new versions
Partial translations
|-
Phase
|
No. of Words
|
Translation covers
|
user1 |
4000 |
Anything that appears when first starting, using menus or browsing the web in normal use.
|
user2 |
3500 |
Extensions, Download manager, Bookmarks, Places, File browsing/downloading
|
user3 |
2500 |
Still focused on use: print dialogue, other menus accessible
|
user4 |
800 |
Page info, page source, page properties, report broken websites, dom inspector
|
config1 |
500 |
First layer of Preference menu is translated including dropdowns
|
config2 |
1900 |
Cookies, charset names, Advanced settings
|
lang |
600 |
List of languages
|
install |
1350 |
Anything related to installation
|
other |
10500 |
Remaining strings related to security, etc.
|
|
More details on the phases and what each phase include.
Our first milestone is by the end of September, and we are targeting to finish phase user 1 and a good chunk of phase user 2 by then, to be able to announce the various African language packs at Dakar (4 - 8 October).
Required Infrastructure
- Interested languages must have a locale
- How to handle verb-noun ambiguities
- This is mostly requirements for Firefox localisation
- Fennec would be very similar and doesn't need specific Infrastructure
Provide the Mozilla l10n files
- L10n files: .dtd and .properties files used by Mozilla
- Needs to be attached when you report a bug to add a language
- Use po2moz/other script to create L10n files out of the PO files that has the updated translations, for language teams (daily)
- pomigrate 2 script to update the PO files to correspond to the new English files
- Some translated strings might be marked as fuzzy if the source has changed
- Copy to download area (document URL)
- Host at download.locamotion.org, to be done by Friedel and Walter
- A tarball of L10n files per language as the output to be downloaded
- Split up build_ff_langs.sh into l10n->PO and PO->l10n files
- CGI application to request generating the Mozilla l10n files
- Errors should be sent by the language teams to the Localise Software mailing list
Adding/Starting a new language
- moz2po script to generate pot files from L10n files, from which po files for each language are created
- Work stable releases until no new languages are being accepted
- Work on next (new) release after that
- Update PO files in Pootle (via POT files) on each slush/firm string freeze
Languages translating from another source language
- Translating from French/Arabic/Portuguese
- Online: a script to generate PO files in French for example, to be used in Pootle as an alternative language, to help teams understand the source strings.
- Offline: need a script to add the translated strings of the alternative language as comments in the English PO files
Language Packs
- Automatically generated with POT files
- Link to built language packs from ANLoc site
- Daily language packs have the same filename
- Link to latest language pack
- Link to directory containing previous language packs
- Language teams are responsible for uploading language packs to AMO
Servers
-
Pootle server: will be used for
- Online translation through Pootle
- Hosting translated strings in PO files (from Pootle, or by uploading offline translations)
- Generating tarballs of PO files for each language
- Available downloads of PO files tarball
-
L10n Mozilla sever: will be used for
- Daily back ups of language PO files tarball
- Running the scripts to generate Mozilla L10n files
- Available downloads of L10n files tarball, that will be needed for attachement and for building the language packs
Tech Team tasks
We split the tasks by:
General tasks
Tasks to be done by all members of the Tech Team.
- Replying on the mailing list
- Managing languages on Pootle
- Managing projects on Pootle
- Updating/maintaining documentation
- Server maintenance (mostly done by Translate.org.za)
Mozilla specific tasks
Each of these tasks will be done for each language, each Tech Team member will be responsible for performing these tasks for 3 languages.
- Committing to Mercurial
- Building files and packs
- Communicating with Mozilla
- Monitoring progress of teams
- Basic testing (for language packs)
Testing / Review / Validation
- pofilter quality checks
- Click to get all failures in Pootle
- 3 or 4 crucial tests (XML tags, etc.), otherwise Firefox might not build if such errors exist
- Cosmetic tests (punctuation, double spaces, etc.)
- Encourage the teams to perform all tests
- Some inaccurate guesses that we should warn them about
- The above is called "Technical Review", which is automated
Documentation
The following need to go into our documentation guidelines:
- For testing & review, teams should install the software and go through all menus, dialogues, installer, etc.
- For Firefox, explain how to use the Locale Switcher extension
- Reach out to the community for wider testing and feedback
- How to search for text/terms to review/replace using Pootle
- Language teams will need to suggest fonts and help with keyboard layouts, for other users to be able to test. We need to prepare instrucions for that.
- Document common problems (for Firefox)
- Document examples of what not to translate
- Link to the Translate.org.za's localisation guide
- Document how to change your OS locale (required for Virtaal)
- We will need to explicitly discuss/explain variables and plural forms with language teams.
Timeline and Deliverables
New Languages
These are the language teams who will join the Localise Software sub-project end of August 2009 and start localisation beginning of September
September
- Finish translating phase user1 before mid (15) September
- By mid September start review of phase user1 and translation of phase user2
- End of September: build language packs
October
- Translate and review phases: user3, user4, config1, config2
- End of October: Communicate with Mozilla on recognizing the new languages.
November
- Translation and review for Pootle
- Translation and review for Virtaal
- Translation and review for GlossMaster
Unfinished Languages
These languages has already made some progress on Firefox localisation before Septmber 2009
- Make sure they have finished phase user1 and user2
- Pootle
- Virtaal
- Glossmaster
- Firefox phases user3, user4, config1 and config2
Late Languages
These languages join us late Septmber 2009
- Pootle
- Virtaal
- Glossmaster
- Firefox 1: phases user1 and user2
- Firefox 2: phases user3, user4, config1 and config2
All Languages
By the end of the year all languages should be in-sync
January to March
- Translation and review for the remaining Firefox files
- Communicating with Mozilla until becoming an official language
- Finalise Firefox and Fennec by the end of March 2010
March 2010
Is the end of ANLoc's second year and the start of its third year, where we will add 10 more languages and update the existing one.