The portfolio frontend labels can be easily translated. Let's take the German translation as an example.

First, create the /contao/languages/de/default.php file on your server with the following content:


$GLOBALS['TL_LANG']['VEE']['portfolio.listEmpty'] = 'There are no portfolio items.';
$GLOBALS['TL_LANG']['VEE']['portfolio.details'] = 'Details';
$GLOBALS['TL_LANG']['VEE']['portfolio.url'] = 'Project URL';
$GLOBALS['TL_LANG']['VEE']['portfolio.fullImage'] = 'View full image';
$GLOBALS['TL_LANG']['VEE']['portfolio.all'] = 'All';

Inside that file, you can translate all portfolio labels used for the German language.

Afterward, you may need to rebuild the app cache using Contao Manager > Maintenance > Rebuild the production cache.