The team announced the deal Thursday and planned a news conference later in the day.
At 23, Odor is already going into his fourth season with the Rangers. He hit .271 with 33 home runs and 88 RBIs last year, when he also became known to many when he punched Toronto slugger Jose Bautista during a game May 15 in the finale of a contentious series. Odor served a seven-game suspension for that.
Odor was the youngest player in the majors when he made his Rangers debut in May 2014. He has hit .265 with 58 homers and 197 RBIs in his career.
He played for Venezuela this spring in the World Baseball Classic.