web-dev-qa-db-ja.com

カスタム投稿タイプと分類法のラベルのローカライゼーションが機能しない

ネットで数時間検索した後、私はここに私の問題を尋ねることにしました。私はマルチサイト環境にいて、このカスタム投稿タイプコードがあります。

$products_labels = array(
    'name'                => _x( 'Prodotti', 'General post type name', 'textdomain' ),
    'singular_name'       => _x( 'Prodotto', 'General post type name', 'textdomain' ),
    'menu_name'           => _x( 'Prodotti', 'General post type menu label', 'textdomain' ),
    'parent_item_colon'   => __( 'Genitore elemento:', 'textdomain' ),
    'all_items'           => __( 'Tutti gli elementi', 'textdomain' ),
    'view_item'           => __( 'Vedi', 'textdomain' ),
    'add_new_item'        => __( 'Aggiungi nuovo elemento', 'textdomain' ),
    'add_new'             => __( 'Aggiungi nuovo', 'textdomain' ),
    'edit_item'           => __( 'Modifica', 'textdomain' ),
    'update_item'         => __( 'Aggiorna', 'textdomain' ),
    'search_items'        => __( 'Cerca', 'textdomain' ),
    'not_found'           => __( 'Non trovato', 'textdomain' ),
    'not_found_in_trash'  => __( 'Non trovato nel cestino', 'textdomain' ),
);
$products_args = array(
    'label'               => __( 'Prodotti', 'textdomain' ),
    'description'         => __( 'Prodotti', 'textdomain' ),
    'labels'              => $products_labels,
    'supports'            => array( 'title', 'thumbnail', 'editor', 'excerpt', 'revisions', 'page-attributes' ),
    'taxonomies'          => array( 'product_category' ),
    'hierarchical'        => false,
    'public'              => true,
    'show_ui'             => true,
    'show_in_menu'        => true,
    'show_in_nav_menus'   => true,
    'show_in_admin_bar'   => true,
    'menu_position'       => 5,
    'menu_icon'           => '',
    'can_export'          => true,
    'has_archive'         => true,
    'exclude_from_search' => false,
    'publicly_queryable'  => true,
    'capability_type'     => 'page',
);

私のサイトの1つはドイツ語であり、バックオフィスもドイツ語で設定されています。すべての文字列は正しく翻訳され(フロントエンドは問題なく動作します)、de_DE.moファイルはうまくロードされていますが、管理の観点から見たラベルはローカライズされていないので理解できません

これはロードテキストドメインです

load_theme_textdomain( 'textdomain', THEMEPATH . '/languages' );

plsは添付画像を見つける enter image description here

あなたが私を助けることができることを望みます:(

更新:

Functions.phpファイルに書かれたすべての文字列が翻訳されていないことに気づきました。それらを翻訳する唯一の方法はinitアクションで呼ばれる新しい関数に文字列を挿入することです。

例:

翻訳されていません

$str = __('My string','textdomain');

翻訳:

function my_function_name()
{
    $str = __('My string','textdomain');
    echo $str;
}

add_action('init','my_function_name', 0);

アップデート2:

解決しました。あなたはload_theme_textdomainをアクションによってではなく直接ファイルfunctions.phpの最初の行として書かれてロードする必要があります。今私のカスタム投稿タイプラベルはついに翻訳されます:)

2
user2660802

解決しました。あなたはload_theme_textdomainをアクションによってではなく直接ファイルfunctions.phpの最初の行として書かれてロードする必要があります。今私のカスタム投稿タイプラベルはついに翻訳されます:)

1
user2660802

のドキュメントによればafter_setup_themeは翻訳をロードするためのフックとして使われるべきです。

add_action( 'after_setup_theme', 'my_theme_setup' );
function my_theme_setup(){
    load_theme_textdomain( 'my-theme', get_template_directory() . '/languages' );
}
0
Adrian