Localizing a game correctly is damn hard.
You can browse the internet, read blog posts, or StackOverflow answers; you can learn the traditional i18n frameworks such as gettext; read Wikipedia pages on internationaliztaion and game localization; consult the excellent Microsoft language guide – but localizing games is actually harder than that. In fact, with games it's probably harder than with any other application or web-interface. This because the games are so much more dynamic, more vibrant, more alive (well, at least good games are).
More to the point, the following steps will probably need to be taken:
Establish the boundaries.
You want to make an all-important decision for which languages you want to support early. The wider your choice, the more assumptions about how a language can behave will be broken. Often these assumptions are so deeply imprinted in our brains, that we cannot even imagine that they may be incorrect without someone pointing them out. Which brings us to the next point:
Find the experts for each language you want to support.
Expert means someone who has sufficient analytic skill and knowledge of the language, that he would be able to point you which assumptions an English speaker does that do not hold in his own language. Then you'll need to come up with a strategy how to work around those assumptions.
As an example: in Western languages we justify text in a paragraph by inserting extra space between words. In Arabic language the text is justified by inserting kashida characters inside the words. It might look like this.
Another example: in Russian, there are 2 plural forms for the majority of words. Thus for example you would translate "1 coin" / "3 coins" / "5 coins" as "1 монета", "3 монеты", but "5 монет" . The actual procedure to decide the correct plural form looks like this:
function LocalRU::GetPlural(n, form0, form1, form2) {
return (n%10) == 0 || (n%100) >= 5 && (n%100) <= 20? form0 :
(n%10) == 1? form1 :
(n%10) <= 4? form2 : form0;
}
Create a context-aware translation module.
You're probably aware that translation always depends on the context. And you know that the context within a game changes all the time. What happens if we put these two statements together? In general your translations should be as dynamic as your game.
For example, a simple phrase "I agree" translates into Russian as one of "Я согласен" / "Я согласна" / "Я согласно", depending on the gender of the speaker (male / female / transgender|queer|questioning). If this is one of your dialog lines, then the language module will have to pick one of the possible translations at run-time depending on the gender of your character (assuming you offer your players such a choice).
The same phrase when translated to Japanese will again have different translations, depending on the level of formality of the relationship between the speaker and the listener. Thus, if you introduce in your game the idea of reputation, or friendship, or varying level of superiority (say, your character may evolve from Rookie to General), then you'll have to take this into account when forming the translation. (Actually, this is not Japanese-specific. Even in English, in the army you never say "Sir, yes, sir!" to someone below you in rank.)
Have a way to jump into the context.
Your translators should have the ability to see the context where a particular phrase appears. Sometimes the context is obvious, sometimes you have to see / hear / experience it yourself in order to translate something correctly.
Even such simple sentence as "This book is blue." cannot be unambiguously translated without me looking at the book and seeing which particular shade of blue it is.
Avoid word play, puns, and other language-specific elements.
Or maybe don't avoid, but at least have a strategy in mind for what to do when the wordplay cannot be translated. Because probably it won't.
At the very least you shouldn't create any quests / puzzles / game objects which rely on certain words having double meaning, or being similar to some other words. Because once translated you'll break your own game. (For example, in an old game Fallout2 the main quest was to find the object called GECK; there also were numerous "Gecko" monsters (mutated lizards) around the game; naturally they created multiple references and quests around this similarity of names, which made good translations extremely hard).
Cheer up!
Localizing a game is hard. But it's hard for everyone. If you make an effort and do it correctly, it won't go unnoticed by game critics in your target country. A game with good translation will stand out, and earn higher profits. After all, text is just as important for creating atmosphere in the game, as the graphics (this is why old text-based RPGs were so immersive).