Post types translation

Use get_post_types( ['public' => TRUE ], 'objects' );. This will return the already translated post type labels and other information.

Example for tests:

add_action( 'wp_footer', function() {
    $post_types = get_post_types(
        [ 'public' => TRUE, '_builtin' => TRUE ],
        'objects' // complete information, not just the name
    );

    foreach ( $post_types as $slug => $arguments )
        print "$slug: {$arguments->labels->singular_name}<br>";

    print '<pre>' . print_r( $post_types, 1 ) . '</pre>';
});