The attached pdf contains a check list for software design that is localization-friendly.
International software design checklist: 30 software engineering considerations
1. Design team considers translation and localisation from the beginning of the project.
2. All international editions are compiled from one set of source files.
3. Localisable items are stored externally in resource files, or resource bundles.
4. Code supports Unicode or conversion between Unicode and local codepages.
5. String buffers are large enough to handle translated words and phrases.
6. No assumptions are made that one character storage element represents one linguistic character.
7. Validate databases to ensure that schemas, datatypes and table design are ready for a multi-locale environment.
8. All language editions can deal with one another's data.
9. Program takes advantage of generic text layout functions when available.
10. International laws affecting design and operation are considered.
11. Code uses generic datatypes and generic function prototypes if available.
12. Program handles input of international data.
13. Program contains support for locale-specific hardware if required.
14. The product runs properly in its base language in all locales.
15. Program depends on operating or runtime system functions for sorting, character typing and string mapping.
16. Third-party components and software used in the product are examined for I18N support.
17. Strings are not assembled by concatenation of fragments.
18. Source code does not contain hard-coded character constants, numeric constants, screen positions, filenames or pathnames that assume a particular language.
19. Code is generic enough to handle the required range of character sets.
20. Code properly handles all characters in the program's character set.
21. Code processes all character sets correctly regardless of character widths.
22. Application works correctly on localised editions of the target operating system.
23. Program meets international testing standards.
24. Icons, cursors and bitmaps are generic, are culturally independent and do not contain text whenever possible.
25. Code does not use embedded font names or make assumptions about particular fonts being available.
26. Displayed and printed text uses appropriate fonts.
27. Menu and dialog-box keyboard assignments are unique.
28. If ethnocentric graphics, colours or fonts are used, they can be replaced dynamically using locale-sensitive switch statements.
29. Sorting and case conversion are culturally correct.
30. Program handles user keyboard layout changes.
International software design checklist: 12 international usability, UI and human factors
1. Consistent terminology is used in messages.
2. UI language strings are reviewed for meaning and spelling to reduce user confusion and lessen translation errors.
3. Menus, dialogs and Web layouts can tolerate text expansion.
4. Strings are documented using comments to provide context for translators.
5. Users can type all supported characters into documents, dialog boxes and filenames.
6. Shortcut-key combinations are accessible on all international keyboards.
7. Program responds to changes in the user's choice of international settings (for example, UI language can be changed through a straightforward menu option).
8. Translated text meets requirements of end users who are native speakers.
9. Dialogs and forms are resized and UI text is aesthetically presented.
10. Translated dialogs, toolbars, status bars and menus fit on the screen at different resolutions.
11. User can successfully cut, paste, save and print text regardless of language.
12. Are there established test plans and tools for the source product, and can they be applied to localised versions?