On Friday, January 3, 2003, at 03:29 PM, Igor Couto wrote:
Or have people found other ways/approaches to internationalising their apps?Consider the following for the brainstorming only. Cocoa, Apple's Objective-C application framework, has the most elegant internationalization method I've ever seen in a programming environment. It might not even be applicable to Revolution. However, maybe people will want to dig deeper and get some ideas for the ideal way to do it in Revolution.
All suggestions GREATLY appreciated!
Cocoa applications that support Internationalization are automatically and fully translated into the appropriate language at run-time,. Everything can be Internationalized, from graphics to on-screen text to messages and programmatic content. Messages coming back from the OS are internationalized. Date, time, and currency formatting are easily formatted to user's international preferences.
A Cocoa app is a bundle, which is just a folder containing resources in addition to the binary app itself. The Resources folder can be broken down into subfolders for each supported language. Each language subfolder can have "nib" files and property list files files, and other resources.
A nib file is an archive of user-interface objects created by Interface Builder.app. It contains the layouts and connections among Windows, Views, Buttons, etc. In contains the entire GUI, except parts which are created programmatically. When the app runs, the "nib" file is connected to the app itself. The app has "outlets" which are connected to objects in the nib file. The nib file objects have "actions" and "delegates" which are connected to objects and methods in the app itself. So the UI components and the app code are cleanly separated, but glued together automatically at runtime.
Abstracting out the UI into the nib files also gives you a way to do some really clean Internationalization. Remember the Resources folder in the app can have subfolders for each language. There is a command line tool "nibtool" which can be used to extract all the localizable strings from a nib for sending to translators. nibtool can then merge the localized strings back into a copy of the nib file.
The programmer doesn't have to do anything in programming code to get the app to bind with the localized nib file. Once the app is localized with it's layout of nib files and resources in it's app bundle, the Cocoa framework handles the rest at app startup.
There are also macros for programmatically getting localized content out of the app bundle, automatically, like NSLocalizedString(@"some message here...", nil); This is kind of like Rob's sdbMessage() function, but if there is not a matching localized string for the current language, it will use the first parameter to the macro.
Alex Rice, Software Developer
Architectural Research Consultants, Inc.
[EMAIL PROTECTED]
[EMAIL PROTECTED]
_______________________________________________
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution
