A call to translators
As of v. 1.3-beta5, the possibility to localize AncientGreek is present. The result of localization is shown in the following picture (language is Greek).
AncientGreek dialog "speaking" Greek on Windows 7
If you find it interesting to have AncientGreek "speak" your native language, then just keep on reading.
Localizing AncientGreek is really easy. Translators do not need to have any special knowledge; speaking your native language (and reading this page) is enough!!!
As of v. 1.4-beta3, AncientGreek translations come in GNU gettext format (po/pot file). Before explaining how to translate the S/W, a short introduction of the PO file format is necessary.
On-line Localization of AncientGreek GUI^
As of v 1.6-beta1, AncientGreek l18n files are accessible through Transifex as well. This way a translator has the possibility to either work off-line or on-line.
If one prefers to work through Transifex, a free account is required. After the account is created, one would contact me in order to grand him permission to edit files for a specific language. If the language does not already exists, I will create it for him.
When all this is done, a translator would get to his language page and see a list of files, similar to the list shown in the following image.
The file to select is called AncientGreek (category GUI); uncategorized files contain documentation messages whose translation procedure is discussed in a separate section.
Transifex supports both on-line and off-line editing. On-line editing is done in the browser and the file is automatically updated as messages get saved. This method has the advantage that no PO editing program has to installed on the translator's system, no downloading of files has to be done, and no file exchange through email is necessary; all this is done automatically through Transifex.
Off-line editing means that a translator can download the file, edit it and upload it back to Transifex. This means of course, that a PO editing program still has to be installed on the translator's system.
Working on-line or off-line (with or without using Transifex), or combine both methods as convenient, is up to the translator. In any case, the files will get to me and I will update things accordingly.
I would suggest that you (the translator to be) read the remaining of this page, even if you prefer to work on-line, so that you know how things work and what options are available to you, before you decide on a workflow.
Off-line Localization of AncientGreek GUI^
If you have decided to work on-line (using Transifex), reading this section is not mandatory but encouraged; you can just go on to Localizing AncientGreek documentation.
Localizing AncientGreek takes the following easy steps:
- Find out your native Language Code.
- Download a PO or POT file.
- Edit (or create) and translate the PO file.
- Email the resulting file back to me.
When I get your translation, I will update the extension and publish it for all to use.
1. Find out your native Language Code^
The Language Code is a code which tells the system the language the program environment is displayed (The language the program "speaks"). It is used to get localized text for every window that appears on the screen, provided that someone (the translator) has translated the original text to his native language.
Finding your Language Code is really easy. Just display the AncientGreek dialog and navigate to the last entry in the list (Language Code).
As an example, I will assume that your environment is English (South Africa). Then, your Language Code would be en-ZA, as shown in the following picture.
Language Code for English (South Africa) on Windows 7
2. Download a PO or POT file^
The following table lists all the available AncientGreek l18n GUI files:
Name | Translated messages |
Fuzzy messages |
Untraslated messages |
Last translator |
---|---|---|---|---|
AncientGreek.pot | 0 | 0 | 650 | - |
el.po* | 42 | 0 | 0 | S. Georgaras <sng@hellug.gr> |
it.po | 594 | 14 | 42 | Spiros Georgaras <sng@hellug.gr> |
Available AncientGreek l18n files |
* This file (el.po) is the one for my native language. It contains just a subset of AncientGreek.pot message entries, because I localize AncientGreek as I write the code. So, this file contains those strings that are dynamically inserted to the files.
_________
Provided you already found out your Language Code, you just search the list for the corresponding PO file, and
- if it's there,
- and fuzzy or untranslated messages exist, you should contact the last translator and ask him whether he is still active (he intends to continue working on this file). If he tells you he won't, you can download the file and continue translating it.
- if no fuzzy or untranslated messages exist, then obviously there is nothing to do.
- if it's not there, you just download AncientGreek.pot, and start its translation.
For example, if your Language Code is en-ZA, you see that en-ZA.po files does not exist, so you have to get the POT file to start a new translation.
If, on the other hand, your Language Code was it (for Italian), you'd see that a it.po already exists and no fuzzy or untranslated messages exist. So there is nothing to do for the Italian Language.
If there were any fuzzy or untranslated messages, you'd first contact the last translator and if he is inactive, you'd download it.po and continue its translation.
3. Editing the PO file^
So you just downloaded a PO or POT file. The question is what to do with it?
The first thing to do is to read about PO-POT file format. This will help you understand what you are doing and why. You should not try editing a PO file before reading this introduction.
It should be made clear at this point, that even though a PO (or POT) file is a plain text file, it is not meant to be edited as such. Don't get me wrong: you can still edit it even with the simplest of editors (for example Windows Noteapd), but it will be like "reinventing the wheel" all over again.
The right way to edit a PO (or POT) file, is to get a specialized PO editing program and wotk with it. Using a PO editing program provides the following advantages:
- Hides PO-POT file format internals.
- Provides translation tools like Translation Memory. (A Translation Memory is actually a database created by the messages one has already translated. It helps translators reuse already translated messages when translating new or modified messages).
PO editing programs
The following S/W can be used to edit PO files:
- Poedit
This is my favorite program for editing PO files, because it is available for Windows, Linux and MaC OS and because it's not tied to any Desktop Environment. I will provide some examples on how to use Poedit with AncientGreek. The version I will use is 1.7.6, but later version should not be that different. - Gtranslator
It "is an enhanced gettext po file editor for the GNOME desktop environment. It handles all forms of gettext po files and include very useful features like Find/Replace, Translation Memory, different Translator Profiles, Messages Table (for having an overview of the translations/messages in the po file), Easy Navigation and Editing of translation messages & comments of the translation where accurate." - Lokalize
This is the KDE solution to PO editing. It "is a computer-aided translation system that focuses on productivity and quality assurance. It is targeted for software translation and also integrates external conversion tools for freelance office document translation."
Create a PO file from a POT file
In case you are just starting a new translation for your language (your language PO file does not exist yet), you have probably downloaded the AncientGreek.pot file, which you will use to create your PO file.
If you are going to use a text editor to translate the program, you just have to rename AncientGreek.pot to "Your Language Code".po. For example, if your Language Code is en-ZA, you should rename AncientGreek.pot to en-ZA.po. This will not create a 100% valid PO file, but I will take care of that when you send it to me.
If you are going to use one of the available PO editing programs, you should check its documentation on how to set the PO file language. I will demostrate this procedure for Poedit (running on Windows 8.1) below.
Execute Poedit and at its starting screen click on "Create new translation". The "Open catalog template" window will be shown, where you can browse to the file "AncientGreek.pot". Select it and clink on "Open".
When the file is loaded the "Translation language" dialog will appear. Select your native language from the list (in my case it's Greek) and click "OK".
You are done and you are ready to start translating.
To save the new file, you go to the menu File / Save as......
and enter your Language Code (in my case it's el) and click on "Save".
Setting translator's data
The next thing you should do is set your data in the PO file.
If you are using a text editor, you just have to edit the line starting with ""Last-Translator:" in the PO file header and insert your name and email.
If you are going to use one of the available PO editing programs, you should check its documentation on how to set translator's data. I will demostrate this procedure for Poedit (running on Windows 8.1) below.
Go to menu "File / Properites..."
and just type your name and email.
PO editing window
All PO editing programs main window is similar to each other in some basic concepts.
As you can see in the picture (Poedit running on Windows 8.1), there will be:
- An overview field, where all messages are displayed. This field can be used for navigation and other PO editing functions.
- A "Source text:" field, where the currently selected English message is displayed.
- A "Translation:" field, where the translation of the English message will be typed.
- A "Fuzzy" button (or command), which can turn the fuzzy marker on or off for a message.
- A "Validate" button (or command), which will check the PO file for "PO file format" errors (PO language missing, translator's data missing, RETURN ("\n") character missing, quotation (") missing, etc).
Window layout, field labels and additional functions will be different in Gtranslator and Lokalize, but these fields will be there for sure.
Using the Translation Memory (TM)
As already stated previously, a Translation Memory is actually a database created by the messages one has already translated. It helps translators reuse already translated messages when translating new or modified messages.
This section will show you how to set up and use Poedit's Translation Memory. If you are going to use another PO editing program, you should refer to its documentation.
This section will show you how to set up and use Poedit's Translation Memory. If you are going to use another PO editing program, you should refer to its documentation.
First of all you should check whether "Translation Memory" is enabled or not (it should be by default). Click on "File / Preferences..." menu and go to tab named "Translation Memory".
Make sure that "Use translation memory" is checked and that "Consult TM when updating from sources" is unchecked.
If you already have some PO file from other projects, you may load them by clicking "Learn From Files...".
Then you can just right click on any "untranslated" or "fuzzy" entry and you will get "Translation suggestions:" to choose from.
You can also automatically get suggestions for all "untranslated" messages by accessing the menu "Catalog / Fill missing translations from TM". Then all "untranslated" messages will be filled (from TM contents) and will be marked as fuzzy, so you can check them later on.
Poedit will inform you of the result of the action of "Translation Memory" with a message similar to that of the above image.
4. Emailing the PO file back to me^
When you are done translating the file, you just send the file to me.
Then I will update the extension and release a new beta or rc extension file.
Localizing AncientGreek documentation^
As of v 1.6-beta1, AncientGreek documentation is available for localization. This can be done either online or off-line.
In either case, please make sure you have read the documentation localization guide before you begin:
On-line documentation localization^
Documentation PO files are accessible through Transifex.
The files to translate are the ones marked as uncategorized as shown in the following picture.
Any changes made to theses files (following the documentation localization guide) will be automatically made available to me so that I can create the translated web pages. When this is done I will upload the result for all to see.
Off-line documentation localization^
Translator who prefer to work off-line can download the following ZIP file:
and browse to the docs directory.
This directory contains a number of language directories: el for Greek, it for Italian and so on.
If your language directory does not already exist, please contact me so that I create the appropriate files and update the ZIP file.
Checking the result^
Unfortunately, there is no easy way to see the actual result of the translation; the translated messages have to be used to create the final translated web pages.
Whenever new messages are added, I will update the following ZIP file:
Download this ZIP file and browse under the site directory to see the translated web pages.
To keep the size of the ZIP file small, no images are present in it. If you also want to have the images, please download the following ZIP file:
How will I know when to download this file? you may ask. Well, when you see an image is missing on a translated page, then you will know it's time to update your local copy of the images.
ZIP update time
Both ZIP files were updated on:
Thu Feb 17 14:40:47 UTC 2022
PO-POT file format^
This is an introduction to PO file format, limited to the aspects useful for AncientGreek localization. If you want to read the original documentation, go to GNU gettext utilities: The Format of PO Files.
Simply put, a POT (PO Template) file is a text file which contains all the untranslated English strings of AncientGreek (or any S/W), and the place one can type the translation of each string. Strings are actually called messages (since each string will be displayed on a dialog, providing a message to the user).
A POT file is always updated (by special S/W) so that it contains the latest messages the code uses.
A PO file is a POT converted in a way to contain the translation of messages for a single language. AncientGreek po files are named after the language code of the language they contain ("el.po" for Greek, "it.po" for Italian and so on).
Each PO file is updated at POT creation/update time, so that they do not contain obsolete messages.
Messages within a PO file can be in any of the following states:
- Untranslated
No translation exists for the message. The English message will be displayed when the program is executed. - Translated
The message is translated and checked. This localized message will be displayed when the program is executed. - Fuzzy
The message is translated (by hand or by S/W) but is not checked. The English message will be displayed when the program is executed.
A message can be marked as fuzzy either by a translator (if one is not certain of the translation provided), or by special S/W, at POT update time, when the old message has changed in any way.
A PO file consists of a header and consecutive entries of translated/untranslated messages.
PO-POT file stracture
As already mentioned, each PO/POT file contains:
- a header, recording language and translators' data.
- consecutive messages entries, which are the actual text to be translated.
PO Header
This is where S/W and language info, translator's name and email, etc. is held.
AncientGreek POT file header is the following:
# Translations template for AncientGreek.
# Copyright (C) 2014 S. Georgaras
# This file is distributed under the same license as the AncientGreek project.
# S. Georgaras <sng@hellug.gr>, 2014.
#
#, fuzzy
msgid ""
msgst ""
"Project-Id-Version: AncientGreek 1.4-beta3\n"
"Report-msgid-Bugs-To: sng@hellug.gr\n"
"POT-Creation-Date: 2014-11-20 11:22+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: AncientGreek <sng@hellug.gr>\n"
"MIME-Version: 1.0\n"
"content-Type: text/plain; charset=utf-8\n"
"content-Transfer-Encoding: 8bit\n"
"Generated-By: AncientGreek\n"
This header is converted to the following form, when a po file is created (from a POT file):
# Translations template for AncientGreek.
# Copyright (C) 2014 S. Georgaras
# This file is distributed under the same license as the AncientGreek project.
# S. Georgaras <sng@hellug.gr>, 2014.
#
msgid ""
msgst ""
"Project-Id-Version: AncientGreek 1.4-beta3\n"
"Report-msgid-Bugs-To: sng@hellug.gr\n"
"POT-Creation-Date: 2014-11-20 11:22+0300\n"
"PO-Revision-Date: 2014-11-27 15:24+0200\n"
"Last-Translator: S. Georgaras <sng@hellug.gr>\n"
"Language-Team: AncientGreek <sng@hellug.gr>\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"content-Type: text/plain; charset=UTF-8\n"
"content-Transfer-Encoding: 8bit\n"
"Generated-By: AncientGreek\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.7.6\n"
This is actually the header of the PO file for the Italian language (it.po), and it's easy to see the language specific entries. Also the translatior's info and translation time is recorded in the file.
PO Message Entries
The following is a simple message entry:
# 28.AncientGreekDialog.cmdHelp.Label
# 59.NewStyleDialog.cmdHelp.Label
# 253.StylesManagementDialog.CommandButton3.Label
# 255.StylesManagementDialog.btnHelp.Label
# 561.InsertNominaSacraDialog.btnHelp.Label
# 879.keyCombination.cmbHelp.Label
# 1007.AskFullWidthDialog.cmbHelp.Label
msgid "Help"
msgstr ""
-- Empty Line --
Each message entry consistes of:
- Comments
A comment line starts with a "#" character. Comments must never be translated; in fact PO editing S/W usually do not allow comment editing. It should be noted that a message entry may or may not have comments. - msgid
This is the English String as it was extracted form the S/W source code. It must never be translated or altered in any way. - msgstr
This is the place the translator actually types the translation of the English String or English Message or msgid. - -- Empty Line --
Every message entry ends with an empty line (a "Carriage Return" character, not the string "-- Empty Line --").
This message entry takes the following form when translated (sample from "it.po"):
# 28.AncientGreekDialog.cmdHelp.Label
# 59.NewStyleDialog.cmdHelp.Label
# 253.StylesManagementDialog.CommandButton3.Label
# 255.StylesManagementDialog.btnHelp.Label
# 561.InsertNominaSacraDialog.btnHelp.Label
# 879.keyCombination.cmbHelp.Label
# 1007.AskFullWidthDialog.cmbHelp.Label
msgid "Help"
msgstr "Aiuto"
-- Empty Line --
Multi-line Message Entries
When an English Message is too long to fit in a single line or it contains RETURN characters ("\n"), multi-line message entries are used. The following is one of them (with Greek translation):
# 131.NewStyleDialog.par.HelpText
msgid ""
"This text contains Latin (ASCII) characters which most probably should "
"not be converted.\n"
"\n"
"AncientGrrek can convert them to FullwWidth characters, ... "
"to any further conversion. This way they will still be readable after "
"converting the remaining text.\n"
"\n"
"What do you want to do?"
msgstr ""
"Αυτό το κείμενο περιέχει Λατινικούς χαρακτήρες (ASCII) οι οποίοι "
"δεν θα πρέπει να μετατραπούν.\n"
"\n"
"Το AncientGreek μπορεί να τους μετατρέψει, ... "
"κάθε άλλη μετατροπή. Με αυτόν τον τρόπο θα είναι αναγνώσιμοι "
"μετά την μετατροπή του υπόλοιπου κειμένου.\n"
"\n"
"Τι θέλετε να κάνετε;"
-- Empty Line --
Things to notice:
- Both msgid and msgstr are empty ("").
- The actual English message starts in the line following msgid.
- The translated message starts in the line following msgstr.
- The translated message follows the format of the English message.
- Quotation (") is always preserved.
- RETURN characters ("\n") are always preserved.
Fuzzy Entries
The following is the simple message entry we saw previously, but now it's marked as fuzzy (probably because the source code has changed):
# 28.AncientGreekDialog.cmdHelp.Label
# 59.NewStyleDialog.cmdHelp.Label
# 253.StylesManagementDialog.CommandButton3.Label
# 255.StylesManagementDialog.btnHelp.Label
# 561.InsertNominaSacraDialog.btnHelp.Label
# 879.keyCombination.cmbHelp.Label
# 1007.AskFullWidthDialog.cmbHelp.Label
#, fuzzy
msgid "Help"
msgstr "Annulla"
-- Empty Line --
At POT update time, the PO file was updated also. The updating S/W detected that the message was changed, so it tried to find a proposed translation for the new English message (based on file contents). When it did, it marked the entry as fuzzy.
In this case, the proposed translation for Help is surely wrong ("Annulla" means "Cancel" in Italian), but there may be times when the proposed translation will be correct. It's up to the translator to decide whether to keep it or change it, and finally remove the fuzzy marker.
It should be noted that since the fuzzy marker line starts with a "#" character, it is actually a comment. What makes it special, one might ask? It is the comma (",") character that follows the "#".