I've read Joel's article on Unicode and I feel that I have at least a basic grasp of internationalization from a character set perspective. In addition to reading this question, I've also done some of my own research on internationalization in regards to design considerations, but I can't help but suspect that there is a lot more out there that I just don't know or don't know to ask.
Some of the things I've learned:
- Some languages read right-to-left instead of left-to-right.
- Calendar, dates, times, currency, and numbers are displayed differently from language to language.
- Design should be flexible enough to accommodate a lot more text because some languages are far more verbose than others.
- Don't take icons or colors for granted when it comes to their semantic meaning as this can vary from culture to culture.
- Geographical nomenclature varies from language to language.
Where I'm at:
- My design is flexible enough to accommodate a lot more text.
- I automatically translate each string, including error messages and help dialogs.
- I haven't come to a point yet where I've needed to display units of time, currency or numbers, but I'll be there shortly and will need to develop a solution.
- I'm using the UTF-8 character set across the board.
- My menus and various lists in the application are sorted alphabetically for each language for easier reading.
- I have a tag parser that extracts tags by filtering out stop words. The stop words list is language specific and can be swapped out.
What I'd like to know more about:
- I'm developing a downloadable PHP web application, so any specific advice in regards to PHP would be greatly appreciated. I've developed my own framework and am not interested in using other frameworks at this time.
- I know very little about non-western languages. Are there specific considerations that need to be taken into account that I haven't mentioned above? Also, how do PHP's array sorting functions handle non-western characters?
- Are there any specific gotchas that you've experienced in practice? I'm looking in terms of both the GUI and the application code itself.
- Any specific advice for working with date and time displays? Is there a breakdown according to region or language?
- I've seen a lot of projects and sites let their communities provide translation for their applications and content. Do you recommend this and what are some good strategies for ensuring that you have a good translation?
- This question is basically the extent of what I know about internationalization. What don't I know that I don't know that I should look into further?
Edit: I added the bounty because I would like to have more real-world examples from experience.