I think there are many problems with alwaysavailable management :
- when creating a content, the language_id column in ezcontentobject_name table is not set properly when alwaysavailable is true (cf EzcDatabase::setName()) : no alwaysavailable management for the content names
- when updating a content, the language_id in ezcontentobject_name and ezcontentobject_attribute tables is not set correctly (cf EzcDatabase::updateAlwaysAvailableFlag()) : all the corresponding rows, in any language is set alwaysavailable for the current version, not only the initial_language_id
As a result, the language management mays fail in many circumstances.
Please find a patch proposal attached (based on eZPublish 5.0, I quickly took a look in 5.1 sources and it seems affected too)