I18n translations in custom controller

Can someone explain how to accomplish this? I believe it’s a simple and common task typically done in some backend. Is Strapi not equipped to handle this out of the box? I couldn’t find any information in the documentation.