The French parliament has given its final approval to same-sex marriage and allowing gay couples to adopt children. Expected to come into force in June, the passing of the legislation follows months of angry protests.
The bill was approved by the Senate earlier this month, and in its second and final reading, France's lower house, the Socialist-majority National Assembly, voted 331 to 225 to adopt the bill allowing homosexual marriages and adoptions by gay couples.
Justice Minister Christiane Taubira hailed the legislation as "historic."
"It grants new rights, stands firmly against discrimination [and] testifies to our country's respect for the institution of marriage," she said.
"This law...brightens the horizons of many of our citizens who were deprived of these rights," said Taubira. She said the first weddings could take place as soon as June.
French President Francois Hollande must first sign the bill into law, and he will face a challenge. Shortly after the vote, lawmakers from right-wing parties announced a constitutional challenge to the law. France's Constitutional Council will have a month to make a ruling.
The challenge comes after large protests in Paris against the bill, some of which were attended by hundreds of thousands of people, with occasional violence. Opposition to the bill has been linked to a rise in hate crimes against the gay community.
The highest-profile opponent, a former comedienne who goes by the name Frigide Barjot, said the movement would continue, but denounced those involved in protest violence, and said the government had failed to listen.
"The violence comes from the way in which this was imposed," said Barjot, speaking to France Info radio.
France is the 14th country to pass same-sex marriage, following New Zealand last week.
jr/rc (dpa, AFP, AP)
Pep Guardiola's side delivered one of the most remarkable European performances to beat Roma 7-1 in Italy, but Schalke had to work much harder for their three points at home.
Bayern Munich vs. AS Roma and Schalke vs. Sporting Lisbon: Bundesliga teams have got some testing assignments on Tuesday in the Champions League. Follow DW's live blog of the game and contact us on Twitter @dw_sports.