HOW TO ADD TRANSLATIONS

TOC
---------------------------------
0. Foreword
1. Get PoEdit
2. Create a language folder
3. Create a catalog for the translation
4. Start translation
5. Make translation available
6. Hints
APPENDIX - List of commom words/phrases in Senayan


0. FOREWORD
---------------------------------
This file only gives a quick start for adding a translation. A better 
(general) explanation might be found here 
http://carsonified.com/blog/features/webapps/give-your-web-app-international-appeal/
and
http://carsonified.com/blog/dev/give-your-web-app-international-appeal-part-ii/


1. GET POEDIT
---------------------------------
Download PoEdit from http://www.poedit.net/ and install it. Versions are available for 
Win/Linux/Mac.


2. CREATE A LANGUAGE FOLDER
---------------------------------
a)  Go to senayan3\lib\lang\locale
b)  Create a folder describing the language and the country the translation is
    for. For example en_US stands for english/United States. While it is not 
    strictly necessary to use this convention, it would be nice if you could 
    stick to it anyway :)
    - You can find the short code for your language at 
      http://www.gnu.org/software/gettext/manual/gettext.html#Usual-Language-Codes
    - You can find the short code for your country at 
      http://www.gnu.org/software/gettext/manual/gettext.html#Country-Codes
c)  Enter the folder and create another folder called: LC_MESSAGES
Now you got something like id_ID/LC_MESSAGES


3. CREATE A CATALOG FOR THE TRANSLATION
---------------------------------
a)  Start PoEdit
b)  Goto Menu "File" > "New Catalog"
b1) Tab "Project info":
    ------------
    "Project Name and Version":
      -> (optional) Enter Senayan3
    "Team"
      -> (optional) Enter your name   
    "Team's email adress"
      -> (optional) Enter your mail
    "Language"
      -> Select the language you want to translate to
    "Country"
      -> Select the country for the language
    "Charset"
      -> Use utf-8
    "Source code charset"
      -> Use utf-8
    "Plural forms"
      ->  This is a bit more complicated. If your language has just one plural 
          form use:  nplurals=2; plural=n != 1;
          For other languages you can find a list of possible plural forms at
          http://translate.sourceforge.net/wiki/l10n/pluralforms
    ------------
    "Base Path"
      -> Enter: ../../../../../
    "Paths" (Click button "New Item")
      -> Enter: . (yes, just a dot)
b3) Tab "Keywords"
    ------------
    Add two lines:
    	__ (two underscores)
    	_ngettext
c)  Press ok and save the file under senayan3\lib\lang\locale\{YOUR LANGUAGE}\LC_MESSAGES.
    Name the file messages.po
    

4. START TRANSLATION
---------------------------------   
a)  First you have to fetch all translatable string. Go to "Catalog" > "Update 
    from source" (or just click the third button from the left in the main window)
b)  Now just start translating each line by clicking on it and entering the 
    translation at the bottom part of the window
c)  When finished go to "File" > "Save" (or press the second button from the left)


5. Make translation available
---------------------------------
Open file \senayan3\lib\lang\localisation.php and at a line like this at the end:
$available_languages[] = array('xx_XX', _('ENGLISH NAME OF LANGUAGE'), 'NATIVE NAME OF LANGUAGE');
I think it should be clear what to fill in.


6. HINTS
---------------------------------
- If you right click on a row, you can see in which context (source code) the string
  is used.
- Maybe at some point you want to change a translation you already did over and over
  again. PoEdit doesn't support search & replace operations. But you can open the
  messages.po file in a common text editor and do a search & replace there (close
  PoEdit first). The Appendix here might help to prevent this situation.


APPENDIX - LIST OF COMMOM WORDS/PHRASES IN SENAYAN
---------------------------------   
This is just a small list with words/phrases that I came up with for my 
german translation. It might help you to find translations for the most
"troublesome" terms. Also you might end up with less synonyms usage ;)

add                               =>  
Are You Sure Want to              =>  
Authority Files                   =>  
Authority Type                    =>  
bibliographic                     =>  
cant be empty / can not be empty  =>  
Call Number                       =>  
cancel                            =>  
circulation                       =>  
check                             =>  
checkout (items)                  =>  
Code                              =>  
Collection                        =>  
Collection Type                   =>  
confirm                           =>  
content                           =>  
copies = items                    =>  
Credit                            =>  
data                              =>  
database backup                   =>  
Debit                             =>  
due date                          =>  
expired                           =>  
Expiry Date                       =>  
Export XXX Data To CSV format     =>  
fines                             =>  
Forbidden                         =>  
frequency                         =>  
gmd                               =>  
group                             =>  
history                           =>  
holiday                           =>  
id                                =>  
image thumbnail                   =>  
Import Data to XXX from CSV file  =>  
initialize                        =>  
Inventory Code                    =>  
item = copies                     =>  
Item Code                         =>  
label                             =>  
Labels                            =>  
library automatation (system)     =>  
library members                   =>  
list                              =>  
loan                              =>  
Loan Limit                        =>  
Location                          =>  
login                             =>  
Lookup Files                      =>  
make sure                         =>  
member ID                         =>  
Member Type                       =>  
Member Type Name                  =>  
Membership                        =>  
module                            =>  
must be set = cant be empty       =>  
overdue                           =>  
(overdue) fines                   =>  
Override(Overide)                 =>  
pending                           =>  
PERMITTED                         =>  
Place                             =>  
previous                          =>  
privileges                        =>  
promote(ed)                       =>  
quick return                      =>  
Real Name                         =>  
Reborrow                          =>  
repository                        =>  
Required                          =>  
reservation                       =>  
return                            =>  
section                           =>  
stock take                        =>  
Subject                           =>  
Subject Type                      =>  
Subscription                      =>  
supplier                          =>  
System Users                      =>  
template                          =>  
transaction                       =>  
uncheck                           =>  
update                            =>  
user/user name                    =>  
view                              =>  
writable                          =>  
you                               =>  
You are going to edit xxx         =>  