Right way to modify a node field in a multilanguage system (LANGUAGE_NONE or $node->language or …)

Let's say we want to modify the body field.

$node->body[LANGUAGE_NONE][0]['value'] = "test";

This will work if the node is language neutral (?)

$node->body[$node->language][0]['value'] = "test";

 field_language() returns the field's display language. You should use code similar to the following one:

 $language = field_language('node', $node, 'body'); 

do_something_with($node->body[$language][0]);