I came up with a function that does the job for now :
/**
* Creates a translation of a post (to be used with WPML)
*
* @param int $post_id The ID of the post to be translated.
* @param string $post_type The post type of the post to be transaled (ie. 'post', 'page', 'custom type', etc.).
* @param string $lang The language of the translated post (ie 'fr', 'de', etc.).
*
* @return the translated post ID
* */
function mwm_wpml_translate_post( $post_id, $post_type, $lang ){
// Include WPML API
include_once( WP_PLUGIN_DIR . '/sitepress-multilingual-cms/inc/wpml-api.php' );
// Define title of translated post
$post_translated_title = get_post( $post_id )->post_title . ' (' . $lang . ')';
// Insert translated post
$post_translated_id = wp_insert_post( array( 'post_title' => $post_translated_title, 'post_type' => $post_type ) );
// Get trid of original post
$trid = wpml_get_content_trid( 'post_' . $post_type, $post_id );
// Get default language
$default_lang = wpml_get_default_language();
// Associate original post and translated post
global $wpdb;
$wpdb->update( $wpdb->prefix.'icl_translations', array( 'trid' => $trid, 'language_code' => $lang, 'source_language_code' => $default_lang ), array( 'element_id' => $post_translated_id ) );
// Return translated post ID
return $post_translated_id;
}
wpml_add_translatable_content(he creates translated attachments, which is basically te same a creating translated posts). I want to go with the API because I would like to generate translations from within the code, not the GUI. In the end I'm hoping to be able to use the code inside a plugin I'm working on. – mike23 Jun 16 '11 at 8:23