C言語でsprintfを利用したコードの多言語化の方法について

実現したいこと

コードの中で、ログやユーザーへのメッセージが表示される部分にsprintfを使用しています。例えば、以下のような感じです。
sprintf(pWstr, L"%sは%sに登録できません。[%d]", strFoo1,strFoo2,errorcode);

これをなるべくいじらずに日本語と英語の両方に対応できればと考えております。

試したこと

一番やりたくないのが、コード上にif文などで分けることです。
if(isEnglish==1){
sprintf(pWstr, L"Can't regist %s to %s [%d]", strFoo2,strFoo1,errorcode);
}else{
sprintf(pWstr, L"%sは%sに登録できません。[%d]", strFoo1,strFoo2,errorcode);
}

また、sprintfの第二引数を英語と日本語で定数文字列として持つのが一般的だと思うのですが、上記のように英語と日本語で第三引数、第四引数の順番が逆になることもあるので困っております。

さらにsprintfは可変長引数を持っているので、文字列によって引数の型や数が変わるのも困っております。

補足情報(FW/ツールのバージョンなど)

Windows 10
Visual Studio 2017
C/C++

コメントを投稿

0 コメント