phetsims / rosetta

PhET's Simulation Translation Utility
MIT License
3 stars 1 forks source link

Translations are being submitted with `userId` values of `null` #412

Closed jbphet closed 1 year ago

jbphet commented 1 year ago

While working on https://github.com/phetsims/perennial/issues/326 I found a number of instances of sims with userId values of null for all string entries in the file. Here is an example of a commit where this is happening: https://github.com/phetsims/babel/commit/56865316302aef782660ef7965bae15dab2264e0.

We'll need to figure out why this is happening and correct it.

jbphet commented 1 year ago

And, if possible, we should probably fix the current string files that have this problem.

jbphet commented 1 year ago

Below is a list of the string files that have at least one instance of null for the user ID. There are 97 of them. Yikes. To generate this list, I used the command grep -l "userId.: null" */*.json from the babel directory.

``` area-builder/area-builder-strings_ro.json atomic-interactions/atomic-interactions-strings_sv.json balancing-chemical-equations/balancing-chemical-equations-strings_ku.json blackbody-spectrum/blackbody-spectrum-strings_ku.json build-a-fraction/build-a-fraction-strings_ku.json build-a-nucleus/build-a-nucleus-strings_hu.json build-a-nucleus/build-a-nucleus-strings_ro.json build-an-atom/build-an-atom-strings_mk.json calculus-grapher/calculus-grapher-strings_el.json calculus-grapher/calculus-grapher-strings_es.json calculus-grapher/calculus-grapher-strings_hy.json calculus-grapher/calculus-grapher-strings_pl.json calculus-grapher/calculus-grapher-strings_sv.json center-and-variability/center-and-variability-strings_az.json circuit-construction-kit-ac-virtual-lab/circuit-construction-kit-ac-virtual-lab-strings_uk.json circuit-construction-kit-common/circuit-construction-kit-common-strings_ca.json circuit-construction-kit-common/circuit-construction-kit-common-strings_ha.json circuit-construction-kit-common/circuit-construction-kit-common-strings_uk.json circuit-construction-kit-dc/circuit-construction-kit-dc-strings_ca.json collision-lab/collision-lab-strings_ha.json coulombs-law/coulombs-law-strings_bg.json coulombs-law/coulombs-law-strings_ha.json curve-fitting/curve-fitting-strings_hi.json density-buoyancy-common/density-buoyancy-common-strings_fr.json energy-forms-and-changes/energy-forms-and-changes-strings_ha.json energy-skate-park/energy-skate-park-strings_ca.json energy-skate-park/energy-skate-park-strings_ha.json expression-exchange/expression-exchange-strings_hi.json faradays-law/faradays-law-strings_fi.json faradays-law/faradays-law-strings_ha.json faradays-law/faradays-law-strings_vi.json forces-and-motion-basics/forces-and-motion-basics-strings_vi.json fourier-making-waves/fourier-making-waves-strings_fr.json fraction-matcher/fraction-matcher-strings_lt.json fractions-common/fractions-common-strings_az.json fractions-common/fractions-common-strings_ku.json fractions-common/fractions-common-strings_lt.json friction/friction-strings_ro.json gene-expression-essentials/gene-expression-essentials-strings_bg.json graphing-lines/graphing-lines-strings_az.json graphing-quadratics/graphing-quadratics-strings_az.json graphing-slope-intercept/graphing-slope-intercept-strings_az.json gravity-force-lab-basics/gravity-force-lab-basics-strings_bg.json gravity-force-lab/gravity-force-lab-strings_bg.json greenhouse-effect/greenhouse-effect-strings_bg.json inverse-square-law-common/inverse-square-law-common-strings_bg.json john-travoltage/john-travoltage-strings_es.json john-travoltage/john-travoltage-strings_vi.json joist/joist-strings_az.json joist/joist-strings_bg.json joist/joist-strings_fr.json joist/joist-strings_hy.json joist/joist-strings_ku.json joist/joist-strings_ro.json joist/joist-strings_sv.json joist/joist-strings_vi.json mean-share-and-balance/mean-share-and-balance-strings_az.json molarity/molarity-strings_de.json molecules-and-light/molecules-and-light-strings_es.json my-solar-system/my-solar-system-strings_bg.json my-solar-system/my-solar-system-strings_fr.json my-solar-system/my-solar-system-strings_sr.json natural-selection/natural-selection-strings_bg.json neuron/neuron-strings_bg.json number-compare/number-compare-strings_sv.json number-line-distance/number-line-distance-strings_es.json number-line-operations/number-line-operations-strings_az.json number-line-operations/number-line-operations-strings_bg.json number-play/number-play-strings_az.json number-play/number-play-strings_pl.json number-play/number-play-strings_ro.json number-suite-common/number-suite-common-strings_az.json number-suite-common/number-suite-common-strings_fr.json number-suite-common/number-suite-common-strings_ro.json number-suite-common/number-suite-common-strings_sv.json ph-scale/ph-scale-strings_ro.json ratio-and-proportion/ratio-and-proportion-strings_om.json rutherford-scattering/rutherford-scattering-strings_lt.json scenery-phet/scenery-phet-strings_az.json scenery-phet/scenery-phet-strings_bg.json scenery-phet/scenery-phet-strings_de.json scenery-phet/scenery-phet-strings_es.json scenery-phet/scenery-phet-strings_fr.json scenery-phet/scenery-phet-strings_ha.json scenery-phet/scenery-phet-strings_hy.json scenery-phet/scenery-phet-strings_ro.json scenery-phet/scenery-phet-strings_sv.json shred/shred-strings_ro.json solar-system-common/solar-system-common-strings_bg.json solar-system-common/solar-system-common-strings_fr.json states-of-matter/states-of-matter-strings_it.json states-of-matter/states-of-matter-strings_sv.json tangible/tangible-strings_om.json vector-addition/vector-addition-strings_az.json vegas/vegas-strings_ku.json wave-interference/wave-interference-strings_bg.json waves-intro/waves-intro-strings_bg.json ```
jbphet commented 1 year ago

I've run some tests and looked through the code, and I have a preliminary hypothesis about why this is happening. The way the code is structured, when the user submits a translation, the client-side code requests the "website user data" from the server, then submits this data as part of the whole translation submission. However, I'm not seeing any handling in the client-side code of the case where the user's session has timed out. To test this theory out, I added a button to the admin page through which the user's login credentials could be logged to the dev tools console, then logged in, went to that page and waited for 15 minutes, then pressed the button. The request failed, which would seem to support this theory.

I'll dig into this some more tomorrow, but if this is true we may need to consider another way of associating a submission with a user ID.

mattpen commented 1 year ago

I think this hypothesis is sound. I think there are 2 possible solutions. The first is that you can read the cookie phet-common-info, which is a JSON Web Token. This can be decoded with vanilla js or this npm library. This cookie contains the user id in a json object. Using this cookie will avoid an http lookup for the user data but I fear that this cookie will be subject to similar timeout/expiration as the web session though.


The other solution is to just make the submission process more robust:

  1. When submit is clicked, fetch the user data from phet-direct
  2. If the user is signed in, submit the request as usual
  3. If the user is not signed in, prompt them to log in, then submit the build after a successful login.

This solution would require either (a) implementing a login dialog in rosetta instead of using the sign-in page or (b) creating a callback page that can handle a submission after a redirect from the sign-in page.

jbphet commented 1 year ago

I have put a workaround in place that stores the user's ID in session storage and pulls it out and uses it if the user tries to publish a translation but the client code gets an indication that the session has expired. This isn't perfect, but I think it will work until we implement https://github.com/phetsims/rosetta/issues/413.

As of this moment, this workaround is deployed on the live translation utility. I'll keep an eye on the logs to make sure we aren't seeing any indications of null user IDs. For reference, here are all of the build requests currently in Rosetta's server log, which starts on May 18. This gives us a sense of how frequently null user IDs were being used, which appears to be around once or twice a day on average.

``` May 18 06:43:23 phet-server2.int.colorado.edu rosetta[2012222]: info: build request object: May 18 06:43:23 phet-server2.int.colorado.edu rosetta[2012222]: info: api: 2.0 May 18 06:43:23 phet-server2.int.colorado.edu rosetta[2012222]: info: simName: my-solar-system May 18 06:43:23 phet-server2.int.colorado.edu rosetta[2012222]: info: version: 1.2.0 May 18 06:43:23 phet-server2.int.colorado.edu rosetta[2012222]: info: locales: bg May 18 06:43:23 phet-server2.int.colorado.edu rosetta[2012222]: info: servers: production May 18 06:43:23 phet-server2.int.colorado.edu rosetta[2012222]: info: brands: phet May 18 06:43:23 phet-server2.int.colorado.edu rosetta[2012222]: info: translatorId: null -- May 18 08:14:14 phet-server2.int.colorado.edu rosetta[2012222]: info: build request object: May 18 08:14:14 phet-server2.int.colorado.edu rosetta[2012222]: info: api: 2.0 May 18 08:14:14 phet-server2.int.colorado.edu rosetta[2012222]: info: simName: gravity-force-lab-basics May 18 08:14:14 phet-server2.int.colorado.edu rosetta[2012222]: info: version: 1.1.11 May 18 08:14:14 phet-server2.int.colorado.edu rosetta[2012222]: info: locales: bg May 18 08:14:14 phet-server2.int.colorado.edu rosetta[2012222]: info: servers: production May 18 08:14:14 phet-server2.int.colorado.edu rosetta[2012222]: info: brands: phet May 18 08:14:14 phet-server2.int.colorado.edu rosetta[2012222]: info: translatorId: null -- May 20 01:04:02 phet-server2.int.colorado.edu rosetta[2012222]: info: build request object: May 20 01:04:02 phet-server2.int.colorado.edu rosetta[2012222]: info: api: 2.0 May 20 01:04:02 phet-server2.int.colorado.edu rosetta[2012222]: info: simName: greenhouse-effect May 20 01:04:02 phet-server2.int.colorado.edu rosetta[2012222]: info: version: 1.1.4 May 20 01:04:02 phet-server2.int.colorado.edu rosetta[2012222]: info: locales: bg May 20 01:04:02 phet-server2.int.colorado.edu rosetta[2012222]: info: servers: production May 20 01:04:02 phet-server2.int.colorado.edu rosetta[2012222]: info: brands: phet May 20 01:04:02 phet-server2.int.colorado.edu rosetta[2012222]: info: translatorId: null -- May 22 07:03:32 phet-server2.int.colorado.edu rosetta[2012222]: info: build request object: May 22 07:03:32 phet-server2.int.colorado.edu rosetta[2012222]: info: api: 2.0 May 22 07:03:32 phet-server2.int.colorado.edu rosetta[2012222]: info: simName: number-line-operations May 22 07:03:32 phet-server2.int.colorado.edu rosetta[2012222]: info: version: 1.0.13 May 22 07:03:32 phet-server2.int.colorado.edu rosetta[2012222]: info: locales: bg May 22 07:03:32 phet-server2.int.colorado.edu rosetta[2012222]: info: servers: production May 22 07:03:32 phet-server2.int.colorado.edu rosetta[2012222]: info: brands: phet May 22 07:03:32 phet-server2.int.colorado.edu rosetta[2012222]: info: translatorId: null -- May 22 07:53:51 phet-server2.int.colorado.edu rosetta[2012222]: info: build request object: May 22 07:53:51 phet-server2.int.colorado.edu rosetta[2012222]: info: api: 2.0 May 22 07:53:51 phet-server2.int.colorado.edu rosetta[2012222]: info: simName: wave-interference May 22 07:53:51 phet-server2.int.colorado.edu rosetta[2012222]: info: version: 2.0.13 May 22 07:53:51 phet-server2.int.colorado.edu rosetta[2012222]: info: locales: bg May 22 07:53:51 phet-server2.int.colorado.edu rosetta[2012222]: info: servers: production May 22 07:53:51 phet-server2.int.colorado.edu rosetta[2012222]: info: brands: phet May 22 07:53:51 phet-server2.int.colorado.edu rosetta[2012222]: info: translatorId: null -- May 23 05:31:22 phet-server2.int.colorado.edu rosetta[2012222]: info: build request object: May 23 05:31:22 phet-server2.int.colorado.edu rosetta[2012222]: info: api: 2.0 May 23 05:31:22 phet-server2.int.colorado.edu rosetta[2012222]: info: simName: gene-expression-essentials May 23 05:31:22 phet-server2.int.colorado.edu rosetta[2012222]: info: version: 1.0.27 May 23 05:31:22 phet-server2.int.colorado.edu rosetta[2012222]: info: locales: bg May 23 05:31:22 phet-server2.int.colorado.edu rosetta[2012222]: info: servers: production May 23 05:31:22 phet-server2.int.colorado.edu rosetta[2012222]: info: brands: phet May 23 05:31:22 phet-server2.int.colorado.edu rosetta[2012222]: info: translatorId: null -- May 23 05:44:31 phet-server2.int.colorado.edu rosetta[2012222]: info: build request object: May 23 05:44:31 phet-server2.int.colorado.edu rosetta[2012222]: info: api: 2.0 May 23 05:44:31 phet-server2.int.colorado.edu rosetta[2012222]: info: simName: natural-selection May 23 05:44:31 phet-server2.int.colorado.edu rosetta[2012222]: info: version: 1.4.12 May 23 05:44:31 phet-server2.int.colorado.edu rosetta[2012222]: info: locales: bg May 23 05:44:31 phet-server2.int.colorado.edu rosetta[2012222]: info: servers: production May 23 05:44:31 phet-server2.int.colorado.edu rosetta[2012222]: info: brands: phet,phet-io May 23 05:44:31 phet-server2.int.colorado.edu rosetta[2012222]: info: translatorId: null -- May 23 05:48:22 phet-server2.int.colorado.edu rosetta[2012222]: info: build request object: May 23 05:48:22 phet-server2.int.colorado.edu rosetta[2012222]: info: api: 2.0 May 23 05:48:22 phet-server2.int.colorado.edu rosetta[2012222]: info: simName: neuron May 23 05:48:22 phet-server2.int.colorado.edu rosetta[2012222]: info: version: 1.1.27 May 23 05:48:22 phet-server2.int.colorado.edu rosetta[2012222]: info: locales: bg May 23 05:48:22 phet-server2.int.colorado.edu rosetta[2012222]: info: servers: production May 23 05:48:22 phet-server2.int.colorado.edu rosetta[2012222]: info: brands: phet May 23 05:48:22 phet-server2.int.colorado.edu rosetta[2012222]: info: translatorId: null -- May 23 06:13:53 phet-server2.int.colorado.edu rosetta[2012222]: info: build request object: May 23 06:13:53 phet-server2.int.colorado.edu rosetta[2012222]: info: api: 2.0 May 23 06:13:53 phet-server2.int.colorado.edu rosetta[2012222]: info: simName: waves-intro May 23 06:13:53 phet-server2.int.colorado.edu rosetta[2012222]: info: version: 1.1.14 May 23 06:13:53 phet-server2.int.colorado.edu rosetta[2012222]: info: locales: bg May 23 06:13:53 phet-server2.int.colorado.edu rosetta[2012222]: info: servers: production May 23 06:13:53 phet-server2.int.colorado.edu rosetta[2012222]: info: brands: phet May 23 06:13:53 phet-server2.int.colorado.edu rosetta[2012222]: info: translatorId: null -- May 30 08:33:21 phet-server2.int.colorado.edu rosetta[1234981]: info: build request object: May 30 08:33:21 phet-server2.int.colorado.edu rosetta[1234981]: info: api: 2.0 May 30 08:33:21 phet-server2.int.colorado.edu rosetta[1234981]: info: simName: build-a-nucleus May 30 08:33:21 phet-server2.int.colorado.edu rosetta[1234981]: info: version: 1.0.13 May 30 08:33:21 phet-server2.int.colorado.edu rosetta[1234981]: info: locales: hu May 30 08:33:21 phet-server2.int.colorado.edu rosetta[1234981]: info: servers: production May 30 08:33:21 phet-server2.int.colorado.edu rosetta[1234981]: info: brands: phet May 30 08:33:21 phet-server2.int.colorado.edu rosetta[1234981]: info: translatorId: null -- May 31 08:15:39 phet-server2.int.colorado.edu rosetta[1234981]: info: build request object: May 31 08:15:39 phet-server2.int.colorado.edu rosetta[1234981]: info: api: 2.0 May 31 08:15:39 phet-server2.int.colorado.edu rosetta[1234981]: info: simName: number-compare May 31 08:15:39 phet-server2.int.colorado.edu rosetta[1234981]: info: version: 1.0.1 May 31 08:15:39 phet-server2.int.colorado.edu rosetta[1234981]: info: locales: om May 31 08:15:39 phet-server2.int.colorado.edu rosetta[1234981]: info: servers: production May 31 08:15:39 phet-server2.int.colorado.edu rosetta[1234981]: info: brands: phet May 31 08:15:39 phet-server2.int.colorado.edu rosetta[1234981]: info: translatorId: null -- Jun 01 07:11:47 phet-server2.int.colorado.edu rosetta[1234981]: info: build request object: Jun 01 07:11:47 phet-server2.int.colorado.edu rosetta[1234981]: info: api: 2.0 Jun 01 07:11:47 phet-server2.int.colorado.edu rosetta[1234981]: info: simName: ratio-and-proportion Jun 01 07:11:47 phet-server2.int.colorado.edu rosetta[1234981]: info: version: 1.2.6 Jun 01 07:11:47 phet-server2.int.colorado.edu rosetta[1234981]: info: locales: om Jun 01 07:11:47 phet-server2.int.colorado.edu rosetta[1234981]: info: servers: production Jun 01 07:11:47 phet-server2.int.colorado.edu rosetta[1234981]: info: brands: phet Jun 01 07:11:47 phet-server2.int.colorado.edu rosetta[1234981]: info: translatorId: null -- Jun 08 01:19:15 phet-server2.int.colorado.edu rosetta[1234981]: info: build request object: Jun 08 01:19:15 phet-server2.int.colorado.edu rosetta[1234981]: info: api: 2.0 Jun 08 01:19:15 phet-server2.int.colorado.edu rosetta[1234981]: info: simName: blackbody-spectrum Jun 08 01:19:15 phet-server2.int.colorado.edu rosetta[1234981]: info: version: 1.0.17 Jun 08 01:19:15 phet-server2.int.colorado.edu rosetta[1234981]: info: locales: ku Jun 08 01:19:15 phet-server2.int.colorado.edu rosetta[1234981]: info: servers: production Jun 08 01:19:15 phet-server2.int.colorado.edu rosetta[1234981]: info: brands: phet Jun 08 01:19:15 phet-server2.int.colorado.edu rosetta[1234981]: info: translatorId: null -- Jun 09 12:21:02 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 09 12:21:02 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 09 12:21:02 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: build-a-nucleus Jun 09 12:21:02 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.0.13 Jun 09 12:21:02 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: fi Jun 09 12:21:02 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 09 12:21:02 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet Jun 09 12:21:02 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 09 15:43:35 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 09 15:43:35 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 09 15:43:35 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: curve-fitting Jun 09 15:43:35 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.0.11 Jun 09 15:43:35 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: iw Jun 09 15:43:35 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 09 15:43:35 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet Jun 09 15:43:35 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 09 16:47:01 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 09 16:47:01 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 09 16:47:01 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: fourier-making-waves Jun 09 16:47:01 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.0.15 Jun 09 16:47:01 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: iw Jun 09 16:47:01 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 09 16:47:01 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet Jun 09 16:47:01 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 09 21:33:30 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 09 21:33:30 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 09 21:33:30 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: calculus-grapher Jun 09 21:33:30 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.0.2 Jun 09 21:33:30 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: fi Jun 09 21:33:30 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 09 21:33:30 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet,phet-io Jun 09 21:33:30 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 09 22:36:52 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 09 22:36:52 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 09 22:36:52 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: equality-explorer Jun 09 22:36:52 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.1.10 Jun 09 22:36:52 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: fi Jun 09 22:36:52 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 09 22:36:52 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet Jun 09 22:36:52 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 10 02:27:58 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 10 02:27:58 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 10 02:27:58 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: graphing-quadratics Jun 10 02:27:58 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.2.13 Jun 10 02:27:58 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: fi Jun 10 02:27:58 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 10 02:27:58 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet,phet-io Jun 10 02:27:58 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 10 03:16:43 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 10 03:16:43 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 10 03:16:43 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: molecule-shapes Jun 10 03:16:43 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.6.3 Jun 10 03:16:43 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: iw Jun 10 03:16:43 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 10 03:16:43 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet,phet-io Jun 10 03:16:43 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 10 04:47:11 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 10 04:47:11 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 10 04:47:11 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: number-line-operations Jun 10 04:47:11 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.0.13 Jun 10 04:47:11 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: iw Jun 10 04:47:11 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 10 04:47:11 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet Jun 10 04:47:11 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 10 07:07:30 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 10 07:07:30 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 10 07:07:30 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: make-a-ten Jun 10 07:07:30 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.0.25 Jun 10 07:07:30 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: fi Jun 10 07:07:30 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 10 07:07:30 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet Jun 10 07:07:30 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 10 07:57:12 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 10 07:57:12 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 10 07:57:12 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: ratio-and-proportion Jun 10 07:57:12 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.2.6 Jun 10 07:57:12 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: iw Jun 10 07:57:12 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 10 07:57:12 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet Jun 10 07:57:12 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 10 09:02:21 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 10 09:02:21 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 10 09:02:21 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: calculus-grapher Jun 10 09:02:21 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.0.2 Jun 10 09:02:21 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: cs Jun 10 09:02:21 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 10 09:02:21 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet,phet-io Jun 10 09:02:21 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 10 09:05:47 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 10 09:05:47 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 10 09:05:47 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: fractions-equality Jun 10 09:05:47 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.1.12 Jun 10 09:05:47 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: cs Jun 10 09:05:47 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 10 09:05:47 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet Jun 10 09:05:47 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 10 11:38:47 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 10 11:38:47 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 10 11:38:47 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: wave-interference Jun 10 11:38:47 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 2.0.13 Jun 10 11:38:47 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: iw Jun 10 11:38:47 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 10 11:38:47 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet Jun 10 11:38:47 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 11 05:10:38 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 11 05:10:38 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 11 05:10:38 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: density Jun 11 05:10:38 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.1.0 Jun 11 05:10:38 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: kn Jun 11 05:10:38 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 11 05:10:38 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet,phet-io Jun 11 05:10:38 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 12 05:50:38 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 12 05:50:38 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 12 05:50:38 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: quadrilateral Jun 12 05:50:38 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.0.1 Jun 12 05:50:38 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: it Jun 12 05:50:38 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 12 05:50:38 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet Jun 12 05:50:38 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null -- Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object: Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info: api: 2.0 Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info: simName: quadrilateral Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info: version: 1.0.1 Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info: locales: it Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info: servers: production Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info: brands: phet Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info: translatorId: null ```
jbphet commented 1 year ago

Log check: We've had ~15 translation submissions since I put the workaround into place, and there are no instances of build request objects with null values for the translatorId field (which comes from the user ID). So far so good. I'll put a reminder on my calendar to check again in a few days.

jbphet commented 1 year ago

I checked the logs again today and there are no instances of null being used in build requests, so things are still looking good.

For reference, the last instance of a build object with null for the translatorId is copied below. This is useful as a reference when searching for subsequent occurrences of this problem in Rosetta's log:

Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info: build request object:
Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info:     api: 2.0
Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info:     simName: quadrilateral
Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info:     version: 1.0.1
Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info:     locales: it
Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info:     servers: production
Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info:     brands: phet
Jun 12 07:15:17 phet-server2.int.colorado.edu rosetta[1677018]: info:     translatorId: null
jbphet commented 1 year ago

I've written some scripts to help with this. Here is the edited output of one of them that lists all translations with only null user IDs. These should be rebuilt once the user IDs are updated so that the translator is credited on the website.

``` atomic-interactions/atomic-interactions-strings_sv.json balancing-chemical-equations/balancing-chemical-equations-strings_ku.json blackbody-spectrum/blackbody-spectrum-strings_ku.json build-a-fraction/build-a-fraction-strings_ku.json build-a-nucleus/build-a-nucleus-strings_fi.json build-a-nucleus/build-a-nucleus-strings_hu.json calculus-grapher/calculus-grapher-strings_cs.json calculus-grapher/calculus-grapher-strings_pl.json calculus-grapher/calculus-grapher-strings_sv.json center-and-variability/center-and-variability-strings_az.json circuit-construction-kit-ac-virtual-lab/circuit-construction-kit-ac-virtual-lab-strings_uk.json curve-fitting/curve-fitting-strings_hi.json expression-exchange/expression-exchange-strings_hi.json fraction-matcher/fraction-matcher-strings_lt.json fractions-equality/fractions-equality-strings_cs.json gene-expression-essentials/gene-expression-essentials-strings_bg.json graphing-quadratics/graphing-quadratics-strings_fi.json gravity-force-lab-basics/gravity-force-lab-basics-strings_bg.json greenhouse-effect/greenhouse-effect-strings_bg.json natural-selection/natural-selection-strings_bg.json neuron/neuron-strings_bg.json number-compare/number-compare-strings_sv.json number-line-operations/number-line-operations-strings_bg.json number-play/number-play-strings_az.json rutherford-scattering/rutherford-scattering-strings_lt.json tangible/tangible-strings_om.json waves-intro/waves-intro-strings_bg.json ```
jbphet commented 1 year ago

I discussed how to approach fixing up the translations with @kathy-phet. While it would be possible to comb through the login records from the website data and correlate this with translations submissions, it would be incredibly time consuming. We agreed on this following as a reasonable approach:

This may not be perfect, but I suspect that it will be pretty close, and far quicker to implement.

kathy-phet commented 1 year ago

Hey JB, I thought for the last use case (For any files that contain all null user IDs and for which multiple translators have worked in that locale, use the ID of the user who made the most recent contribution.) You were going to ask @solaolateju .

jbphet commented 1 year ago

Hey JB, I thought for the last use case (For any files that contain all null user IDs and for which multiple translators have worked in that locale, use the ID of the user who made the most recent contribution.) You were going to ask @solaolateju .

Thanks for the reminder. I'll do that. Is it also worth checking in with @DianaTavares on some of the es-related locales with multiple translators with recent activity?

kathy-phet commented 1 year ago

Yes. Thanks.

jbphet commented 1 year ago

Once the user IDs are fixed, the following sims will need to be rebuilt to make sure the translation credits are correct on the website.

jbphet commented 1 year ago

I've updated all cases of null user IDs for locales where there was only ever a single translator. This addressed 15 translation files, and I rebuilt 11 sims as a result (some of the files were for common code, which don't require a rebuild).

Here are the files:

``` balancing-chemical-equations/balancing-chemical-equations-strings_ku.json blackbody-spectrum/blackbody-spectrum-strings_ku.json build-a-fraction/build-a-fraction-strings_ku.json fractions-common/fractions-common-strings_ku.json joist/joist-strings_ku.json vegas/vegas-strings_ku.json build-a-nucleus/build-a-nucleus-strings_hu.json build-an-atom/build-an-atom-strings_mk.json calculus-grapher/calculus-grapher-strings_pl.json number-play/number-play-strings_pl.json faradays-law/faradays-law-strings_vi.json forces-and-motion-basics/forces-and-motion-basics-strings_vi.json john-travoltage/john-travoltage-strings_vi.json joist/joist-strings_vi.json my-solar-system/my-solar-system-strings_sr.json ```
jbphet commented 1 year ago

I've created and run a script to do the second step of the plan described in https://github.com/phetsims/rosetta/issues/412#issuecomment-1597845713 and committed the changes. Below is the output of that script, which summarizes which user IDs were found in each file and what the null values were replaced with.

``` Translation file name = area-builder-strings_ro.json userId = null most recent contribution time = Fri Apr 14 2023 14:09:59 GMT-0600 (Mountain Daylight Time) userId = 183155 most recent contribution time = Fri Apr 14 2023 11:19:18 GMT-0600 (Mountain Daylight Time) userId = 954258 most recent contribution time = Wed Jun 23 2021 12:08:49 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 183155 Translation file name = build-a-nucleus-strings_ro.json userId = null most recent contribution time = Fri Apr 14 2023 10:54:56 GMT-0600 (Mountain Daylight Time) userId = 183155 most recent contribution time = Sun Sep 11 2022 12:00:44 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 183155 Translation file name = calculus-grapher-strings_el.json userId = null most recent contribution time = Wed Apr 26 2023 13:05:58 GMT-0600 (Mountain Daylight Time) userId = 146870 most recent contribution time = Wed Apr 26 2023 12:57:54 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 146870 Translation file name = calculus-grapher-strings_es.json userId = 964963 most recent contribution time = Tue Apr 18 2023 11:04:39 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Tue Apr 18 2023 10:54:48 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 964963 Translation file name = calculus-grapher-strings_fi.json userId = 1135480 most recent contribution time = Wed Jun 14 2023 22:16:59 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Fri Jun 09 2023 21:33:27 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1135480 Translation file name = calculus-grapher-strings_hy.json userId = 203054 most recent contribution time = Thu May 04 2023 11:22:55 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Thu Apr 20 2023 08:38:11 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 203054 Translation file name = circuit-construction-kit-common-strings_ca.json userId = null most recent contribution time = Mon May 15 2023 23:37:08 GMT-0600 (Mountain Daylight Time) userId = 1094568 most recent contribution time = Mon Nov 28 2022 09:10:19 GMT-0700 (Mountain Standard Time) userId = 763752 most recent contribution time = Thu Apr 09 2020 02:51:00 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1094568 Translation file name = circuit-construction-kit-common-strings_ha.json userId = null most recent contribution time = Mon Apr 03 2023 07:13:13 GMT-0600 (Mountain Daylight Time) userId = 945049 most recent contribution time = Tue Mar 28 2023 04:43:52 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 945049 Translation file name = circuit-construction-kit-common-strings_uk.json userId = null most recent contribution time = Mon Apr 17 2023 05:39:29 GMT-0600 (Mountain Daylight Time) userId = 166868 most recent contribution time = Mon Apr 17 2023 03:07:06 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 166868 Translation file name = circuit-construction-kit-dc-strings_ca.json userId = null most recent contribution time = Mon May 15 2023 23:37:08 GMT-0600 (Mountain Daylight Time) userId = 763752 most recent contribution time = Tue Apr 14 2020 02:01:11 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 763752 Translation file name = collision-lab-strings_ha.json userId = null most recent contribution time = Mon Apr 03 2023 07:14:28 GMT-0600 (Mountain Daylight Time) userId = 945049 most recent contribution time = Thu Nov 10 2022 06:48:25 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 945049 Translation file name = coulombs-law-strings_bg.json userId = 1145192 most recent contribution time = Wed May 03 2023 13:15:07 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Tue May 02 2023 07:19:10 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1145192 Translation file name = coulombs-law-strings_ha.json userId = null most recent contribution time = Mon Apr 03 2023 07:15:50 GMT-0600 (Mountain Daylight Time) userId = 945049 most recent contribution time = Tue Oct 11 2022 10:20:39 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 945049 Translation file name = curve-fitting-strings_iw.json userId = null most recent contribution time = Fri Jun 09 2023 15:43:30 GMT-0600 (Mountain Daylight Time) userId = 282815 most recent contribution time = Sat Dec 05 2020 15:19:13 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 282815 Translation file name = density-strings_kn.json userId = null most recent contribution time = Sun Jun 11 2023 05:10:31 GMT-0600 (Mountain Daylight Time) userId = 1085522 most recent contribution time = Fri Jun 09 2023 11:53:41 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1085522 Translation file name = density-buoyancy-common-strings_fr.json userId = 871615 most recent contribution time = Thu Jun 08 2023 12:48:51 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Wed Apr 19 2023 23:07:03 GMT-0600 (Mountain Daylight Time) userId = 237975 most recent contribution time = Tue Jan 25 2022 11:32:38 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 871615 Translation file name = energy-forms-and-changes-strings_ha.json userId = null most recent contribution time = Mon Apr 03 2023 07:19:41 GMT-0600 (Mountain Daylight Time) userId = 945049 most recent contribution time = Thu Nov 10 2022 07:00:04 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 945049 Translation file name = energy-skate-park-strings_ca.json userId = null most recent contribution time = Fri Apr 21 2023 07:41:42 GMT-0600 (Mountain Daylight Time) userId = 1094568 most recent contribution time = Mon Nov 28 2022 09:12:14 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 1094568 Translation file name = energy-skate-park-strings_ha.json userId = null most recent contribution time = Mon Apr 03 2023 07:31:45 GMT-0600 (Mountain Daylight Time) userId = 945049 most recent contribution time = Wed Oct 12 2022 09:36:25 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 945049 Translation file name = equality-explorer-strings_fi.json userId = 1135480 most recent contribution time = Sat Jun 10 2023 01:58:51 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Fri Jun 09 2023 22:36:48 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1135480 Translation file name = faradays-law-strings_fi.json userId = null most recent contribution time = Mon Mar 27 2023 05:10:41 GMT-0600 (Mountain Daylight Time) userId = 158684 most recent contribution time = Fri Jan 29 2016 09:48:20 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 158684 Translation file name = faradays-law-strings_ha.json userId = null most recent contribution time = Mon Apr 03 2023 07:33:55 GMT-0600 (Mountain Daylight Time) userId = 945049 most recent contribution time = Tue Oct 11 2022 10:03:31 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 945049 Translation file name = fourier-making-waves-strings_fr.json userId = null most recent contribution time = Wed Apr 19 2023 23:12:50 GMT-0600 (Mountain Daylight Time) userId = 237975 most recent contribution time = Fri Dec 10 2021 09:27:27 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 237975 Translation file name = fourier-making-waves-strings_iw.json userId = null most recent contribution time = Fri Jun 09 2023 16:46:56 GMT-0600 (Mountain Daylight Time) userId = 282815 most recent contribution time = Sat Nov 20 2021 14:27:45 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 282815 Translation file name = fractions-common-strings_az.json userId = null most recent contribution time = Sun Apr 16 2023 11:39:26 GMT-0600 (Mountain Daylight Time) userId = 1127852 most recent contribution time = Fri Jan 20 2023 03:11:43 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 1127852 Translation file name = fractions-common-strings_cs.json userId = null most recent contribution time = Sat Jun 10 2023 09:05:41 GMT-0600 (Mountain Daylight Time) userId = 315698 most recent contribution time = Tue Aug 10 2021 12:12:10 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 315698 Translation file name = fractions-common-strings_lt.json userId = null most recent contribution time = Mon Mar 13 2023 05:18:55 GMT-0600 (Mountain Daylight Time) userId = 859922 most recent contribution time = Thu Feb 04 2021 04:49:01 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 859922 Translation file name = friction-strings_ro.json userId = null most recent contribution time = Fri Apr 14 2023 13:58:16 GMT-0600 (Mountain Daylight Time) userId = 955557 most recent contribution time = Sat Apr 09 2022 08:39:06 GMT-0600 (Mountain Daylight Time) userId = 161937 most recent contribution time = Thu Dec 10 2015 00:32:37 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 955557 Translation file name = graphing-lines-strings_az.json userId = null most recent contribution time = Wed Apr 19 2023 23:06:21 GMT-0600 (Mountain Daylight Time) userId = 1127852 most recent contribution time = Fri Jan 20 2023 06:23:51 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 1127852 Translation file name = graphing-quadratics-strings_az.json userId = null most recent contribution time = Wed Apr 19 2023 05:53:12 GMT-0600 (Mountain Daylight Time) userId = 1127852 most recent contribution time = Fri Jan 20 2023 06:23:51 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 1127852 Translation file name = graphing-slope-intercept-strings_az.json userId = null most recent contribution time = Thu Apr 20 2023 01:30:20 GMT-0600 (Mountain Daylight Time) userId = 1127852 most recent contribution time = Fri Jan 20 2023 04:03:55 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 1127852 Translation file name = gravity-force-lab-strings_bg.json userId = 1145192 most recent contribution time = Thu May 18 2023 08:26:04 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Thu May 18 2023 08:13:50 GMT-0600 (Mountain Daylight Time) userId = 374709 most recent contribution time = Mon Mar 20 2017 02:33:12 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1145192 Translation file name = inverse-square-law-common-strings_bg.json userId = 1145192 most recent contribution time = Thu May 18 2023 08:26:04 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Thu May 18 2023 08:13:50 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1145192 Translation file name = john-travoltage-strings_es.json userId = null most recent contribution time = Sun Apr 30 2023 20:36:37 GMT-0600 (Mountain Daylight Time) userId = 282036 most recent contribution time = Wed Jan 02 2019 13:35:42 GMT-0700 (Mountain Standard Time) userId = 170730 most recent contribution time = Mon Apr 18 2016 06:14:36 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 282036 Translation file name = joist-strings_az.json userId = null most recent contribution time = Sun Apr 16 2023 15:34:21 GMT-0600 (Mountain Daylight Time) userId = 1127852 most recent contribution time = Sun Apr 16 2023 15:10:02 GMT-0600 (Mountain Daylight Time) userId = 1120507 most recent contribution time = Sat Apr 08 2023 08:16:16 GMT-0600 (Mountain Daylight Time) userId = 591975 most recent contribution time = Mon Apr 03 2023 15:14:14 GMT-0600 (Mountain Daylight Time) userId = 641432 most recent contribution time = Tue Aug 09 2022 05:39:40 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1127852 Translation file name = joist-strings_bg.json userId = 1145192 most recent contribution time = Tue May 23 2023 06:24:19 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Thu May 18 2023 08:13:50 GMT-0600 (Mountain Daylight Time) userId = 1070013 most recent contribution time = Wed Jul 06 2022 00:27:05 GMT-0600 (Mountain Daylight Time) userId = 842492 most recent contribution time = Wed Oct 28 2020 14:38:01 GMT-0600 (Mountain Daylight Time) userId = 374709 most recent contribution time = Tue Oct 31 2017 02:14:33 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1145192 Translation file name = joist-strings_fr.json userId = 244628 most recent contribution time = Thu Apr 20 2023 07:44:09 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Wed Apr 19 2023 23:04:19 GMT-0600 (Mountain Daylight Time) userId = 1086112 most recent contribution time = Tue Oct 04 2022 10:39:25 GMT-0600 (Mountain Daylight Time) userId = 1085475 most recent contribution time = Fri Sep 30 2022 07:54:36 GMT-0600 (Mountain Daylight Time) userId = 871615 most recent contribution time = Thu Sep 29 2022 00:01:16 GMT-0600 (Mountain Daylight Time) userId = 663149 most recent contribution time = Fri Sep 23 2022 22:40:22 GMT-0600 (Mountain Daylight Time) userId = 237975 most recent contribution time = Fri Sep 09 2022 14:29:14 GMT-0600 (Mountain Daylight Time) userId = 147846 most recent contribution time = Fri Jan 28 2022 07:00:49 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 244628 Translation file name = joist-strings_hy.json userId = 203054 most recent contribution time = Wed Apr 26 2023 01:51:03 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Thu Apr 20 2023 08:38:11 GMT-0600 (Mountain Daylight Time) userId = 164237 most recent contribution time = Mon Oct 17 2022 03:13:28 GMT-0600 (Mountain Daylight Time) userId = 170274 most recent contribution time = Fri Jan 28 2022 08:16:55 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 203054 Translation file name = joist-strings_it.json userId = 1008323 most recent contribution time = Mon Jun 12 2023 14:18:41 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Mon Jun 12 2023 07:15:01 GMT-0600 (Mountain Daylight Time) userId = 157247 most recent contribution time = Sat Mar 25 2023 23:57:01 GMT-0600 (Mountain Daylight Time) userId = 526485 most recent contribution time = Fri Sep 30 2022 10:58:27 GMT-0600 (Mountain Daylight Time) userId = 332542 most recent contribution time = Fri Sep 23 2022 08:25:39 GMT-0600 (Mountain Daylight Time) userId = 1029687 most recent contribution time = Tue Mar 01 2022 04:18:11 GMT-0700 (Mountain Standard Time) userId = phet-test most recent contribution time = Thu Sep 17 2015 21:49:24 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1008323 Translation file name = joist-strings_ro.json userId = 954258 most recent contribution time = Mon Jun 12 2023 14:25:00 GMT-0600 (Mountain Daylight Time) userId = 183155 most recent contribution time = Sun Apr 23 2023 00:12:53 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Fri Apr 14 2023 14:03:33 GMT-0600 (Mountain Daylight Time) userId = 782907 most recent contribution time = Sun Oct 16 2022 08:11:31 GMT-0600 (Mountain Daylight Time) userId = 955557 most recent contribution time = Sat Sep 24 2022 05:36:22 GMT-0600 (Mountain Daylight Time) userId = 726466 most recent contribution time = Fri Sep 10 2021 06:20:33 GMT-0600 (Mountain Daylight Time) userId = 161937 most recent contribution time = Thu Sep 22 2016 02:08:36 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 954258 Translation file name = joist-strings_sv.json userId = null most recent contribution time = Wed May 10 2023 16:19:00 GMT-0600 (Mountain Daylight Time) userId = 155212 most recent contribution time = Wed May 10 2023 15:21:10 GMT-0600 (Mountain Daylight Time) userId = 726743 most recent contribution time = Tue Oct 18 2022 09:32:32 GMT-0600 (Mountain Daylight Time) userId = 641333 most recent contribution time = Wed Oct 05 2022 04:55:38 GMT-0600 (Mountain Daylight Time) userId = 822442 most recent contribution time = Wed Aug 25 2021 01:25:56 GMT-0600 (Mountain Daylight Time) userId = 202544 most recent contribution time = Sun Apr 08 2018 04:40:41 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 155212 Translation file name = make-a-ten-strings_fi.json userId = 1135480 most recent contribution time = Sat Jun 10 2023 07:09:46 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Sat Jun 10 2023 07:07:26 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1135480 Translation file name = mean-share-and-balance-strings_az.json userId = 1127852 most recent contribution time = Sun Apr 16 2023 15:07:45 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Sun Apr 16 2023 13:57:32 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1127852 Translation file name = molarity-strings_de.json userId = null most recent contribution time = Mon May 15 2023 23:49:57 GMT-0600 (Mountain Daylight Time) userId = 920037 most recent contribution time = Mon May 15 2023 22:19:26 GMT-0600 (Mountain Daylight Time) userId = 272196 most recent contribution time = Mon Apr 02 2018 04:14:52 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 920037 Translation file name = molecule-shapes-strings_iw.json userId = null most recent contribution time = Sat Jun 10 2023 03:16:34 GMT-0600 (Mountain Daylight Time) userId = 322219 most recent contribution time = Thu Jun 09 2016 01:25:33 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 322219 Translation file name = molecules-and-light-strings_es.json userId = null most recent contribution time = Mon May 01 2023 14:38:04 GMT-0600 (Mountain Daylight Time) userId = 282036 most recent contribution time = Mon Jan 02 2017 21:31:34 GMT-0700 (Mountain Standard Time) userId = 174240 most recent contribution time = Sun Oct 09 2016 13:13:01 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 282036 Translation file name = my-solar-system-strings_bg.json userId = 1145192 most recent contribution time = Thu May 18 2023 07:04:12 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Thu May 18 2023 06:43:09 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1145192 Translation file name = my-solar-system-strings_fr.json userId = 871615 most recent contribution time = Tue May 16 2023 13:24:16 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Wed Apr 19 2023 23:15:26 GMT-0600 (Mountain Daylight Time) userId = 637925 most recent contribution time = Mon Dec 05 2022 18:43:55 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 871615 Translation file name = number-line-distance-strings_es.json userId = null most recent contribution time = Sun Apr 30 2023 21:41:43 GMT-0600 (Mountain Daylight Time) userId = 282036 most recent contribution time = Fri Aug 13 2021 13:35:16 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 282036 Translation file name = number-line-operations-strings_az.json userId = null most recent contribution time = Sun Apr 16 2023 12:29:50 GMT-0600 (Mountain Daylight Time) userId = 1127852 most recent contribution time = Fri Jan 20 2023 06:10:18 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 1127852 Translation file name = number-line-operations-strings_iw.json userId = null most recent contribution time = Sat Jun 10 2023 04:47:04 GMT-0600 (Mountain Daylight Time) userId = 282815 most recent contribution time = Sat Jul 31 2021 16:11:03 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 282815 Translation file name = number-play-strings_ro.json userId = null most recent contribution time = Fri Apr 14 2023 13:03:05 GMT-0600 (Mountain Daylight Time) userId = 183155 most recent contribution time = Wed Dec 28 2022 00:51:53 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 183155 Translation file name = number-suite-common-strings_fr.json userId = 147846 most recent contribution time = Tue May 02 2023 06:02:56 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Wed Apr 19 2023 23:04:19 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 147846 Translation file name = number-suite-common-strings_ro.json userId = null most recent contribution time = Fri Apr 14 2023 13:03:05 GMT-0600 (Mountain Daylight Time) userId = 183155 most recent contribution time = Wed Dec 28 2022 00:51:53 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 183155 Translation file name = ph-scale-strings_ro.json userId = 183155 most recent contribution time = Sun Apr 23 2023 00:19:10 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Fri Apr 14 2023 14:06:33 GMT-0600 (Mountain Daylight Time) userId = 955557 most recent contribution time = Sun Nov 28 2021 12:12:34 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 183155 Translation file name = quadrilateral-strings_it.json userId = 1008323 most recent contribution time = Mon Jun 12 2023 14:18:41 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Mon Jun 12 2023 07:15:01 GMT-0600 (Mountain Daylight Time) userId = 157247 most recent contribution time = Mon Jun 12 2023 05:54:57 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1008323 Translation file name = ratio-and-proportion-strings_iw.json userId = null most recent contribution time = Sat Jun 10 2023 07:57:05 GMT-0600 (Mountain Daylight Time) userId = 282815 most recent contribution time = Sat Oct 09 2021 08:44:34 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 282815 Translation file name = ratio-and-proportion-strings_om.json userId = null most recent contribution time = Thu Jun 01 2023 07:11:35 GMT-0600 (Mountain Daylight Time) userId = 164117 most recent contribution time = Tue Sep 13 2022 08:07:25 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 164117 Translation file name = scenery-phet-strings_az.json userId = null most recent contribution time = Sun Apr 16 2023 11:10:46 GMT-0600 (Mountain Daylight Time) userId = 1142444 most recent contribution time = Mon Apr 10 2023 04:23:42 GMT-0600 (Mountain Daylight Time) userId = 1120507 most recent contribution time = Sat Apr 08 2023 01:31:25 GMT-0600 (Mountain Daylight Time) userId = 591975 most recent contribution time = Mon Apr 03 2023 15:14:14 GMT-0600 (Mountain Daylight Time) userId = 1127852 most recent contribution time = Sat Feb 11 2023 07:32:32 GMT-0700 (Mountain Standard Time) userId = 641432 most recent contribution time = Tue Aug 09 2022 05:39:40 GMT-0600 (Mountain Daylight Time) userId = 661982 most recent contribution time = Wed Apr 06 2022 02:38:52 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1142444 Translation file name = scenery-phet-strings_bg.json userId = 1145192 most recent contribution time = Tue May 23 2023 01:10:05 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Thu May 18 2023 06:43:09 GMT-0600 (Mountain Daylight Time) userId = 1070013 most recent contribution time = Wed Jul 06 2022 00:16:58 GMT-0600 (Mountain Daylight Time) userId = 842492 most recent contribution time = Wed Oct 28 2020 14:38:01 GMT-0600 (Mountain Daylight Time) userId = 374709 most recent contribution time = Tue Feb 28 2017 02:40:00 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 1145192 Translation file name = scenery-phet-strings_de.json userId = null most recent contribution time = Mon May 15 2023 23:49:57 GMT-0600 (Mountain Daylight Time) userId = 920037 most recent contribution time = Mon May 15 2023 22:15:39 GMT-0600 (Mountain Daylight Time) userId = 532304 most recent contribution time = Mon Oct 24 2022 07:19:31 GMT-0600 (Mountain Daylight Time) userId = 1092172 most recent contribution time = Thu Sep 22 2022 17:07:33 GMT-0600 (Mountain Daylight Time) userId = 446279 most recent contribution time = Tue Mar 02 2021 12:17:39 GMT-0700 (Mountain Standard Time) userId = 272196 most recent contribution time = Sun Feb 14 2021 09:45:31 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 920037 Translation file name = scenery-phet-strings_es.json userId = 964963 most recent contribution time = Wed May 17 2023 00:36:02 GMT-0600 (Mountain Daylight Time) userId = 282036 most recent contribution time = Tue Apr 25 2023 13:54:48 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Tue Apr 18 2023 10:54:48 GMT-0600 (Mountain Daylight Time) userId = 802667 most recent contribution time = Wed Feb 01 2023 19:30:04 GMT-0700 (Mountain Standard Time) userId = 155750 most recent contribution time = Fri Mar 06 2020 15:44:41 GMT-0700 (Mountain Standard Time) userId = 685589 most recent contribution time = Tue Dec 10 2019 14:39:13 GMT-0700 (Mountain Standard Time) userId = 695095 most recent contribution time = Tue Sep 10 2019 10:38:40 GMT-0600 (Mountain Daylight Time) userId = 174240 most recent contribution time = Tue Aug 23 2016 21:19:03 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 964963 Translation file name = scenery-phet-strings_fr.json userId = 871615 most recent contribution time = Tue May 16 2023 13:24:16 GMT-0600 (Mountain Daylight Time) userId = 147846 most recent contribution time = Tue May 02 2023 06:05:26 GMT-0600 (Mountain Daylight Time) userId = 244628 most recent contribution time = Thu Apr 20 2023 08:00:39 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Wed Apr 19 2023 23:04:19 GMT-0600 (Mountain Daylight Time) userId = 1085475 most recent contribution time = Sat Oct 01 2022 10:10:56 GMT-0600 (Mountain Daylight Time) userId = 1086112 most recent contribution time = Thu Sep 29 2022 04:06:45 GMT-0600 (Mountain Daylight Time) userId = 663149 most recent contribution time = Fri Sep 23 2022 22:40:22 GMT-0600 (Mountain Daylight Time) userId = 237975 most recent contribution time = Wed Dec 08 2021 19:50:03 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 871615 Translation file name = scenery-phet-strings_ha.json userId = 945049 most recent contribution time = Mon Jun 12 2023 10:53:33 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Mon Apr 03 2023 07:19:41 GMT-0600 (Mountain Daylight Time) userId = 882134 most recent contribution time = Mon Oct 31 2022 14:06:37 GMT-0600 (Mountain Daylight Time) userId = 1049403 most recent contribution time = Sat Aug 20 2022 11:24:11 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 945049 Translation file name = scenery-phet-strings_hy.json userId = 203054 most recent contribution time = Wed Apr 26 2023 01:51:03 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Thu Apr 20 2023 08:38:11 GMT-0600 (Mountain Daylight Time) userId = 164237 most recent contribution time = Mon Oct 17 2022 03:13:28 GMT-0600 (Mountain Daylight Time) userId = 170274 most recent contribution time = Sat Jan 29 2022 12:01:53 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 203054 Translation file name = scenery-phet-strings_it.json userId = 1008323 most recent contribution time = Mon Jun 12 2023 14:18:41 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Mon Jun 12 2023 07:15:01 GMT-0600 (Mountain Daylight Time) userId = 157247 most recent contribution time = Sat May 13 2023 10:38:57 GMT-0600 (Mountain Daylight Time) userId = 332542 most recent contribution time = Tue Nov 15 2022 08:01:07 GMT-0700 (Mountain Standard Time) userId = 526485 most recent contribution time = Fri Sep 30 2022 10:58:27 GMT-0600 (Mountain Daylight Time) userId = 1029687 most recent contribution time = Wed Mar 02 2022 04:12:19 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 1008323 Translation file name = scenery-phet-strings_iw.json userId = null most recent contribution time = Sat Jun 10 2023 03:16:34 GMT-0600 (Mountain Daylight Time) userId = 282815 most recent contribution time = Sat Jun 10 2023 01:37:43 GMT-0600 (Mountain Daylight Time) userId = 775981 most recent contribution time = Tue May 16 2023 03:07:26 GMT-0600 (Mountain Daylight Time) userId = 322219 most recent contribution time = Wed Jun 08 2016 03:08:36 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 282815 Translation file name = scenery-phet-strings_ro.json userId = 954258 most recent contribution time = Mon Jun 12 2023 14:25:00 GMT-0600 (Mountain Daylight Time) userId = 183155 most recent contribution time = Fri Apr 21 2023 11:44:58 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Fri Apr 14 2023 14:03:33 GMT-0600 (Mountain Daylight Time) userId = 782907 most recent contribution time = Sun Oct 16 2022 10:18:55 GMT-0600 (Mountain Daylight Time) userId = 955557 most recent contribution time = Sat Apr 09 2022 10:50:00 GMT-0600 (Mountain Daylight Time) userId = 726466 most recent contribution time = Fri Sep 10 2021 06:18:16 GMT-0600 (Mountain Daylight Time) userId = 161937 most recent contribution time = Thu Sep 22 2016 02:08:36 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 954258 Translation file name = scenery-phet-strings_sv.json userId = 155212 most recent contribution time = Thu May 11 2023 08:38:10 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Wed May 10 2023 16:19:00 GMT-0600 (Mountain Daylight Time) userId = 726743 most recent contribution time = Tue Oct 18 2022 09:32:32 GMT-0600 (Mountain Daylight Time) userId = 641333 most recent contribution time = Wed Oct 05 2022 04:55:38 GMT-0600 (Mountain Daylight Time) userId = 202544 most recent contribution time = Tue Feb 02 2021 03:46:23 GMT-0700 (Mountain Standard Time) userId = 822442 most recent contribution time = Mon Aug 31 2020 04:09:03 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 155212 Translation file name = shred-strings_fi.json userId = null most recent contribution time = Fri Jun 09 2023 12:20:55 GMT-0600 (Mountain Daylight Time) userId = 158684 most recent contribution time = Thu Sep 22 2016 15:01:07 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 158684 Translation file name = shred-strings_ro.json userId = 183155 most recent contribution time = Fri Apr 14 2023 11:36:25 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Fri Apr 14 2023 10:54:56 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 183155 Translation file name = solar-system-common-strings_bg.json userId = 1145192 most recent contribution time = Thu May 18 2023 07:04:12 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Thu May 18 2023 06:43:09 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1145192 Translation file name = solar-system-common-strings_fr.json userId = 871615 most recent contribution time = Tue May 16 2023 13:24:16 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Wed Apr 19 2023 23:15:26 GMT-0600 (Mountain Daylight Time) userId = 637925 most recent contribution time = Mon Dec 05 2022 18:43:55 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 871615 Translation file name = states-of-matter-strings_it.json userId = null most recent contribution time = Sat May 13 2023 10:42:14 GMT-0600 (Mountain Daylight Time) userId = 157247 most recent contribution time = Sat Mar 25 2023 12:45:54 GMT-0600 (Mountain Daylight Time) userId = 332542 most recent contribution time = Fri Sep 23 2022 08:17:28 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 157247 Translation file name = states-of-matter-strings_sv.json userId = null most recent contribution time = Thu May 11 2023 07:29:01 GMT-0600 (Mountain Daylight Time) userId = 202544 most recent contribution time = Sun Apr 08 2018 04:40:41 GMT-0600 (Mountain Daylight Time) userId = 155212 most recent contribution time = Mon Feb 26 2018 15:50:07 GMT-0700 (Mountain Standard Time) Replacing null user IDs with 202544 Translation file name = vector-addition-strings_az.json userId = null most recent contribution time = Mon Apr 17 2023 05:31:19 GMT-0600 (Mountain Daylight Time) userId = 661982 most recent contribution time = Sat Mar 28 2020 08:01:02 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 661982 Translation file name = vegas-strings_fi.json userId = null most recent contribution time = Fri Jun 09 2023 22:36:48 GMT-0600 (Mountain Daylight Time) userId = 1135480 most recent contribution time = Fri Jun 09 2023 11:46:04 GMT-0600 (Mountain Daylight Time) userId = 158684 most recent contribution time = Sun Jun 03 2018 11:22:15 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1135480 Translation file name = wave-interference-strings_bg.json userId = 1145192 most recent contribution time = Tue May 23 2023 06:15:45 GMT-0600 (Mountain Daylight Time) userId = null most recent contribution time = Tue May 23 2023 06:13:46 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 1145192 Translation file name = wave-interference-strings_iw.json userId = null most recent contribution time = Sat Jun 10 2023 11:38:41 GMT-0600 (Mountain Daylight Time) userId = 282815 most recent contribution time = Sat Jun 10 2023 11:14:47 GMT-0600 (Mountain Daylight Time) Replacing null user IDs with 282815 ```
jbphet commented 1 year ago

In the above commit I set the remaining null userId values in all bg files to the only user ID I have seen with recent activity in Rosetta's logs.

jbphet commented 1 year ago

In the above commit I set the remaining null userId values in all fi files to the only user ID I have seen with recent activity in Rosetta's logs.

jbphet commented 1 year ago

I used git logs to look for successful commits of translations for the sv locale and found that most if not all activity in the time frame where the problems were occurring were done by one translator, so I've changed all null user IDs in the sv files to this ID.

jbphet commented 1 year ago

I used the same technique of looking at git logs to figure out which translator was working on the cs locale translations during the time frame in question and replaced the null user IDs with that translator's ID (there was only one).

jbphet commented 1 year ago

For the last remaining instances of null user IDs, I asked @solaolateju if he knew who had done the translations, and he was able to provide me with some helpful information. I'm not going to post it in this GitHub issue for security reasons, so I'll keep an archive of it in my email. I've made the requisite changes, and will now kick off a bulk rebuild of all the affected translations.

jbphet commented 1 year ago

The translations have all been rebuilt, and there are no more null user IDs in babel. I think it's safe to finally close this.