Opened 2 years ago

Last modified 2 months ago

#14036 assigned task

[UI Translation] Migrate to another tool, Pootle is unmaintained

Reported by: nielx Owned by: nobody
Priority: low Milestone: Unscheduled
Component: Sys-Admin Version: R1/Development
Keywords: Cc:
Blocked By: Blocking:
Platform: All

Description (last modified by nielx)

Currently we are using Pootle (version 2.7). The project seems to be currently unmaintained, so at some point (post R1?) it may be a good idea to migrate to something else.

Wishlist:

  • Online translation
  • Offline translation
  • Export of the result - perhaps even user friendly so that it can be tested on the fly

Change History (12)

comment:1 by nielx, 2 years ago

Configuration changes:

  • In the DATABASES string the engine should be set to 'django.db.backends.postgresql'
  • Add the POOTLE_FS_WORKING_PATH setting
  • Add the POOTLE_CANONICAL_URL setting
  • Change the POOTLE_MARKUP_FILTER setting

comment:2 by nielx, 2 years ago

Before doing migrations run: DROP INDEX pootle_store_suggestion_state; to fix the problem below.

Running migrations:
  Applying pootle_store.0027_unit_created_by_squashed_0055_fill_unit_source_data...Traceback (most recent call last):
  File "env/bin/pootle", line 11, in <module>
    sys.exit(main())
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/pootle/runner.py", line 357, in main
    run_app(project='pootle', django_settings_module='pootle.settings')
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/pootle/runner.py", line 338, in run_app
    management.execute_from_command_line(command)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 359, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/core/management/base.py", line 294, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/core/management/base.py", line 345, in execute
    output = self.handle(*args, **options)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 204, in handle
    fake_initial=fake_initial,
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/migrations/executor.py", line 115, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/migrations/executor.py", line 145, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/migrations/executor.py", line 244, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/migrations/migration.py", line 129, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/migrations/operations/models.py", line 96, in database_forwards
    schema_editor.create_model(model)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/backends/base/schema.py", line 295, in create_model
    self.execute(sql, params or None)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/backends/base/schema.py", line 112, in execute
    cursor.execute(sql, params)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 62, in execute
    return self.cursor.execute(sql)
django.db.utils.ProgrammingError: relation "pootle_store_suggestion_state" already exists
Last edited 2 years ago by nielx (previous) (diff)

comment:3 by nielx, 2 years ago

Next database issue

  Applying pootle_statistics.0011_cleanup_submissions_squashed_0023_remove_scorelog...Traceback (most recent call last):
  File "env/bin/pootle", line 11, in <module>
    sys.exit(main())
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/pootle/runner.py", line 357, in main
    run_app(project='pootle', django_settings_module='pootle.settings')
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/pootle/runner.py", line 338, in run_app
    management.execute_from_command_line(command)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 359, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/core/management/base.py", line 294, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/core/management/base.py", line 345, in execute
    output = self.handle(*args, **options)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 204, in handle
    fake_initial=fake_initial,
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/migrations/executor.py", line 115, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/migrations/executor.py", line 145, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/migrations/executor.py", line 244, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/migrations/migration.py", line 129, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/migrations/operations/fields.py", line 147, in database_forwards
    schema_editor.remove_field(from_model, from_model._meta.get_field(self.name))
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/backends/base/schema.py", line 445, in remove_field
    self.execute(self._delete_constraint_sql(self.sql_delete_fk, model, fk_name))
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/backends/base/schema.py", line 112, in execute
    cursor.execute(sql, params)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/srv/pootle-staging/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
django.db.utils.OperationalError: cannot ALTER TABLE "pootle_app_submission" because it has pending trigger events

comment:4 by nielx, 21 months ago

Owner: changed from haiku-sysadmin to haiku-web
Status: newassigned

The haiku-sysadmin user no longer exists, changing to haiku-web.

comment:5 by nielx, 21 months ago

Owner: changed from haiku-web to nielx
Status: assignedin-progress

comment:6 by pulkomandy, 4 months ago

Pootle seems a bit unmaintained nowadays. Today at FOSDEM I was approached by someone from Weblate who could apparently help us migrate to their platform. Or we could consider KapiX's tool as well.

comment:7 by nielx, 4 months ago

Description: modified (diff)
Summary: [Pootle 2.8] Tracking ticket for Pootle 2.8[UI Translation] Migrate to a newer

Indeed I have noticed. It seems dead.

I have modified the ticket.

comment:8 by diver, 4 months ago

Somebody on Telegram suggested Transifex and Weblate.

comment:9 by pulkomandy, 4 months ago

Summary: [UI Translation] Migrate to a newer[UI Translation] Migrate to another tool, Pootle is unmaintained

in reply to:  6 comment:10 by KapiX, 4 months ago

Replying to pulkomandy:

Or we could consider KapiX's tool as well.

It would be nice to have one system for everything, but I wouldn't say Polyglot currently solves "not maintained" problem we have with Pootle.

It also wasn't designed for relatively big projects like Haiku (UI would need to be redesigned) and wasn't tested with so many catkeys (I suppose Haiku is bigger in that regard than all projects currently there combined). A lot of features are missing too (although I want to tackle that soon).

In summary: yes, just not now. Go ahead with other system for now.

comment:11 by nielx, 4 months ago

Priority: normallow
Status: in-progressassigned

There are some good suggestions on here, but there is no need to actually start moving over right now. The current system is fragile but works well enough. I would say we reopen the conversation after a major release has been done.

comment:12 by nielx, 2 months ago

Owner: changed from nielx to nobody

Unassigning from me (back to the general todo list)

Note: See TracTickets for help on using tickets.