Software Internationalization is the process of writing software in such a way as to make the localization of the software to a particular region as easy as possible. In other words, internationalization aims to remove the burden of re-engineering an application when writing for multiple countries and/or regions. Localization deals with the translation of textual elements to a particular locale. There are also a number of user interface elements that may be added or removed from a locale to provide the user with a native look and feel to the application. This session will cover many of the aspects of internationalization such as locales, isolating locale-specific data, formatting of data, Unicode, input and output, GUI development, input methods, etc.