add language auto-detection