A lot of your problems can be solved if you use MySQL to manage the data. Version 4.1 and higher allows you to specify an encoding and a collation for each table/field. The collation deals with the order of data (i.e. which letters come first), and the encoding deals with the actual characters that can be supported.
Another issue you'll be facing is that non latin languages (e.g. Chinese) require the use of 2 bytes to store each character. Unicode (UTF-8) is probably the best encoding to work with but PHP doesn't natively support multi-byte encodings. You can still pass multi-byte encoded strings around in variables and print them to the screen, and everything will work nicely, however, if you try to perform a function like substr() on such a string, PHP will give some unexpected results.
For example, suppose the variable $str contains a Chinese string.
Then substr($str,0,1) will return only the first byte of that string (which amounts to only half of the first character), so the results would be bizarre.
There is a solution. You need to have either the iconv or mbstring extensions installed in PHP, which come with versions of the PHP string functions that work on multi-byte strings.
In short, you've opened a can of worms as soon as you want to get into multi-byte languages like Chinese... but with some careful design you can still get what you want.
The standard for sites that will work in multiple languages is called i18n . You can search on google and you'll find some information.
I have blogged about some of the issues with multilanguage sites at
http://www.phpi18n.com/.
Best regards
steve