LPak Framework Documentation
LPak Framework Documentation
Page 2 Of 10
Introduction
The LPak Community Project/Program has been designed to allow as many people as
possible to participate in the Project/Program no matter their level of expertise (or lack thereof) in
computers and computer programming.
The Project/Program consists of the LPak Framework, Resource Archives for each of the
Rulesets and Extension the Project/Program is handling, the Contributors to the Project/Program
who perform the actual translation work, and finally the Project/Program Manager who, while
possibly being the least important of all the Project/Program Participates, leads, coordinates and
manages the Project/Program.
The LPak Framework has been provide free of charge to the Project/Program, but the author
of the Framework does retain the copyright to it.
The Project/Program as a whole was designed and implemented by our Project/Program
Manager, a professional ICT Senior Project and Program Manager with many years experience and
many successful commercial and community projects and programs to his credit. The experience
and know-how in running successful community projects that he brings is invaluable, but he is not
infallible while all Project/Program Participants are strongly encouraged to stick to the
Project/Program Code Of Practice and the other guidelines of the Project/Program, differences of
opinion are welcome and people are encouraged to rise issues and ways of doing things better if
they believe that this is necessary.
Some people might consider the rules of the Project/Program to be too restrictive, while
some others may consider them too loose and not restrictive enough. The Project/Program has
been set up the way it has to both be as easy for people to participate as possible and to maintain
Consistency and Accuracy, taking a holistic or big picture point of view.
We discuss issues as a Community, and we abide by the decisions of the Community, guided
by our Project/Program Manager.
We respecting each other and are tolerant of each other at all times.
We follow the Project/Program Standards at all times, striving for Consistency and Accuracy
within our Translations and our Project's/Program's Products.
We keep the Project/Program and the Project/Program Manager fully informed of what we
are doing at all times so as to make things as easy as possible for all concerned.
We leave our egos at the door, giving credit where it is due and only accepting credit
where we've earned it.
We respect copyright and the work of others, never adding to nor removing from the
original in our Translations.
Page 3 of 10
Project/Program Phases
The Project/Program is divided into a number of Phases, each aimed at a specific set of
things that need translating. This was done to ensure that Participants grew comfortable with easy
parts of the Project/Program before moving onto more difficult/complex areas, and that the
Project/Program had enough community participation before investing too much time and effort
into it.
Phase 1: To translate the string resources contained in the CoreRPG and Child-Rulesets and
Extensions.
Phase 3: To translate the embedded language items within each Ruleset and Extension.
The Project/Program is currently in Phase 2.
Project/Program Standards
As part of our effort in maintaining Consistency and Accuracy, the Project/Program uses the
following standards:
[Language] is always expressed as the English name for the Language, except where
explicitly stated otherwise.
[Language] always has proper-case ie the first letter is capitalised and the rest of the
characters are in lower-case eg Chinese, French, German, Italian, Spanish.
[Ruleset] is a place-holder for the name of the Ruleset or Extension that we are translating.
[Ruleset] is always expressed as the English name for the Ruleset or Extension, and the
generally accepted shorthand for the Ruleset or Extension is used. However, if there is
any doubt in the matter the full name is used. If the full name is used all space
characters are replaced by underscore (_) characters.
[Ruleset] always has the case of the generally accepted shorthand name if using the
shorthand name or proper-case if using the the full name eg CoC,
Castles_And_Crusades.
General Notes/Guidelines
When we translate we don't add to nor remove from the text we are translating we
don't try to improve things. Obviously direct word-for-word translations are not always practical,
but be particularly careful when translating around Copyright statements.
If you find a mistranslation or come across some other issue then please contact the
Project/Program Manager and he will sort things out.
[Somebody] and [Yourname] are both place-holders used within an example in the section.
Page 4 Of 10
XML Tags
The files we are dealing with contain XML tags. An XML tag is a string of characters
starting with < and ending with >. Generally the characters between these two characters are
the name of the tag.
XML tags normally come in pairs: an opening tag and a closing tag, both with the same
name but with the closing tag name starting with a /.
Sometimes an opening tag will have extra information inside the <and the > after the
name of the tag.
The characters between an opening and a closing tag form the tag's value. Tags can also
contain other XML tag pairs.
Here are some examples of XML tags. This is a ruleset tag with two child tags as its
value the name tag and the minrelease tag. The name tag has a value of CoreRPG and the
minrelease tag has a value of 3:
<ruleset>
<name>CoreRPG</name>
<minrelease>3</minrelease>
</ruleset>
Tools
You will require some software tools to participate in the Project/Program:
1. You will need a Text Editor to do the translation. Windows Notepad is sufficient but you
may like to consider a more sophisticated Text Editor. We recommend Notepad++ as a free
Text Editor for Windows you can download from the Internet. Other similar Text Editors are
available for Mac and Linux machines.
2. You will also need a Zip/Unzip Utility. We recommend 7-Zip, a free Zip/Unzip Utility for
Windows you can download from the Internet. Other similar Utilities are available for Mac
and Linux machines.
3. If updating an existing LPak you will also need a File Difference Utility. We recommend
WinMerge as a free File Difference Utility for Windows you can download from the
Internet. Other similar Utilities are available for Mac and Linux machines.
4. For Phase 2 you will need an Image Editor. Paint.net is a good, free Image Editor available
from the Internet. Other similar Utilities are available for Mac and Linux machines.
5. Additionally, for Phase 2 you will need an Image Compressor. ScriptPNG and ScriptJPG are
the tools we use: both are available free for download over the Internet. Other similar
Utilities are available for Mac and Linux machines.
Getting Started
The following list will take you step-by-step through the process of joining the LPak
Community Project/Program:
1. Read this document so that you understand the process of creating or updating an LPak and
how the Project/Program works.
2. Check out the Status of the various LPaks on Post #2 (and Post #63) of the LPak
Project/Program Thread.
Page 5 of 10
3. Decide which LPak you'd like produce (which Ruleset/Extension you would like to translate
into which Language):
a) If the LPak for the CoreRPG Ruleset in your chosen Language has a Status of anything
but Current then please seriously consider working on the CoreRPG LPak for your
chosen Language.
b) If the LPak Framework Documentation for you chosen Language has a Status of
anything but Current then please seriously consider working on the translation of the
LPak Framework Documentation for your chosen Language. If you do decide to do this,
skip the rest of these steps and follow the steps listed under Translating The LPak
Framework Documentation, below.
c) If your chosen LPak has a Status of Started or Updating and you'd would like to
help, follow the Link on Post #2 of the Project/Program Thread to the relevant
Notification Post (see below) and see who the Translating Contributor(s) is. Then send
them a PM (Private Mail) and ask if they would like assistance.
i. If you are already working on an LPak and you decide to accept another
Contributor's help, consider how to break up the work and edit your Notification
Post to reflect this information, and send the Project/Program Manager a PM as well.
d) If your chosen LPak has a status of Not Started then follow the steps listed under
Creating A New LPak, below.
e) If your chosen LPak has a status of Not Current then follow the steps listed under
Updating An Existing LPak, below.
one or more folders: one called XMLFiles, one possibly called graphics and possibly
another called strings. You may also have a file called Notes.txt.
6. If there is a Notes.txt file it contains special instructions which may override these
instructions on what to do or not do.
7. Open up the extension.xml in your Text Editor and make the following changes:
a) Check the Notes.txt file and make any listed changes for Line 20 of the
extension.xml file.
b) Find the loadorder tag on Line 74:
i. If you are creating an LPak for use with the CoreRPG change this tag's value to 90.
ii. If you are creating an LPak for use with an Extension change this tag's value to 110.
c) There are two announcement tags (on Line 76 and 77). Use the first for Rulesets and
the second for Extensions, and delete the other one.
d) If you are creating an LPak for use with the CoreRPG, remove lines19-21.
e) There are two description tags (on Line 17 and 18). Use the first for Rulesets and the
second for Extensions, and delete the other one.
f) Search for the string [Language] (without the quotes) and replace all the occurrences
with your chosen Language. Don't forget to follow the Project/Program Standards when
doing this.
g) Search for the string [Ruleset] (without the quotes) and replace all the occurrences
with the Ruleset or Extension you are translating. Again, remember to follow the
Project/Program Standards when doing this.
h) Search for the string [Translator] (without the quotes) and replace all the occurrences
with your name. It is preferable to use your proper name, but you can use your Forum
Handle if you prefer.
i) Find the author tag on Line 16. Translate the tag's value into your chosen Language,
including the replaced [Language] and [Ruleset] place-holders.
j) Find the description tag on Line 17. Translate the tag's value into your chosen
Language, including the replaced [Language] and [Ruleset] place-holders..
k) Find the announcement tag tat was on Line 76 or 77. Translate the tag's value into
your chosen Language, including the replaced [Language] and [Ruleset] place-holders.
l) Look through the extension.xml file and remove all the ruleset tags (and any child
tags) that do not have your chosen Ruleset as the name tag value.
i. If your Ruleset is a Child-Ruleset remember to leave behind the ruleset tags of any
parent Rulesets. This will almost always mean that you won't delete the CoreRPG
ruleset tag.
ii. Remember to check the Notes.txt file for any relevant instructions (especially
important when translating Extensions).
8. Open up the xLPakFiles.xml (found in the XMLFiles folder) in your Text Editor and
remove any tags which are not listed under your chosen Ruleset/Extension heading.
a) The CoreRPG Ruleset is listed first, followed by the Rulesets listed in alphabetical order,
followed by Extensions listed in alphabetical order.
Page 7 of 10
of your work directories. (If using 7-Zip right-click on the downloaded ext file and chose
Extract Here).
4. Download the Resource Archive zip file for your chosen Ruleset/Extension and unzip it into
the second of your work directories. (If using 7-Zip right-click on the downloaded zip file
and chose Extract Here).
5. You will need to determine which files are different between the existing (unzipped) LPak
and the Resource Archive. Use your File Difference Utility to do this and make a note of
which files in the Resource Archive are different.
6. For each of the files in the list you made in Step 5, determine which string tags in those
files have not yet been translated. Do this using your File Difference Utility to compare each
file with the corresponding file in the existing LPak and note down the untranslated string
tags.
7. Copy each untranslated string tag from its file in the Resource Archive to its
corresponding file in the existing LPak. If there is no corresponding file in the existing
LPak, copy the entire file.
8. Translate the untranslated and copied string tags.
9. If there is a Notes.txt file in the Resource Archive follow any relevant instructions listed
there.
10. Open up the extension.xml in your Text Editor and make the following changes:
a) Confirm that the steps listed under Step 7 of the Creating A New LPak section, above,
have been complete and don't need changing.
b) Change the version number of the LPak (increase it by one). The Version Number occurs
in three places: on Lines 14, 15 and and in the description tag and needs to be the
same in all three places.
c) Find the author tag on Line 16. Add your name as a translator to the tag's value. Don't
remove the original translator(s) name(s). A good way to word this is to change
Translation by [Somebody] to Translation by [Somebody] and [Yourname].
d) Find the announcement tag. Add you name as a translator to the tag's value, similar to
Step 10.c).
11. Confirm Step 8 through to Step 11 of the Creating A New LPak section, above, have been
completed; complete them if they have not been.
12. When you have finished follow the steps listed in Finalising An LPak, below.
Finalising An LPak
1. Once you have finished zip up all the files and directories in your work directory/existing
LPak work directory.
a) Do not include the LPak Framework zip, Resource Archive zip or Notes.txt files.
b) Zip the files in the work directory, not the work directory itself.
2. Rename the resulting zip file using the format: LPak-[Language]-[Ruleset].ext, as per the
Project/Program Standards.
3. Copy the new ext file to your Fantasy Grounds Extension directory (normally c:\Fantasy
Grounds\extensions).
Page 9 of 10
4. Test the new LPak Extension by starting Fantasy Grounds with the Ruleset/Extension and
the new LPak Extension and see if the LPak Extension message appears in the Chatbox and
that the language has changed.
5. If all is good Edit your Notification Post to say you have finished and upload the LPak
Extension to that Post, and send a PM to the Project/Program Manager.
Page 10 Of 10