Después de dar muchas vueltas y mirar todos los plugins de traducción, habidos y por haber, para los Custom Post Types y Taxonomías creados con la herramienta CPT UI, he llegado a la conclusión de que la manera más limpia de hacerlo es creando un plugin propio.

Todo los plugins que he probado son un poco liosos o añaden cosas incontrolables en la base de datos para este tipo de Custom Post Types.

Vamos a explicar paso a paso como crear un plugin para traducir CPT y taxonomías Custom Post Types UI en Wordpress, sin ayuda de plugins de terceros.

Primero generamos el contenido con el plugin Custom Post Types UI (doy por hecho que ya lo sabéis utilizar),

Una vez hecho esto, vamos a instalar un plugin llamado Pluginception, este nos permite crear plugins de manera muy sencilla. Una vez instalado veréis que en Plugins aparece otra opción llamada “Crear nuevo plugin”. Sólo poniendo el nombre y la descripción será suficiente por el momento. En nuestro ejemplo lo llamaremos “mi-plugin”

Ahora volvemos a la pestaña “CPT UI” de nuestro panel de control y en “Herramientas” y seleccionamos la pestaña “Obtener el código”. Hemos de copiar dos cosas, el primer campo “Todos los tipos de contenido de Custom Post Type UI” y el campo “Todas las taxonomías de Custom Post Type UI”. Esto lo tenemos que pegar en nuestro nuevo plugin creado, para ello vamos a “Plugins / Editor” y en el desplegable “Elige el plugin a seleccionar” escojemos el plugin que acabamos de crear (mi-plugin) y pegamos el código. Ojo! en este paso a veces da algún error por que falta algunas comillas en el código, pero se ve fácilmente (en mi caso falta unas comillas tras “publicly_queryable”). También deberemos reemplazar el nombre del text domain que le ha dado CPT UI, suele ser el del tema, por nuestro text domain: en nuestro caso, por ejemplo: name" => __( "Ofertas", "mi-plugin" ), "singular_name" => __( "Oferta", "mi-plugin" ), en todas las líneas.

Además de esto vamos a añadir algunas cosas al principio del archivo del plugin para que sea traducible.Por defecto vemos

/*
Plugin Name: mi-plugin
Plugin URI:
Description: Plugin para crear los CPT y taxonomias (recordar activar y desactivar al usar CPT UI)
Version:
Author:
Author URI:
License:
License URI:
*/

Y tiene que quedar así :
/*
Plugin Name: mi-plugin
Plugin URI:
Description: Plugin para crear los CPT y taxonomias (recordar activar y desactivar al usar CPT UI)
Version:
Author:
Author URI:
Text Domain: mi-plugin
Domain Path: /languages
License:
License URI:
*/

Si os fijáis hemos añadido:
Text Domain: mi-plugin
Domain Path: /languages

De esta manera  le estamos diciendo que el plugin tiene una “text domain” y que se encuentra el la carpeta “languages”, podríamos hacerlo en la raíz, pero es mejor ser ordenado ;).
Además, justo debajo, añadiremos el siguiente código para que cargue el text domain:
/* Load plugin textdomain.*/
function myplugin_load_textdomain() {
load_plugin_textdomain( 'mi-plugin', false, basename( dirname( __FILE__ ) ) . '/languages' );
}
add_action( 'init', 'myplugin_load_textdomain' );

Ahora vamos a crear el temido archivo “.pot” para generar las traducciones, para ello recomiendo bajar el archivo Blank-WordPress-Pot, que nos permite de una manera sencilla recuperar  las cadenas para traducir. Descomprimimos el archivo y renombramos el archivo “Blank-WordPress.pot” como “mi-plugin-XX_xx.pot”.

Descargamos el plugin que acabamos de crear “mi-plugin”, y dentro creamos una carpeta llamada “languages” donde colocaremos el archivo “mi-plugin-XX_xx.pot”.

Abrimos el programa Poedit, y vamos a Abrir, y abrimos el archivo “mi-plugin-XX_xx.pot”, y seleccionamos la opción “Extraer desde código fuente”. En “Rutas de fuentes” le daremos al botón “+” y “Añadir archivos” y ahora seleccionamos el archivo “mi-plugin.php” (podemos quitar la ruta “.”), seleccionamos “Abrir” y “Aceptar”, ya aparecerán las cadenas traducibles en Poedit. Ahora en la parte inferior apretamos el botón “Crear traducción nueva”, seleccionamos el idioma. Ahora ya podemos traducir las cadenas de los Custom Post Types, una vez traducidas guardamos el archivo .po dentro de la carpeta “Languages”, y la subimos dentro de la de nuestro plugin, y listo!!!.

Recordar que para que no se solape con CPT UI, desactivamos CPT UI, y si queremos añadir más cosas desactivamos nuestro plugin y volvemos a activar CPT UI, repitiendo los primeros pasos.

Espero que os sirva, después de mucho mirar diferentes opciones y poca documentación sobre el tema.