refactor I18n and add instance methods