The current logic in CategoryContentWrapper tries to find a ProductCategoryContent related Content object for the session locale or configured fallback locale. This could make sense, if there are multiple ProductCategoryContent entries of same type but different languages. However the standard model to define alternate locale contents is to have ONE ProductCategoryContent and different locale contents assigned to it via a ContentAssocs. This is exactly what the ContentWorker.renderContentAsText logic resolves for the caller putting in the parent contentId, as it it used in the ProductContentWrapper and others.
Therefore the content persistet correctly as alternate locale content is currently not accessible via CategoryContentWrapper!
FIX: Remove wrong locale/fallbackLocale logic which ignores the correct alternate locale content model to let CategoryContentWorker work like ProductContentWrapper with alternate locale content logic in ContentWorker.