While this is very flexible it seems much heavier than just `return this.locale || options.hash.locale || ctx.locale`.