Hi again.

I have advanced a small step.  It looks like the "update_from_vcs" command
requires a previous "svn update" command run in the SVN directory.  I am
using symbolic links in the repos directory, I don't know if this has
something to do with this behavior.

Now the problem that I am facing is that all the translations that were on
Pootle are lost when I run the update_from_vcs command.  This is not what
the docs say (
http://translate.readthedocs.org/projects/pootle/en/latest/server/commands.html#commands-update-from-vcs)
so maybe I am doing something wrong or maybe there is a bug.

To reproduce the problem, I follow these steps:
1) commit a change (for example a new translated property) in a .properties
file
2) through the web, submit a translation for another string in the same
properties file
3) in the command line:  "svn update"  (in the right directory)
4) in the command line:  "python manage.py update_from_vcs"

After that, the translation submitted in step 2 is lost.

Any ideas about how to fix this ?

Thanks!
Óscar


On Mon, Feb 11, 2013 at 11:26 AM, Óscar Frías Barranco <ofr...@gmail.com>wrote:

> Thanks a lot for sharing your procedure.
>
> In our case, since our project is smaller I think we can simplify it a
> bit.  After reading the docs, it seems to me that an update from VCS
> maintains all the already translated strings, because it does a merge at
> string level.  So, even if the translations are not committed, they will
> not be lost (if I understand well).  So my plan is basically to run a daily
> update_from_vcs from cron.  And the translator themselves can commit their
> work to vcs, or I could do it if they forget to do it.
>
> But I am facing a problem with the "update_from_vcs" command.  If I click
> on the link "Update from VCS" for a given file, the last version of the
> file is pulled from SVN, and Pootle is updated with all the strings coming
> from SVN.
>
> However, if I try to accomplish the same through a command line by running
> "python manage.py update_from_vcs" it doesn't work.  After the command, the
> corresponding file in /repos/myproject/...  is not updated to the last SVN
> version, so it seems to me that something is not working in the
> "update_from_vcs" command.  These are the logs when running it with
> --verbosity=3:
>
> 2013-02-11 10:10:58,752 DEBUG Merging
> /pt_BR/trabber/HotelMessages.properties
> 2013-02-11 10:10:58,764 DEBUG cache miss for
> /pt_BR/trabber/Messages.properties:get_mtime
> 2013-02-11 10:10:58,768 DEBUG Cache miss for /srv/
> translate.trabber.com/pootle/pootle/po/trabber/pt_BR/Messages.properties
> 2013-02-11 10:10:58,860 DEBUG Cache miss for /srv/
> translate.trabber.com/pootle/pootle/po/trabber/pt_BR/Messages.properties
> 2013-02-11 10:10:58,861 DEBUG Parsing version control copy of
> trabber/pt_BR/Messages.properties into db
> 2013-02-11 10:10:58,861 DEBUG Updating /pt_BR/trabber/Messages.properties
> 2013-02-11 10:10:58,879 DEBUG cache miss for
> /pt_BR/trabber/Messages.properties:getquickstats
> 2013-02-11 10:10:59,059 DEBUG Merging trabber/pt_BR/Messages.properties
> with version control update
> 2013-02-11 10:10:59,059 DEBUG Merging /pt_BR/trabber/Messages.properties
> 2013-02-11 10:10:59,087 DEBUG cache miss for /pt_BR/trabber/:getquickstats
>
>
> Any idea about why is not working?
>
> Which are the differences between the "Update from VCS" link and the
> "update_from_vcs" command?  Should I do something (like updating the svn
> checked out files) before executing "update_from_vcs" ?
>
> Thanks!
>
> Óscar
>
>
>
> On Sat, Feb 9, 2013 at 4:39 PM, Chris Leonard <cjlhomeaddr...@gmail.com>wrote:
>
>> On Fri, Feb 8, 2013 at 2:47 PM, Óscar Frías Barranco <ofr...@gmail.com>
>> wrote:
>> > I would like to use VCS as the reference and most up to date version of
>> the
>> > translation files.
>>
>> I'm not sure exactly how that would work as the input occurs via
>> Pootle, so of necessity (at least momentarily) Pootle will have a more
>> completed PO file than the repo.
>>
>> > And I would like Pootle to always have the same content that is in VCS.
>>
>> I completely agree that keeping Pootle and the repo /po directory as
>> synched up as possible is desirable; but the natural dataflow is from
>> Pootle to the repo (at least for the PO files).
>>
>> > For that I think I need two things:
>> > 1) have a way to update Pootle from VCS from a cron job.  I think this
>> full
>> > update from VCS would require first to do an update from VCS for every
>> > file, and then "Update against templates" for every language.
>> > 2) every translator must commit to VCS his work every time
>> >
>> > Does this make sense?
>>
>> Point 2 requires that every translator be a language admin (with
>> commit priv).  That fails to take advantage of the features of Pootle
>> as a collection point and staging area for draft translations that can
>> be reviewed prior to commit to the repo (e.g. suggestions,
>> submissions, pofilter checks, etc.).  I'm not brave enough to take
>> that step, and with 130 languages, the reality is that at any given
>> time, I may not have a suitable lang admin for some languages.
>>
>> > The second bullet is a matter of discipline, but do you know how to do
>> > number 1 from command line ?
>>
>> No question that certain disciplines must be observed and that cron
>> jobs are a very useful tool for doing the synch between Pootle and the
>> repo.
>>
>> Let me describe the Sugar Labs workflow, which is different then that
>> you propose, but I will describe why we do it this way.  Even if you
>> are not convinced by my arguments (and you need not be), some of the
>> scripts I will point you to may be of use to you.
>>
>> 1) Developers add i18n to their code and generate the first POT file,
>> placing it in the /po directory.  After that the discipline we ask for
>> is that they never touch the /po directory directly again.  It is a
>> discipline of restraint from taking an action, so it is easier to get
>> compliance than a discipline of needing to take an action (as you
>> pprpose for translators).
>>
>> 2) Developers must add the special gituser: "pootle" as a committer to
>> the repo.  The SSH key for this proxy user was created by the Pootle
>> and repo admins, and this user acts as a go between between Pootle
>> users and the repo.  No repo commit privs are needed for individual
>> translators or even lang admins.
>>
>> 3) Pootle admins take care of adding new repos to Pootle, typically
>> when a developer files a ticket requesting L10n.
>>
>> http://wiki.sugarlabs.org/go/Service/translate
>>
>> 4) The Pootle server has a local git copy of the repo.  Cron jobs keep
>> it synched up on a nightly basis.  We keep copies of these scripts in
>> our repo at:
>>
>> http://git.sugarlabs.org/pootle-helpers/mainline
>>
>> in particular the potgenerator script is key.
>>
>> 5) A nightly cron job regenerates the POT (with any fresh changes from
>> the repo) and sends an e-mail that lets me know if any changes have
>> been made that would require an "Update from Templates".
>>
>> 6) Pootle users themselves can do an "Update from Templates" if they
>> want to be sure they have the latest files to work on, I typically do
>> a bulk update as a maintenance step if it seems needed.
>>
>> 7a) Only lang admins have "commit to VCS", the essentially borrow the
>> gituser: pootle commit priv, but are de facto only able to commit PO
>> files, limiting the harm that can be done.  Only lang admins are given
>> "upload with overwrite" priv.
>>
>> 7b) Registered and logged on users pick up the "default" user privs
>> and can "submit" translations.  They can upload, but not with over
>> write.
>>
>> 7c) Drive-by (unregistered or not logged in) users can only make
>> suggestions by picking up the "nobody" user privs,  Of course, they
>> can download for off-line work.
>>
>> 8) Pending translations to be committed can be seen by the Pootle
>> admins by doing a "git status" on the repos on the Pootle server.
>>
>> I know this is not the workflow you are describing at all, but this
>> does keep developers focused on developing and translators focused on
>> translating and minimizes th echance of them interfering with each
>> other while providing a means for them to stay as synched up as
>> feasible.  Essentially L10n is a service that developers can "sign up
>> for".
>>
>> It has worked for us for years with a broad diversity of independent
>> developers releasing at different times and a large translation
>> community.  YMMV.
>>
>> cjl
>> Sugar Labs Translation Team Coordinator
>>
>
>
------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013 
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
_______________________________________________
Translate-pootle mailing list
Translate-pootle@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/translate-pootle

Reply via email to