%s
', 618 | sprintf( 619 | _n( '%d téléchargement', '%d téléchargements', $release_data->downloads, 'gutenblocks' ), 620 | number_format_i18n( $release_data->downloads ) 621 | ) 622 | ); 623 | } 624 | 625 | $logo = sprintf( '', '
' ), '', wpautop( trim( $a['notes'], "\n" ) ) ); 632 | $count = sprintf( '%s
', wp_kses( $notes, array( 'br' => true ) ) ) ."\n" . $count; 633 | } 634 | 635 | $output = sprintf( '', 636 | $container_class, 637 | esc_url( $download_url ), 638 | $logo, 639 | $label, 640 | $count, 641 | esc_url( $release_url ), 642 | esc_html__( 'Afficher la page GitHub de la version', 'gutenblocks' ), 643 | gutenblocks_github_release_icon( 'download_icon' ), 644 | sprintf( esc_html__( 'Télécharger la version %s', 'gutenblocks' ), $tag ) 645 | ); 646 | 647 | if ( is_locale_switched() ) { 648 | restore_current_locale(); 649 | } 650 | 651 | return $output; 652 | } 653 | 654 | /** 655 | * Loads translation. 656 | * 657 | * @since 1.0.0 658 | */ 659 | function gutenblocks_load_textdomain() { 660 | $g = gutenblocks(); 661 | 662 | load_plugin_textdomain( $g->domain, false, trailingslashit( basename( $g->dir ) ) . 'languages' ); 663 | } 664 | add_action( 'plugins_loaded', 'gutenblocks_load_textdomain', 9 ); 665 | 666 | /** 667 | * Add rewrite rules for Post and Page translations. 668 | * 669 | * @since 1.2.0 670 | */ 671 | function gutenblocks_translate_rewrite_rules() { 672 | global $wp_rewrite; 673 | 674 | add_rewrite_tag( 675 | '%translate%', 676 | '([^/]+)' 677 | ); 678 | 679 | $patterns = array( 680 | '/%year%/%monthnum%' => array( 681 | 'pattern' => '([0-9]{4})/([0-9]{1,2})/', 682 | 'query' => '?year=$matches[1]&monthnum=$matches[2]&name=$matches[3]&translate=$matches[4]', 683 | ), 684 | '/%year%/%monthnum%/%day%' => array( 685 | 'pattern' => '([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/', 686 | 'query' => '?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&translate=$matches[5]', 687 | ), 688 | '/archives/%post_id%' => array( 689 | 'pattern' => 'archives/', 690 | 'query' => '?p=$matches[1]&translate=$matches[2]', 691 | ), 692 | ); 693 | 694 | $permalink_structure = rtrim( str_replace( '%postname%/', '', $wp_rewrite->permalink_structure ), '/' ); 695 | if ( isset( $patterns[ $permalink_structure ] ) ) { 696 | $post_base = $patterns[ $permalink_structure ]['pattern'] . '([^/]+)/'; 697 | $post_query = $patterns[ $permalink_structure ]['query']; 698 | } else { 699 | $post_base = '(.?.+?)/'; 700 | $post_query = '?name=$matches[1]&translate=$matches[2]'; 701 | } 702 | 703 | $rewrite_rules = array( 704 | // Page 705 | '([^/]+)/translate/?([^/]+)/?$' => '?pagename=$matches[1]&translate=$matches[2]', 706 | '([^/]+)/translate/?([^/]+)/embed/?$' => '?pagename=$matches[1]&translate=$matches[2]&embed=true', 707 | // Post 708 | $post_base . 'translate/?([^/]+)/?$' => $post_query, 709 | $post_base . 'translate/?([^/]+)/embed/?$' => $post_query . '&embed=true', 710 | ); 711 | 712 | foreach ( $rewrite_rules as $regex => $rewrite_rule ) { 713 | add_rewrite_rule( 714 | $regex, 715 | $wp_rewrite->index . $rewrite_rule, 716 | 'top' 717 | ); 718 | } 719 | } 720 | add_action( 'init', 'gutenblocks_translate_rewrite_rules' ); 721 | 722 | /** 723 | * Upgrade the DB Version. 724 | * 725 | * @since 1.4.0 726 | */ 727 | function gutenblocks_upgrade_db_version() { 728 | update_option( 'gutenblocks_version', gutenblocks_version() ); 729 | 730 | return 1; 731 | } 732 | 733 | /** 734 | * Perform some upgrade tasks if needed. 735 | * 736 | * @since 1.2.0 737 | */ 738 | function gutenblocks_upgrade() { 739 | $db_version = gutenblocks_db_version(); 740 | $version = gutenblocks_version(); 741 | 742 | if ( ! version_compare( $db_version, $version, '<' ) ) { 743 | return; 744 | } 745 | 746 | if ( (float) $db_version < 1.2 || (float) $db_version < 1.5 ) { 747 | delete_option( 'rewrite_rules' ); 748 | flush_rewrite_rules( false ); 749 | } 750 | 751 | if ( (float) $db_version < 1.4 ) { 752 | return; 753 | } 754 | 755 | // Update version. 756 | gutenblocks_upgrade_db_version(); 757 | } 758 | add_action( 'admin_init', 'gutenblocks_upgrade', 100 ); 759 | 760 | /** 761 | * Build a page or post link to its translated version. 762 | * 763 | * @since 1.2.0 764 | * 765 | * @param string $link The permalink of the Post or the Page. 766 | * @param string $language The locale of the translated version. 767 | * @return string The link to display the translated version. 768 | */ 769 | function gutenblocks_translate_post_link( $link = '', $language = '' ) { 770 | if ( ! $language ) { 771 | $language = strtolower( str_replace( '_', '-', get_locale() ) ); 772 | } 773 | 774 | if ( gutenblocks_are_urls_pretty() ) { 775 | $link = trailingslashit( $link ) . 'translate/' . $language . '/'; 776 | } else { 777 | $link = add_query_arg( 'translate', $language, $link ); 778 | } 779 | 780 | return $link; 781 | } 782 | 783 | /** 784 | * Build the language switcher on singular templates. 785 | * 786 | * @since 1.2.0 787 | * 788 | * @param string $current The current locale to use for the blocks. 789 | * @return string HTML Output. 790 | */ 791 | function gutenblocks_get_language_switcher( $current = '' ) { 792 | $locales = gutenblocks_get_languages(); 793 | $site_locale = get_locale(); 794 | $include_switcher = wp_using_themes() && $locales && is_singular(); 795 | 796 | if ( ! $include_switcher ) { 797 | return; 798 | } 799 | 800 | if ( ! $current ) { 801 | $current = $site_locale; 802 | } 803 | 804 | $switcher = '%s
195 | 196 | 197 | 198 | 199 |
200 | 201 | 202 |203 | 204 |
205 | 206 | 207 | 208 |
306 | %2$s', esc_url( gutenblocks_get_upgrade_url() ), esc_html__( 'mise à niveau', 'gutenblocks' ) ) 308 | ); ?> 309 |
310 |