Reproduce:
Lets say you have English as basic language, and set woocommerce multilanguage (wpml) to set currency to rubles when visitor switches to Russian.
1) You switch to Russian. You see all the prices in rubles.
2) You put an item in your cart.
3) You switch back to English.
Top cart widget subtotal is not updated, although currency and item prices are.
Solution (maybe not the best, but worked for me):
add_action(‘wp_head’, ‘update_woocommerce_cart’);
function update_woocommerce_cart() {
global $woocommerce;
$woocommerce->cart->calculate_totals();
}