refactor(i18n): use dependency injection to pass i18n instance around