Child pages
  • Keeping language packs from different languages in sync
Skip to end of metadata
Go to start of metadata

Imported from:

Here is some ideas how we can keep language packs from multiple languages synchronized with primary language pack for English language.

We invent such term as translatable unit. Units could consist of one or more fields (textareas) that could be translated. Also translatable unit will feature a Description field, that will tell translator, where exactly given text will be used, so translation could be more accurate and appropriate. Each translatable unit have unique identifier (phrase name for phrases and email event name + email event type for email events). Each translatable unit have version number (integer). Once primary language translation is updated or new translation unit is added, then it's version number is incremented.

When we perform translation of set of the translatable units (language pack) to other language, then each unit will keep it's version, version used to make initial translation). When primary unit translation (on English language) will be changed, then it's version number will changed and will differ from all other translated units in other language packs. This way we can detect translation units, that need to be updated to be in sync.

I suppose, that this will be some script on website. Each website user can register as "translator" for any count of languages so he'll get notified when his expertise is need to keep associated language pack in sync. Page with language packs will be automatically constructed based on finished translation for each language pack and translation progress bar will available for each language pack.

I'll try to look if something, that I've described is already available on the Internet, if not will write something myself.

Let me know If you have any ideas about this.

Related Tasks

INP-825 - Getting issue details... STATUS

