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>';
});