Het cookie is trouwens alleen geldig in het huidige pad, misschien moet je nog even de vierde parameter invullen, vooral als je site straks meer (sub)directories heeft.
Als je script dom opgezet is wel. Door output buffering te gebruiken kun je immers headers blijven sturen nadat je output hebt verzonden. Moet je uiteraard geen ob_flush() in te tussentijd gebruiken.
Ik heb tijden geleden ook zo lopen rommelen met meertalige websites en dacht toen iedere keer weer het wiel opnieuw te hebben uitgevonden. Er zijn hele simpele classes die al dat gedoe onnodig maken. Als ik tegenwoordig een meertalige site moet maken maak ik altijd gebruik van i18n: https://github.com/Philipp15b/php-i18n