Для строк вы должны просто отделить свои строки от вашего кода (наличие XML / DLL, которая преобразует идентификаторы строк в реальные строки, является одним из способов). Однако вам необходимо убедиться, что вы поддерживаете двухбайтовые символы для некоторых языков (это актуально, если вы используете C / C ++).
Для ввода данных вам нужно иметь разные локали. В Java это относительно просто, и если вы используете C #, это, вероятно, также довольно просто. В C / C ++ я действительно не знаю. Основная идея заключается в том, что синтаксические анализаторы ввода должны отличаться в зависимости от локали, выбранной в то время. Поэтому каждое поле (текстовое поле, текстовое поле и т. Д.) Должно иметь абстрактный синтаксический анализатор, который затем реализуется другим классом в зависимости от локали (справа налево, двухбайтовый и т. Д.).
Проверьте реализацию Java для деталей о том, как они это сделали. Это довольно функционально.