My own preferred option is to go for a simplified manual approach where every string that needs to be changed according to language is set in one particular handler ('setUpParameters'), and I simply read the Welsh (or whatever) text file into a text editor and paste each line directly into the Transcript code, all in one concentrated place in the app. This is crude but in fact works rather well.

Graham, et al:


My approach is to load the entire text file into a library field when changing languages, and to load that text field into a library local variable when the library is put in use.

Each one-line message in the file is referenced as a constant, eg:

        constant sdbFileMenu=1
        constant sdbEditMenu=2
        constant sdbIOError=3
        constant sdbQuitMenuItem=4
        constant sdbOKTranslated=113

Scripts retrieve the messages via a function call: sdbMessage, along the lines of

        function sdbMessage(messageLineNumber)
                local sdbMessages
                return line messageLineNumber of sdbMessages
        end sdbMessage

So my handlers look something like:

on preOpenStack
set the name of button 1 of group "Stack Menubar" to sdbMessage(sdbFileMenu)
set the text of button 1 of group "Stack Menubar" to sdbMessage(sdbQuitMenuItem)
end preOpenStack


on menuPick thePick
  put sdbMessage(sdbQuitMenuItem) into quitMe
  switch thePick
    case quitMe
      quit
      break
  end switch
end menuPick

on displayError errorDetail
beep
answer error sdbMessage(sdbIOError)&&":"&&errorDetail with sdbMessage(sdbOKTranslated)
exit to top
end display error


So handler text is never changed and the message is resolved AT RUNTIME either when a new message file is loaded into the library or at startup when necessary (eg: for standalones).

With the exception of the fact that each constant must be declared in every script that references it, I find this approach effective & straightforward.

AND, as I alluded to above, since no script changes need occur, your application can be distributed in one version supporting any (single-byte character) language without modification....including languages not supported in the original distribution. Viola! your application can be translated by any user with a text editor.

There are examples of this in virtually all components of Serendipity Library <http://www.oenolog.net/ftp/serendipity_downloader.htm>.
--


Rob Cozens
CCW, Serendipity Software Company
http://www.oenolog.net/who.htm

"And I, which was two fooles, do so grow three;
Who are a little wise, the best fooles bee."

from "The Triple Foole" by John Donne (1572-1631)
_______________________________________________
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to