We can insert a new post via wp_insert_post(). We can couple that with, is_404() to know if the current page we're on is a 404 page.
Then we need to study the request to know if it match our criteria. We can fetch the request via $request = $_SERVER['REQUEST_URI'];. We need to isolate the page, which should be the last request /1197-pomoc-pytania-problemy/, and the category /forum/, which is the prior to last one.
We can redirect the user to the post via wp_safe_redirect() and capturing the post ID upon publishing.
Tested and working.
function endsWith( $needle, $haystack ) { //... @credit https://stackoverflow.com/a/834355/3645650
    $length = strlen( $needle );
    if( ! $length ) {
        return true;
    };
    return substr( $haystack, -$length ) === $needle;
};
add_action( 'wp', 'insert_new_post_on_404_request' );
if ( ! function_exists( 'insert_new_post_on_404_request' ) ) {
    function insert_new_post_on_404_request() {
        if ( is_404() ) {
            $request = $_SERVER['REQUEST_URI'];
            if ( strpos( $request, '?' ) !== false ) {
                $cleaner = substr( $request, 0, strpos( $request, '?' ) );
                $request = $cleaner;
            };
            if ( endsWith( '/', $request ) ) {
                $worker = explode( '/', substr( $request, 1, -1 ) );
            } else {
                $worker = explode( '/', substr( $request, 1 ) );
            };
            $current_category = $worker[count( $worker )-2];
            $current_title = urldecode( str_replace( '-', ' ', array_pop( $worker ) ) );  
            if ( ( strpos( $request, '/topic/' ) !== false )
            || ( strpos( $request, '/profile/' ) !== false )
            || ( strpos( $request, '/forum/' ) !== false ) ) {
                if ( ! get_page_by_title( $current_title ) ) {
                    $cat_id = get_category_by_slug( $current_category )->term_id;
                    $postarr = array(
                        'post_title' => $current_title,
                        'post_status' => 'publish',
                        'post_type' => 'post',
                        'post_category' => array(
                            $cat_id,
                        ),
                    );
    
                    $post_id = wp_insert_post( $postarr );
                    wp_safe_redirect( get_post_permalink( $post_id ) );
                    exit;
    
                };
            } else {
                return;
            }; 
        };
    };
};
Some things to take into account:
- Category terms (topic, forum and profile) need to exist prior to initialize the function for the first time.
- The function will only insert posts from a fail request, on a 404.phppage, if 1 of those 3 category a present in the url.
- If a request is made for a child page, it will likely create a post not attach to any category. the function can't understand that it is supposed to be a child page, so I don't see any way to handle those type of request.
Additionally, translation should be handle on it's own. either through a plugin or else. You can also rewrite each category name and slug. This is based on your theme initial development; Not much we can do here.