function bogo_is_localizable_post_type($post_type)
{
    return !empty($post_type) && in_array($post_type, bogo_localizable_post_types());
}
function bogo_rewrite_rules_array($rules)
{
    global $wp_rewrite;
    $post_types = array_diff((array) bogo_localizable_post_types(), get_post_types(array('_builtin' => true)));
    if (empty($post_types)) {
        return $rules;
    }
    $lang_regex = bogo_get_lang_regex();
    foreach ($post_types as $post_type) {
        if (!($post_type_obj = get_post_type_object($post_type))) {
            continue;
        }
        if (false === $post_type_obj->rewrite) {
            continue;
        }
        $permastruct = $wp_rewrite->get_extra_permastruct($post_type);
        if ($post_type_obj->rewrite['with_front']) {
            $permastruct = preg_replace('#^' . $wp_rewrite->front . '#', '/%lang%' . $wp_rewrite->front, $permastruct);
        } else {
            $permastruct = preg_replace('#^' . $wp_rewrite->root . '#', '/%lang%/' . $wp_rewrite->root, $permastruct);
        }
        $rules = array_merge(bogo_generate_rewrite_rules($permastruct, $post_type_obj->rewrite), $rules);
        if ($post_type_obj->has_archive) {
            if ($post_type_obj->has_archive === true) {
                $archive_slug = $post_type_obj->rewrite['slug'];
            } else {
                $archive_slug = $post_type_obj->has_archive;
            }
            if ($post_type_obj->rewrite['with_front']) {
                $archive_slug = substr($wp_rewrite->front, 1) . $archive_slug;
            } else {
                $archive_slug = $wp_rewrite->root . $archive_slug;
            }
            $extra_rules = array("{$lang_regex}/{$archive_slug}/?\$" => 'index.php?lang=$matches[1]&post_type=' . $post_type);
            $rules = $extra_rules + $rules;
            if ($post_type_obj->rewrite['feeds'] && $wp_rewrite->feeds) {
                $feeds = '(' . trim(implode('|', $wp_rewrite->feeds)) . ')';
                $extra_rules = array("{$lang_regex}/{$archive_slug}/feed/{$feeds}/?\$" => 'index.php?lang=$matches[1]&post_type=' . $post_type . '&feed=$matches[2]', "{$lang_regex}/{$archive_slug}/{$feeds}/?\$" => 'index.php?lang=$matches[1]&post_type=' . $post_type . '&feed=$matches[2]');
                $rules = $extra_rules + $rules;
            }
            if ($post_type_obj->rewrite['pages']) {
                $extra_rules = array("{$lang_regex}/{$archive_slug}/{$wp_rewrite->pagination_base}/([0-9]{1,})/?\$" => 'index.php?lang=$matches[1]&post_type=' . $post_type . '&paged=$matches[2]');
                $rules = $extra_rules + $rules;
            }
        }
        foreach (get_object_taxonomies($post_type) as $tax) {
            if (!($tax_obj = get_taxonomy($tax))) {
                continue;
            }
            if (false === $tax_obj->rewrite) {
                continue;
            }
            $permastruct = $wp_rewrite->get_extra_permastruct($tax);
            if ($tax_obj->rewrite['with_front']) {
                $permastruct = preg_replace('#^' . $wp_rewrite->front . '#', '/%lang%' . $wp_rewrite->front, $permastruct);
            } else {
                $permastruct = preg_replace('#^' . $wp_rewrite->root . '#', '/%lang%/' . $wp_rewrite->root, $permastruct);
            }
            $rules = array_merge(bogo_generate_rewrite_rules($permastruct, $tax_obj->rewrite), $rules);
        }
    }
    return $rules;
}