背景
ソースコードをUTF-8で記述することが多くなりましたが、様々な事情でUTF-8を使えない場合もありますよね。
CrystalDiskMarkとCrystalDiskInfoの翻訳ファイル(*.lang)は、気軽に翻訳していただくためにシンプルなini形式を採用しています。しかし、ini形式を扱うAPI(GetPrivateProfileStringWなど)は、UTF-16 (LE, w/ BOM) にしか対応しておらず、Gitでは、UTF-16はバイナリ扱いとなるためそのままでは差分管理ができない問題があります。
対策
拡張子が .lang の場合、.gitattributesに以下のように追記すれば、Gitで差分管理ができるようになります!
*.lang working-tree-encoding=UTF-16LE-BOM eol=CRLF
判明したきっかけ
@kenichiuda さん、アドバイスありがとうございました!
リファレンス
https://git-scm.com/docs/gitattributes
サンプル
https://github.com/hiyohiyo/Priscilla/commit/e89364d7f899ec7f38873dcb38fc96a9d651dcaa