Internationalization (I18N) is a process of preparing program for use in various parts of Earth - to make it independent from country, used currency or language.
C++ has already a solution for that:
<locale> library (locale & facet classes), but it cannot solve all existing problems.
First thing you will be searching for during the process is text translation - you can use GNU gettext for this. Other issues are character code page conversion or Unicode handling.
Below you can find resources solving some of the most important issues.
- GNU gettext - for text translation
- ICU - mature I18N library for code page issues, Unicode handling and formatting
- tutorial: Internationalize and Localize Your C/C++ Code with ICU - Victor Volkman, 2006
- GNU FriBidi - implementation of the Unicode Bidirectional Algorithm
- Qt Linguist - tool for semi-automatic translation, part of Qt package
- GNU libiconv - character set conversion
- locale - cplusplus.com
- Internationalization Using Standard C++ - mostly about locale support
- wxWidgets: Internationalization - about wxLocale, _() macro and how to use gettext
- "Standard C++ IOStreams and Locales: Advanced Programmer's Guide and Reference" - Angelika Langer / Klaus Kreft, 2000
- "The C++ Programming Language, 4th Edition" - Bjarne Stroustrup, 2013 (see chapter 39: "Locales")