• Welcome to Valhalla Legends Archive.
 

Language Pack/Locales

Started by Barabajagal, January 15, 2009, 09:19 PM

Previous topic - Next topic

Barabajagal

For quite some time now, I've been working on adding locales to my bot, using an INI-style language pack system to allow modification of all text in the EXE.

The method I'm currently using runs something like this:

.lng file with data such as:
[About]
Form=About %PROD%
IconTT=%PROD% ©%YEAR%.
RRIconTT=%CPNY%.
Info1=%PROD%\nVersion %VER%.
Info2=NOTICE:  %TRADE%
License=License
LicenseTT=GNU General Public License.
Hire=Hire the Developer
HireTT=View information about hiring %CPNY%.
OK=OK
OKTT=Close.


Type variable to hold the strings that are static:
Public Type ABOUTSKIN
  fCaption        As String
  pIconTT         As String
  pRRTT           As String
  lInfo1          As String
  lInfo2          As String
  cLicense        As String
  cLicenseTT      As String
  cHire           As String
  cHireTT         As String
  cOK             As String
  cOKTT           As String
End Type


Simple system to read the lng file:
  sLang = "About"
  skAbout.fCaption = ReadLang(sLang, "Form")
  skAbout.pIconTT = ReadLang(sLang, "IconTT")
  skAbout.pRRTT = ReadLang(sLang, "RRIconTT")
  skAbout.lInfo1 = ReadLang(sLang, "Info1")
  skAbout.lInfo2 = ReadLang(sLang, "Info2")
  skAbout.cLicense = ReadLang(sLang, "License")
  skAbout.cLicenseTT = ReadLang(sLang, "LicenseTT")
  skAbout.cHire = ReadLang(sLang, "Hire")
  skAbout.cHireTT = ReadLang(sLang, "HireTT")
  skAbout.cOK = ReadLang(sLang, "OK")
  skAbout.cOKTT = ReadLang(sLang, "OKTT")


This seems to be working alright, aside from being very tedious to switch over, and a few little issues with the more dynamic strings, and things like comparing Battle.net messages to strings (which will be different when a different locale is sent to the server)...

Is there a better way to do all of this?