As funções take() e limit() não funcionarão com carregamento antecipado se você recuperar o modelo pai mais de um usando get().
Então você tem que fazer de outra maneira,
$categories = Category::with('contents')->get();
Após recuperar
$categories
, você pode fazer o loop foreach como abaixo, $contents = [];
foreach($categories as $category){
$category->limitedContents = $category->contents()->with('languages')->limit(4);
}
E ao fazer isso você terá 4 conteúdos por categoria em todas as categorias com
limitedContents
.