INP-1506 - Getting issue details... STATUS


  1. Hello Alexander,

    translation themselves don't really need any update as:

    - when a word or phrase is translated, it's meaning won't change over the time

    - in french, I adapt many french phrases and words from the original
    french pack to fit the front-end needs and requests, thus any update
    would destroy all custom work

    - if a new module is released, then we'll maybe add some translations,
    maybe remove other ones, this part could be updated: on install, we
    remove tag named "xxx" and add tag "yyy". After this update, it'll be
    very easy to find new tags, as we can sort all tags by modification
    date in Regional menu

    More pragmatically, did you had any request involving this kind of function?

    Sorry if I'm not so much enthusiast, but to be honest I think we have
    really a greater job to do with VAT, which is far more usefull for
    spreading the soft outside US...
    Please have look to my post, 6 monthes ago...


    2010/2/8 Alexander Obuhovich <>:

  2. I've found what I've imagined at .

    So it's not common practice for international users to install In-Portal and
    then download language pack for other language and install it as well? In
    the last months we are really renaming/translating existing phrases and
    email events a lot and I think that current language packs on other
    languages are really outdated.

    On Mon, Feb 8, 2010 at 10:57 PM, Phil ..:: ::.. <

  3. Of course installing new language is common, sorry if I didn't
    understoud well your willing, I was saying that "updating" lang packs
    is not usefull.

    Il the goal is to make lang pack working better, I agree; for example,
    we don't have any hint on how have been processed the import, how many
    tags replaced....

    2010/2/9 Alexander Obuhovich <>:

  4. Assuming you mean phrase name as tag, then only way to keep phrase renames
    in sync is via upgrade scripts, as we already do. Whole proposed idea is
    only new installations, so when we change English language pack, then we
    will know what language packs on other languages should be updated as well.

    On Tue, Feb 9, 2010 at 11:34 AM, Phil ..:: ::.. <

  5. ok, slightly different from what I've understoud first :)
    we install language only 1 time in a website life, but why not...

    2010/2/9 Alexander Obuhovich <>:

  6. We can expand this idea to site upgrade so we will track what phrases, email
    events user have changed and what of there were changed on original language
    pack in new version of In-Portal and overwrite only not touched by the user.

    On Tue, Feb 9, 2010 at 12:51 PM, Phil ..:: ::.. <

  7. this way it could be really usefull, as I needed to code my own
    duplicate tag finder to move from 4,x to 5,x translations...

    2010/2/9 Alexander Obuhovich <>:

  8. Hi Alex, Phil,

    I just wanted to check if we are clear on this and it's ready to be
    filed as Infrastructure Feature Request?


  9. Hi,

    Alex, I think you have a clearer view than me on this feature...


    2010/3/25 Dmitry A. <>:

  10. Yes. Ready.

    On Thu, Mar 25, 2010 at 11:09 AM, Phil ..:: ::.. <

  11. Hi Alex,

    I have reviewed your description from top to the bottom.

    To be honest I think you'll do a better job converting it to the task, if
    you don't mind of course.


  12. Here is the task:

    INP-825 - Getting issue details... STATUS


    INP-825 - Getting issue details... STATUS

    >Sorry for 1 year delay.
  13. late is better than never :)

    2011/3/13 Alexander Obuhovich <>

  14. Some new ideas arrived (after 2 years of silence).

    I've imagined that such (or alike) translation system would also be useful
    for In-Portal websites, who are translated into multiple languages to keep
    all phrases/e-mails in sync between languages.

    Actually I've imagined new system for keeping all in sync.

       1. Add "TranslateFrom" ML column into LanguageLabels (former "Phrases")
       and EmailEvents (former "Events") database tables
       2. Add "Use as Primary" button on phrase/e-mail event edit page (with
       hint "Use this translation as primary for other languages")
       3. Initially all TranslateFrom columns have 0 in them, that means - "I'm
       in sync".

    As you probably noticed user then can press either "Save" or "Use as
    Primary" button after changing a translation on a specific language he is
    assigned to translate.

    Pressing "*Use as Primary*" would save phrase/e-mail event translation and
    set this language ID to TranslateFrom field for all other languages except
    current one:

       - l1_ TranslateFrom = 3
       - l2_ TranslateFrom = 3
       - l3_ TranslateFrom = 0
       - l4_ TranslateFrom = 3
       - l5_ TranslateFrom = 3

    In example above you can easily see, that translation was changed on 3rd
    language and all other languages needs to be updated to be in sync.

    Pressing "Save" would set 0 to TranslateFrom column at current language
    only, like in example below:

       - l1_ TranslateFrom = 3
       - l2_ TranslateFrom = 3
       - l3_ TranslateFrom = 0
       - l4_ TranslateFrom = 3
       - l5_ TranslateFrom = 0

    Here 5th language translation was fixed to be in sync and 0 was set in
    corresponding field.

    Then in phrase/e-mail event list we create column "Translation in Sync"
    (Yes/No), where we would just compare TranslateFrom column from current
    language with 0. If it's 0, then all is translated.

  15. Seems perfect. I'd just propose another grid column in Regional
    Configuration menu, called "sync status", where we could display % of
    synced labels, for reporting purposes.
  16. Since in new system we no longer stick to primary language as source for
    all translations, then how do we calculate that percent?

    Maybe SUM(IF(l5_TranslateFrom = 0, 0, 1)) / COUNT(l5_TranslateFrom).

       - SUM(IF(l5_TranslateFrom = 0, 1, 0)) - phrase count, that doesn't
       require to be synced
       - COUNT(l5_TranslateFrom) - total phrase count

  17. seems good :)

    Le vendredi 4 mai 2012

  18. Nice idea Alex!

    Are we still want to get involved to allow users
    to Synchronize languages from DB of language packs or something like
    this. I am not sure how necessary this is at present time.


  19. Nice idea means, that we can try it out in 5.2.0?

  20. Dmitry suggested another idea, that might help us with content block
    translation tracking a bit.

    Create a "Scheduled Task" (former "Agent"), that would count % of
    translated content blocks for each page, which has them. It of course won't
    allow to track outdated translations as with phrases, but it at least would
    tell what content blocks aren't translated at all on other languages.

    Add multilingual (one column per language) *TranslatedContentBlocks *column.
    For each language execute this SQL to fill it:

    SELECT SUM( IF(COALESCE(l1_Content, '') = '', 0, 1) ), PageId
    FROM PageContent
    GROUP BY PageId

    Then just display field in category list, that is calculated using this

    (l2_TranslatedContentBlocks / l1_TranslatedContentBlocks) * 100

    Then you can perfectly see how much content blocks require initial
    translation on other languages.

  21. content blocks... I'd say that before adding extra feature such as the one you describe, it'd be really more useful to create a tool to import/export them.
    It's a good idea to think to adapt Phrases features to Content blocks anyway.

    But as a daily user of In-Portal ML stuff, I'd say that I miss more backup tool, rather than a checking tool.
    For example, import/export can be used to work offline on contents, and upload them once completed.

    Le vendredi 4 mai 2012

  22. Thanks for details everyone.

    I guess at this point we should update already existing task since it's not
    fully describes what we want to do now?

    INP-825 - Getting issue details... STATUS


  23. weird, I can't access this task on Mantis, my access is denied... normal?

    Le mardi 15 mai 2012

  24. I've created  INP-1506 - Getting issue details... STATUS  task about totals.