Forums / Suggestions / Content translation features

Content translation features

Author Message

Bård Farstad

Thursday 24 July 2003 3:02:52 am

We need to add some new features to the translation system in eZ publish. There has been some similar discussion about this earlier.

1. Introduce main translation for the system. This will be the defined fallback translation.

2. Class level translation selection. This means that you can select which attributes are translateable with a checkbox. When you edit the object in a language other than main you will only get the fields you should translate in edit mode. The rest of the attributes will appear in read only, since you will not be able to store content for the specific translation.

3. Optional translation attributes. Same as 2, but you you can choose to translate an attribute on object level. E.g. you have an image which sometimes needs to be translated, but not always.

4. Intra datatype translations. E.g. you have an XML field where you have a section which is common for all translations, we need a way of referencing content from the main translation so you only need to translate the text.

Any input on functionality or how to implement this?

Atleast 1 and 2 will be part of 3.2 and the fundation for 3 and 4 will be made.

-bård

Documentation: http://ez.no/doc

Tony Wood

Thursday 24 July 2003 3:13:32 am

For translation is there any way of enhancing the default workflow. I am guessing that most translation jobs are handled by third parties, not by the developer, so a default specific translation workflow would be useful. This would include notifications to the third party translator that a page is ready for translation and send an email with the text or an email informing them that it needs to be done.
Also, i know this is a big ask, but could "translation memory" be introduced? This would auto-translate phrases that have already been translated. I know these do not always work due to context, but it would be a start.

tony

Tony Wood : twitter.com/tonywood
Vision with Technology
Experts in eZ Publish consulting & development

Power to the Editor!

Free eZ Training : http://www.VisionWT.com/training
eZ Future Podcast : http://www.VisionWT.com/eZ-Future

Bård Farstad

Thursday 24 July 2003 3:46:25 am

Tony, we will need to enhance the translation function in regards to workflows I agree on that. But it will only use the already existing translation features.

You mention developers, normally developers don't write the content do they? This is normally done by the end user, but it is often a different person that translates that's true.

We should also have a simple way to send content to another user. E.g. I write an article and send it to another user to get feedback and mabye for him to translate the content. This could be handled by the workflow system though.

As for translation memory, I really don't see how we can implement this in a web gui. Since this should be very dynamic. Any suggestions?

--bård

Documentation: http://ez.no/doc

Tony Wood

Thursday 24 July 2003 4:37:52 am

>>developers
True, users normally enter content, but for a new system, customers want the languages completed before they take delivery, hence the developer needs to organise this.

>>Translation memory
I've seen this refered to as "page memory". Although text is dynamic certain phrases re-appear, such as 'email' which the French no need as 'courier electronique' since Monday. A page memory system would see this and translate it before the page is rendered for the translator. If this just handles 5% of the words/phrases in a translation it would reduce translation costs quite a bit.

Tony Wood : twitter.com/tonywood
Vision with Technology
Experts in eZ Publish consulting & development

Power to the Editor!

Free eZ Training : http://www.VisionWT.com/training
eZ Future Podcast : http://www.VisionWT.com/eZ-Future

liu spider

Thursday 24 July 2003 5:34:25 am

>>Translation Memory
Tony's proposal is a good idea.

In addition, I think initial memory could be extracted from current using translation's ts.

All translation are based on English, so eng-GB must be a mid-bridge between any other two different languages.

http://liucougar.scim-im.org
SCIM Input Method Platform
http://scim.sf.net
SJSD Online Editor
http://sf.net/projects/sjsd

Bård Farstad

Thursday 24 July 2003 6:29:14 am

Ok, I see. Just come up with a "suggested translation" instead of a copy of original. I thought about a smarter gui where you clicked on a sentence and e.g. got a list of suggested translations. That's not simple to do on web ( of course you could use javascript and friends, but that's no good for eZ publish standard ).

Approaches for this:
1: Create a "smart" translation system, based on dictionary and gramatical rules. This one is very hard to get even partly decent.

2: Translate known strings with search and replace. This one is simple to implement, but it's a big job to update the translation file(s). How could we implement automatic/semi automatic updates of the translation memory?

3: Use 3rd party tool/webservice. Simple to implement and result will be good. But this will most likely need a commercial service from 3rd pary.

Suggestions?

--bård

Documentation: http://ez.no/doc

Tony Wood

Thursday 24 July 2003 6:37:20 am

This is tough stuff, i agree. I would use a third party tool that sat on the server and use an enhancement to the online editor to display the content.

Small steps first...

When a new translation page is created, it scans the database for previous phrases and then displays those as options. I think we need to use phrases and not words as words out of contexct are useless.
We would need to store a marker at the point of translation showing the original translated text and the translated text. So this might be a manual task for the translator. There might be some OSS projects that already do this that you could connect into.

