Correct way to delete string in source file?

Hello
Let’s say I need to remove or update the id and value of the line from a source file and remove/update it from all translations. How to do it correctly in a pontoon?

Delete/update id=value in repo source and sync in pontoon?
It is not updating translation files in repo… also some weird things happening

Or do I have to do it manually, deleting\updating the required line in each file in repo and then synchronizing in pontoon?

It really depends on which format you’re using.

Update: you need to update the source file, using a different ID for the new text. After the next sync, the new string will show up as missing in the other locales.

Removal: Pontoon doesn’t commit to the repository unnecessarily. If someone updates a translation, Pontoon will commit the updated translation, and remove obsolete strings too. It doesn’t remove obsolete strings just because the source files were updated.

I use .ini file (id=value)

here what i did:

  1. Deleted string from source file in repo
  2. Pontoon sync
  3. Updated translation file in pontoon (ex: german) and saved.
  4. Pontoon sync
    No changes in “de” repo… :face_with_raised_eyebrow:

Also I see this

Did you translate the new ID, or the old one? Was the old one gone?

Have you checked the logs to see if sync is successful?

When I deleted string from source, I updated translation in the other random ID. The deleted string gone only in pontoon you can see in picture TRANSLTD 324 of 323 that one extra string was the deleted old string.

In Project sync logs all sync attempt except first have “status 0”

To be honest, I have already tried all the options, the pontoon simply cannot work correctly with changes in the source ini file…

Same thing with Po files. This interferes with synchronization:

2020-11-18T13:42:10.421429+00:00 app[web.1]: django.db.utils.IntegrityError: new row for relation “base_locale” violates check constraint “base_locale_fuzzy_strings_check”
2020-11-18T13:42:10.421430+00:00 app[web.1]: DETAIL: Failing row contains (205, sl, Slovenian, (n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3), 1,2,3,5, , 27, 171, 172, 1, -1, 0, 0, ltr, 1868000, Latin, , sl-si, sl, f, 0, 0, sl, , ).

django.db.utils.IntegrityError: new row for relation “base_locale” violates check constraint “base_locale_approved_strings_check”
DETAIL: Failing row contains (40, zh-CN, Chinese, 0, 5, , 994, 37, 38, -1, 0, -1, 0, ltr, 1230741000, Simplified Chinese, , zh-cn, zh-CHS, f, 0, 0, zh, , ).

Adding a note that the problem has been reported as fixed:

Hi,

Handling deleted strings still seems to be completely broken with *.po files.
Upon sync you get the error that Alan.v mentioned:

django.db.utils.IntegrityError: new row for relation “base_locale” violates checkconstraint “base_locale_total_strings_check”
server_1 | DETAIL: Failing row contains (16, -1, 0, 0, 0, 0, 0, bg, bg, bg, bg-bg, , Bulgarian, (n != 1), 1,5, Cyrillic, ltr, 8107000, , null, 32, 31, , ).

This error persists and breaks syncing forever!
I my case the string was removed from both the pot file and all of the po files.
Using latest master branch from github.