Something that might not be clear is that only the date format is not changed until the end of the batch. What the DATENAME returns is directly affected.
DECLARE @RunDate DATE = '10/02/17'
SET LANGUAGE Italian
SELECT DATENAME(dd, @RunDate)
SELECT DATENAME(MONTH, @RunDate)
SET LANGUAGE US_English
SELECT DATENAME(dd, @RunDate)
SELECT DATENAME(MONTH, @RunDate)
For me that feels a bit inconsistent.