Tony Wood : twitter.com/tonywood
Vision with Technology
Experts in eZ Publish consulting & development

Power to the Editor!

Free eZ Training : http://www.VisionWT.com/training
eZ Future Podcast : http://www.VisionWT.com/eZ-Future

Bård Farstad

Thursday 24 July 2003 6:46:49 am

I will do some research. This is something we should discuss as the summer camp. Mabye this is a good thing for 3.3, which is due just before x-mas.

-bård

Documentation: http://ez.no/doc

Selmah Maxim

Thursday 24 July 2003 10:17:33 am

1st of all I don`t if this look like stupid idea or not ... so ..

ezp speed with english its ok, but with another language is really slow, and I think this becoz of text searching and caching it, and as I know searching by text is really slower than by id.

What about if the translation is stored in DB by id, then call this id from templates, and in classes also. For this must be seaction for translation where appear id (fix), input boxs depending on how many language include this site.

This way we make translation issue faster by calling it by id (not by text which maybe 3 or more line), and make the translation writing easy for devloper and the end user !

Bård Farstad

Thursday 24 July 2003 10:34:42 am

Selmah, there is no speed difference if you fetch an object in a translated version. It is a bit overhead if you have a different display language because of the i18n translations, but this will be gone in future versions.

There must be something wrong with your setup if one translation is slower than another one.

--bård

Documentation: http://ez.no/doc

Selmah Maxim

Thursday 24 July 2003 10:43:09 am

maybe ... but don`t you think finding the right translation by searching lets say 3 line or more is slower than searching by id ?

The editing and managing the translation from admin site is better than editing files, also for backup, and taking this a point for 'packaging format' will be useful also !

liu spider

Thursday 24 July 2003 8:08:12 pm

Selmah:
I think your setup must have something misconfiged:

Using another language, you should enable translation cache. And you should see in the debug output that the translation cache are used after a initial request when eZ tries to build translation cache from ts file.

According to my experience, the initial request may take a much longer time, for processing the large ts file is really a "expensive" task. But after that, as long as the translation cache is generated correctly, no difference compared to English will be noticed.

http://liucougar.scim-im.org
SCIM Input Method Platform
http://scim.sf.net
SJSD Online Editor
http://sf.net/projects/sjsd

Selmah Maxim

Friday 25 July 2003 2:24:38 am

liu,
The translation cache is enabeld, this was just suggestion, tho the tanslation via DB faster by id !

anyway its not that slow with xml.

liu spider

Friday 25 July 2003 7:19:55 pm

But the translated strings are stored in some cached php files, and are not fetched from DB. So there is no need to search a string in DB.

And the ts originally is a xml file, but it parse and render is far slower then cached php files, doesn't it?

http://liucougar.scim-im.org
SCIM Input Method Platform
http://scim.sf.net
SJSD Online Editor
http://sf.net/projects/sjsd

eZ debug

Timing: Jan 15 2025 06:50:11
Script start
Timing: Jan 15 2025 06:50:11
Module start 'content'
Timing: Jan 15 2025 06:50:13
Module end 'content'
Timing: Jan 15 2025 06:50:13
Script end

Main resources:

Total runtime1.5613 sec
Peak memory usage6,144.0000 KB
Database Queries224

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0092 684.2188214.7969
Module start 'content' 0.00931.2837 899.01562,041.5938
Module end 'content' 1.29300.2683 2,940.6094661.5469
Script end 1.5613  3,602.1563 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00890.5682210.0004
Check MTime0.00160.0999210.0001
Mysql Total
Database connection0.00160.104810.0016
Mysqli_queries1.398789.58322240.0062
Looping result0.00250.15962210.0000
Template Total1.523697.620.7618
Template load0.00490.311720.0024
Template processing1.518897.274520.7594
Template load and register function0.00140.087810.0014
states
state_id_array0.00070.045610.0007
state_identifier_array0.00190.119920.0009
Override
Cache load0.01270.8135820.0002
Sytem overhead
Fetch class attribute can translate value0.00130.082950.0003
Fetch class attribute name0.00270.1714170.0002
XML
Image XML parsing0.00230.147650.0005
class_abstraction
Instantiating content class attribute0.00010.0044250.0000
General
dbfile0.00150.0958340.0000
String conversion0.00000.000430.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplfull/forum_topic.tplextension/sevenx/design/simple/override/templates/full/forum_topic.tplEdit templateOverride template
11content/datatype/view/ezimage.tpl<No override>extension/sevenx/design/simple/templates/content/datatype/view/ezimage.tplEdit templateOverride template
14content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
17content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
8content/datatype/view/ezxmltags/line.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/line.tplEdit templateOverride template
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/pagelayout.tplEdit templateOverride template
 Number of times templates used: 52
 Number of unique templates used: 6

Time used to render debug report: 0.0002 secs