Save translated select field value upon page saving

I have a select field, and I want its selected value to be automatically translated upon page saving.
I don’t know if this is the best way, but I thought of creating a page.update.after hook to do the translation:

'page.update:after' => function($newPage, $oldPage) {
  if ((string) $newPage->intendedTemplate() === 'variation-custom') {
    try {
      $page_en = $newPage->update([
        'material' => 'translated value',
      ], 'en'); // en is the secondary language
    } catch(Exception $e) {
      echo $e->getMessage();

With this code, if I have translate: false for the material field in the blueprint, the field is not saved in the specified language file. Otherwise, it is saved but it’s value is blank.

The right way to go about this would be to add the translation strings in the language files, then use the t() helper when rendering the value in templates etc.

Sorry, forgot to mention that these translations will be fetched dynamically from a database.

But the update code is supposed to update a page in the filesystem, not in the database?

Maybe update the translation files programmatically. Or store the value in a 'material_en`etc. field per language