Is it possible to change the value of the field based on the the browser's language?
This is the plugin what also core using for browser language negotiation. You can have a closer look what the plugin exactly does: \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationBrowser

The code

$language_negotiation_method_manager = $this-&gt;container-&gt;get('plugin.manager.language_negotiation_method');
$plugin_id = LanguageNegotiationBrowser::METHOD_ID;
/** @var \Drupal\language\LanguageNegotiationMethodInterface $language_negotiation_method */
$language_negotiation_method = $language_negotiation_method_manager-&gt;createInstance($plugin_id);
$request = $this-&gt;container-&gt;get('request_stack')-&gt;getCurrentRequest();
$browser_langcode = $language_negotiation_method-&gt;getLangcode($request);


This will either give you back a valid language code or FALSE if the negotiation was unsuccessful. 

Regarding the dependencies


$container is only used as an example to show which services are being used.
Request is always present as an argument when you are in a controller.