Forums / General / Add Content in several languages

"Please Note:
  • At the specific request of Ibexa we are changing this projects name to "Exponential" or "Exponential (CMS)" effective as of August, 11th 2025.
  • This project is not associated with the original eZ Publish software or its original developer, eZ Systems or Ibexa".

Add Content in several languages

Author Message

Carlos Revillo

Friday 16 June 2006 1:55:00 am

Hi. I've developed an extension to insert content in Ez Content Tree. In my site i have two siteaccess, spanish and english.

I want to add content in these two languages from my php script. Right now, i can add spanish content, but i don't know how to add english content...

For adding content, i'm using somethin like

$user_id = 14;
$parentNodeID=365;
$ClassID = 60;
$class =& eZContentClass::fetch( $ClassID );
$contentObject =& $class->instantiate( $userID, 1 );
$contentObject->setAttribute( 'name', "Objeto ");
$contentObjectID = $contentObject->attribute( 'id' );

$nodeAssignment =& eZNodeAssignment::create( array(
				'contentobject_id' => $contentObject->attribute( 'id' ),
				'contentobject_version' => $contentObject->attribute( 'current_version' ),
				'parent_node' => $parentNodeID,
				'sort_field' => 8,
				'sort_order' => 1,
				'is_main' => 1
				)
			);
$nodeAssignment->store();

$version =& $contentObject->version( 1 );
$version->setAttribute( 'status', EZ_VERSION_STATUS_DRAFT );
$version->store();

$contentObjectAttributes =& $version->contentObjectAttributes();
$contentObjectAttributes[0]->setAttribute( 'data_text', $codigo);
$contentObjectAttributes[0]->store();
$contentObjectAttributes[1]->setAttribute( 'data_text', $http->sessionVariable("p_nombre"));
$contentObject->store();

$operationResult = eZOperationHandler::execute( 'content', 'publish', array( 'object_id' => $contentObjectID,
			'version' => 1 ) );


But, as i said before, i only can add spanish version of that content. How can this script be modified so i can add english content two? thanks.

Kristof Coomans

Friday 16 June 2006 1:58:35 am

Hi Carlos

Which version of Exponential are you using? 3.8?

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Carlos Revillo

Friday 16 June 2006 2:03:48 am

Yes. 3.8.

Kristof Coomans

Saturday 17 June 2006 1:55:29 am

After publishing the Spanish version, you can create a new version with an English translation:

$version = $obj->createNewVersionIn( $selectedEditLanguage );
$version->setAttribute( 'status', EZ_VERSION_STATUS_DRAFT );

$version->store();

$selectedEditLanguage is in your case "eng-GB".

Now fill the attributes of this new version and publish it.

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Carlos Revillo

Saturday 17 June 2006 10:26:00 am

Great!. Thanks so much!.

Martin Jerie

Friday 27 October 2006 2:10:01 am

Please can you show me rest of the code for publish translation

Because when i use code from Carlos example:

$operationResult = eZOperationHandler::execute( 'content', 'publish', array( 'object_id' => $contentObjectID, 'version' => 1 ) );

translation is only draft - how to publish it?

Martin

Martin Jerie

Friday 27 October 2006 5:23:43 am

I found it
I have to change 'version' => 1 to 'version' => 2

Kristof Coomans

Friday 27 October 2006 5:48:01 am

To be correct in any case, use <i>$version->attribute( 'version' )</i>

Cheers

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Tuesday 23 October 2007 7:38:29 pm

Hi.
I use V 3.10 and "createNewVersionIn" works fine for one additional language.
If I use main language and 2 additional languages ($a and $b):

// part A
$version = $obj->createNewVersionIn( $a );
$version->setAttribute( 'status', EZ_VERSION_STATUS_DRAFT );
$version->store();
...
// part B
$version = $obj->createNewVersionIn( $b );
$version->setAttribute( 'status', EZ_VERSION_STATUS_DRAFT );
$version->store();

part B always override part A.