Faits :
A.
Par jugement du 13 février 2017, le Tribunal correctionnel de l'arrondissement de l'Est vaudois a condamné X._, pour voies de fait, contrainte sexuelle et viol, à une peine privative de liberté de trois ans ainsi qu'à une amende de 1'000 francs. Il l'a en outre condamné à payer à A._ une somme de 10'000 fr. à titre d'indemnité pour tort moral.
B.
Par jugement du 3 juillet 2017, la Cour d'appel pénale du Tribunal cantonal du canton de Vaud a rejeté l'appel formé par X._ contre ce jugement et a intégralement confirmé celui-ci.
La cour cantonale a retenu les faits suivants.
B.a. X._, de nationalité portugaise, est né en 1976. Selon ses déclarations, il aurait trois soeurs, aurait été marié trois fois et aurait eu une fille de chacune de ses deux dernières épouses. Il suit une formation dans le domaine du tourisme.
Son casier judiciaire suisse est vierge. En revanche, X._ a été condamné à deux reprises au Portugal, pour des infractions contre l'intégrité sexuelle et enlèvement, à une peine cumulée de 10 ans de détention.
B.b. A._ et X._ étaient collègues à l'hôtel B._, à C._. Ils étaient aussi en couple. D'août 2012 à juin 2014, à la suite de disputes, X._ a contraint A._ à entretenir, à une dizaine de reprises, des relations sexuelles vaginales et anales contre son gré. A ces occasions, il lui arrivait en outre de la gifler ou de la serrer au cou, soit :
B.b.a. A une date indéterminée du mois d'août 2012, à l'hôtel B._, dans la chambre de X._, une dispute a éclaté car A._ avait découvert que celui-ci consultait des sites érotiques. X._ a alors insulté la prénommée en lui disant qu'elle n'aurait pas dû faire cela, l'a poussée sur le lit et l'a immobilisée en lui maintenant ses mains avec la sienne. Avec son autre main, il a baissé le pantalon de A._, avant de la pénétrer vaginalement et analement contre son gré, jusqu'à éjaculation. Durant l'acte sexuel, A._, apeurée et en pleurs, a vainement demandé à X._ de s'arrêter, tout en se débattant. Lorsque l'intéressé a eu terminé, il s'est rhabillé et lui a dit : "Tu as compris ce que tu as fait, j'espère que tu ne le feras plus, sinon tu sais ce qui t'attend".
B.b.b. A une date indéterminée du mois de mars 2013, à l'hôtel B._, dans la chambre de X._, une dispute a éclaté relativement à des messages de femmes que celui-ci avait reçus sur son téléphone portable. Le prénommé a giflé A._ et l'a maintenue sur le lit, avant de la pénétrer vaginalement et analement contre son gré, jusqu'à éjaculation.
B.b.c. A une date indéterminée du mois de mai 2013, alors que X._ et A._ se disputaient au sujet de leur travail, le prénommé a poussé celle-ci dans un bureau situé derrière la réception de l'hôtel. Après avoir baissé les collants de A._, il l'a pénétrée vaginalement contre son gré, jusqu'à éjaculation. Durant l'acte sexuel, A._, choquée, a vainement tenté de le repousser en lui demandant d'arrêter.
B.b.d. Au début du mois de juin 2014, au cours d'une dispute survenue lors d'une promenade en forêt à C._, X._ a empoigné A._ par les cheveux et l'a traînée à terre sur quelques mètres.
B.b.e. Au milieu du mois de juin 2014, à C._, au cours d'une dispute, A._ a fait part à X._ de son intention de mettre un terme à leur relation. Hors de lui, celui-ci l'a poussée sur le lit, l'a maintenue par les épaules afin qu'elle ne puisse plus bouger et lui a mis la main sur la bouche pour l'empêcher de crier. Après lui avoir affirmé qu'il voulait rester avec elle, il a finalement eu avec A._ une relation sexuelle consentie.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre le jugement du 3 juillet 2017, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens qu'il est acquitté et qu'aucune indemnité pour tort moral n'est allouée à A._. Subsidiairement, il conclut à son annulation et au renvoi de la cause à l'autorité cantonale pour nouvelle décision. Il sollicite par ailleurs le bénéfice de l'assistance judiciaire.
Considérant en droit :
1.
Le recourant fait grief à la cour cantonale d'avoir violé son droit d'être entendu. Il soutient que l'autorité précédente aurait dû ordonner une traduction officielle des messages produits et traduits directement par l'intimée, voire écarter ceux-ci, dès lors que lui-même aurait relevé diverses erreurs de traduction.
La cour cantonale a exposé à cet égard que l'intimée avait appris la langue portugaise "sur le tas avec des collègues de travail" et qu'elle avait admis, durant les débats de première instance, avoir peut-être mal traduit quelques mots. L'autorité précédente a précisé que, dans les messages concernés, le recourant écrivait en portugais tandis que l'intimée lui répondait soit en italien soit en portugais. Durant les débats d'appel, la cour cantonale a interpellé le recourant à propos des messages dont la traduction lui semblait erronée. Celui-ci s'est plaint de la traduction d'une expression comprise dans un message du 16 mai 2012 et a par ailleurs indiqué que les mots figurant entre parenthèses dans un message du 31 juillet 2014 n'avaient pas été traduits. La cour cantonale a considéré que les traductions opérées par l'intimée étaient conformes au sens général qui pouvait être donné aux messages concernés et a précisé que les traductions avaient été soumises à deux employées du greffe, de langue maternelle italienne, respectivement portugaise. Dans l'établissement des faits, l'autorité précédente s'est ensuite fondée sur des messages envoyés par l'intimée au recourant les 16 mai et 31 août 2012, ainsi que les 7 mars, 18 juin, 23 juin et 25 août 2013. Aucun de ces messages n'a fait l'objet d'une critique de la part du recourant - en particulier quant à sa traduction - dans le cadre de la procédure d'appel.
Devant le Tribunal fédéral, le recourant se contente d'indiquer qu'il s'oppose à "l'intégralité des messages", dont il "conteste la manipulation dans son ensemble, tant parce qu'ils sont tronqués que parce qu'ils sont mal traduits". On ignore cependant si le recourant considère que les messages évoqués dans le jugement attaqué sont des faux - auquel cas on distingue mal l'intérêt de leur traduction officielle -, ou si la traduction qu'en a donnée l'intimée serait imparfaite. L'intéressé ne précise pas davantage si, outre les deux messages dont la traduction a été évoquée au cours des débats d'appel et dont la cour cantonale n'a pas fait usage pour l'établissement des faits, la traduction des textes effectivement considérés par l'autorité précédente est contestée. Enfin, le recourant n'explique pas en quoi consisterait la "manipulation" dont il fait état. Dès lors qu'on ignore si le recourant dénonce des erreurs de traduction concrètes concernant les messages sur lesquels la cour cantonale a fondé sa conviction, ou s'il réclame par principe une traduction officielle sans pour autant contester le sens accordé par l'autorité précédente aux textes concernés, son grief de violation du droit d'être entendu ne répond pas aux exigences de motivation découlant des art. 42 al. 2 et 106 al. 2 LTF. Partant, celui-ci est irrecevable.
Pour le reste, dans la mesure où le recourant reproche à la cour cantonale de s'être fondée sur les messages litigieux afin d'établir les faits, ses critiques seront examinées en relation avec le grief d'arbitraire dans l'appréciation des preuves (cf. consid. 2.3.6 infra).
2.
Le recourant reproche à la cour cantonale d'avoir établi les faits et apprécié les preuves de manière arbitraire. Il se plainte en outre, à cet égard, d'une violation du principe "in dubio pro reo".
2.1. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (art. 105 al. 1 LTF), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, à savoir, pour l'essentiel, de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat (ATF 143 IV 241 consid. 2.3.1 p. 244). En matière d'appréciation des preuves et d'établissement des faits, il n'y a arbitraire que lorsque l'autorité ne prend pas en compte, sans aucune raison sérieuse, un élément de preuve propre à modifier la décision, lorsqu'elle se trompe manifestement sur son sens et sa portée, ou encore lorsque, en se fondant sur les éléments recueillis, elle en tire des conclusions insoutenables (ATF 140 III 264 consid. 2.3 p. 266 et les références citées). Le Tribunal fédéral n'entre ainsi pas en matière sur les critiques de nature appellatoire (ATF 142 III 364 consid. 2.4 p. 368). La présomption d'innocence, garantie par les art. 10 CPP, 32 al. 1 Cst., 14 par. 2 Pacte ONU II et 6 par. 2 CEDH, ainsi que son corollaire, le principe "in dubio pro reo", concernent tant le fardeau de la preuve que l'appréciation des preuves (ATF 127 I 38 consid. 2a p. 40 s.). Lorsque, comme en l'espèce, l'appréciation des preuves et la constatation des faits sont critiquées en référence au principe "in dubio pro reo", celui-ci n'a pas de portée plus large que l'interdiction de l'arbitraire (ATF 138 V 74 consid. 7 p. 82).
2.2. Le recourant reproche à la cour cantonale d'avoir retenu qu'il avait été condamné à deux reprises au Portugal pour des infractions contre l'intégrité sexuelle et enlèvement. Selon lui, il ne s'agirait en réalité que d'"une seule et unique affaire". L'intéressé soutient par ailleurs que sitôt son extrait de casier judiciaire portugais versé au dossier, il aurait été "présumé coupable", l'autorité précédente étant tombée dans l'arbitraire, "à la limite du délit de faciès".
L'extrait de casier judiciaire portugais figurant au dossier, transmis par les autorités de ce pays à l'Office fédéral de la justice, est accompagné d'une traduction en français des documents concernés. Il n'apparaît ainsi nullement que la cour cantonale se serait fondée, comme l'affirme le recourant, sur des "constatations à la louche à la lumière de la connaissance du latin".
Pour le reste, il ressort des pièces en question que le recourant a fait l'objet d'une condamnation, pour enlèvement et abus sexuel perpétrés le 19 juin 1998, ainsi que d'une condamnation, pour contrainte sexuelle et deux crimes de tentative de viol, le cumul des peines se transformant en une sanction unique de dix années. On ne voit pas, partant, en quoi la cour cantonale aurait versé dans l'arbitraire en retenant que l'intéressé avait "été condamné à deux reprises au Portugal pour des infractions contre l'intégrité sexuelle et enlèvement à une peine cumulée de dix ans de détention". En outre, il n'apparaît pas que la correction d'un éventuel vice serait, sur ce point, susceptible d'influer sur le sort de la cause (cf. art. 97 al. 1 LTF), dès lors que le recourant ne conteste pas la réalité des sentences évoquées par l'autorité précédente, d'une part, et que, d'autre part, la cour cantonale ne s'est aucunement fondée sur ses antécédents, en particulier sur le nombre de condamnations au Portugal, dans l'établissement des faits pour lesquels celui-ci a été condamné.
2.3. Le recourant conteste s'être rendu coupable des faits pour lesquels il a été condamné.
2.3.1. S'agissant des déclarations de l'intimée, la cour cantonale a indiqué qu'au cours de sa première audition, celle-ci n'avait fait état que de voies de fait et d'une somme d'argent qu'elle avait prêtée au recourant, laquelle lui avait déjà été partiellement remboursée. Cependant, cela s'expliquait par le fait que l'intimée avait déposé plainte dans une petite commune où tout le monde se connaissait et qu'elle pouvait être gênée de parler d'abus sexuels devant le policier du village, ce qui avait d'ailleurs été confirmé par sa demande d'être entendue par le procureur à la fin de l'audition. En outre, l'intimée avait été décrite comme une personne pudique par le médecin qu'elle avait consulté en juillet 2014, et introvertie, calme et réservée par les témoins D._ et E._. On ne distinguait aucune contradiction dans les propos de l'intimée, lorsque celle-ci avait déclaré, une première fois, que la dispute au sujet des sites érotiques avait eu lieu "par la suite", après avoir indiqué que la situation s'était dégradée dans le courant de l'été 2012 et, une seconde fois, que la dispute avait eu lieu au mois d'août 2012.
La cour cantonale a encore exposé que plusieurs messages confirmaient que l'intimée avait subi des violences de la part du recourant. Dans un message du 16 mai 2012, celle-ci avait écrit : "Je t'ai demandé de me rendre le double de ma clé car j'avais peur". Dans un message du 31 août 2012, l'intimée avait indiqué : "J'ai toujours pensé qu'un homme qui frappe une femme était quelque chose qu'on ne voit que dans le film ou un journal à la télé. Jamais je n'aurais cru que ça aurait pu m'arriver à moi. C'est quelque chose de très fort tu sais et je ne me réfère pas à la douleur physique mais au malaise interne...". Dans un message du 7 mars 2013, elle avait écrit : "Dans quelques heures je te pardonnerai car je t'aime trop et je pense ne pas pouvoir vivre sans toi... et toi tu continueras à jouer au tyran, à me parler mal et peut-être... tu sais ce que je veux dire...". Dans un message du 18 juin 2013, l'intimée avait écrit : "Tu m'as mise par terre et t'as posé 2 grosses pierres sur moi ! Pourquoi ?". Dans son message du 23 juin 2013, elle avait indiqué : "Et en plus tu m'as déjà assez frappée : cherche-toi une femme qui aime se faire taper". Enfin, dans un message du 25 août 2013, elle avait écrit : "Mais tu n'as pas honte ? Bonjour... après tout ce que tu m'as fait encore ! Je te jure que si me touches encore je commence à parler !". La cour cantonale a également relevé que l'intimée avait évoqué des actes plus graves devant le témoin D._ - "Si tu savais tout le mal qu'il m'a fait" - et devant le Dr F._, lequel avait déclaré :
"Même si elle n'en a pas parlé directement, elle a laissé sous-entendre qu'il y avait eu des violences « plus graves », peut-être d'ordre sexuel. Elle n'a clairement pas souhaité développer le sujet, probablement par pudeur."
L'autorité précédente a en outre indiqué que l'intimée était apparue crédible et non vindicative durant son audition aux débats de première instance. Elle avait expliqué précisément dans quel contexte le recourant s'était livré à des voies de fait sur elle et l'avait violée et contrainte sexuellement. Celle-ci n'avait pas cherché non plus à "en rajouter", puisqu'elle avait admis que la relation sexuelle de mi-juin 2014, bien qu'ayant débuté dans un climat de violence, avait néanmoins été consentie. On ne pouvait donc en déduire, comme l'affirmait le recourant, que l'intimée avait tout inventé par jalousie. L'autorité précédente s'est donc fondée sur les déclarations jugées crédibles de l'intimée, tout en écartant la version des faits du recourant.
2.3.2. Le recourant reproche tout d'abord à la cour cantonale de s'être fondée sur les déclarations de l'intimée pour établir les faits. Il développe à cet égard une argumentation purement appellatoire, par laquelle il rediscute l'appréciation de la preuve, sans démontrer en quoi l'autorité précédente aurait versé dans l'arbitraire à cet égard. Il en va en particulier ainsi lorsqu'il livre sa propre lecture des déclarations de l'intimée, en tentant d'en déduire une intention vindicative à son encontre, sans démontrer dans quelle mesure l'autorité précédente en aurait tiré des constatations insoutenables. Par ailleurs, la cour cantonale a exposé la raison pour laquelle l'intimée avait uniquement évoqué des voies de fait et une histoire de prêt d'argent devant la police, avant de faire état, devant le ministère public, des infractions à caractère sexuel. Le recourant ne démontre aucunement en quoi cette explication serait arbitraire. Il en va de même lorsque l'intéressé tente de pointer des variations ou contradictions dans les déclarations successives de l'intimée, sans que l'on ne perçoive en quoi l'autorité précédente en aurait tiré des constatations insoutenables.
De même, l'argumentation du recourant est appellatoire et, partant, irrecevable, dans la mesure où elle consiste à décrire les accusations portées par l'intimée comme une manifestation de sa jalousie et de son désir de vengeance. Celui-ci ne démontre aucunement en quoi il aurait été arbitraire, pour la cour cantonale, de considérer que l'intimée n'avait pas inventé les faits décrits et d'écarter, à l'inverse, sa version des événements.
2.3.3. L'argumentation du recourant tombe à faux dans la mesure où elle consiste à affirmer que la cour cantonale se serait exclusivement fondée sur les déclarations de l'intimée pour établir les faits. En effet, contrairement à ce que soutient celui-ci, la cour cantonale pouvait parfaitement, conformément au principe de libre appréciation des preuves (cf. art. 10 al. 2 CPP), forger son intime conviction concernant les faits en se fondant sur les déclarations de l'intimée.
Au demeurant, il ressort du jugement attaqué que l'autorité précédente a également considéré d'autres éléments, en particulier divers messages adressés au recourant par l'intimée entre mai 2012 et août 2013.
2.3.4. Le recourant reproche à la cour cantonale d'avoir retenu que, s'agissant des accusations de violences sexuelles, le témoin D._ avait déclaré qu'il ne pouvait pas se prononcer et n'avait pas de preuves, mais ne serait pas surpris que cela soit vrai. Il fait également grief à l'autorité précédente d'avoir indiqué que le témoin E._ avait déclaré qu'il n'avait aucune preuve, mais penchait plutôt pour la version de l'intimée, qu'il pensait "qu'il y avait eu des faits", mais n'excluait pas que "cela puisse avoir été exagéré".
Concernant les déclarations du témoin E._, on ne voit pas en quoi les constatations de la cour cantonale auraient été arbitraires. Durant l'audition du 17 décembre 2014, après avoir été questionné sur les relations entretenues par le recourant et l'intimée, sur les différends qui avaient opposé ceux-ci, sur les accusations de violences physiques ainsi que sur la question des violences sexuelles, E._ a été prié de se prononcer sur les "accusations" formulées par l'intimée. Le témoin a déclaré qu'il penchait pour la version de celle-ci, sans avoir aucune preuve et sans exclure des exagérations.
S'agissant des déclarations du témoin D._, il ressort certes du procès-verbal d'audition du 10 décembre 2014 que lorsque le prénommé a déclaré qu'il ne pouvait pas se prononcer et n'avait pas de preuves, en ajoutant qu'il ne serait pas "surpris que cela soit vrai", il faisait référence aux violences physiques - et non à caractère sexuel - dont s'était plainte l'intimée. On ne comprend ainsi pas pourquoi la cour cantonale a retenu que ces propos concernaient les "accusations de violence [s] sexuelles" (cf. jugement attaqué p. 14).
Quoi qu'il en soit, il n'apparaît pas que la correction d'un éventuel vice serait, sur ce point, susceptible d'influer sur le sort de la cause (cf. art. 97 al. 1 LTF). En effet, dans le considérant concerné, l'autorité précédente s'attachait à examiner, d'une part, dans quelle mesure les témoins entendus avaient confirmé le fait que l'intimée et le recourant entretenaient une relation de couple et, d'autre part, s'ils avaient prêté foi aux "accusations de violence" portées par l'intimée. La cour cantonale s'est principalement référée aux témoignages de D._ et de E._ pour établir la relation de couple, dont le recourant contestait l'existence. Elle a ensuite rapporté, à propos des accusations litigieuses, qu'aucun des deux prénommés n'avait assisté à un épisode violent ni ne disposait d'une preuve en la matière, sans pour autant estimer que ces mises en cause seraient apparues d'emblée extravagantes ou dénuées de crédibilité. La cour cantonale a déduit de l'ensemble des déclarations de ces deux témoins que ces derniers avaient corroboré, "dans une certaine mesure", la version des faits de l'intimée. Il apparaît cependant que si elle a admis l'existence d'une relation de couple entre les intéressés en se fondant sur ces témoignages, tel n'a pas été le cas des viols et contraintes sexuelles, ces faits ayant été retenus - comme s'en est d'ailleurs plaint le recourant - essentiellement sur la base des déclarations de l'intimée.
Pour le reste, on ne voit pas en quoi la cour cantonale aurait tiré des constatations insoutenables des témoignages concernés, dès lors qu'elle a précisément rapporté le caractère peu affirmatif, les incertitudes et réserves des témoins concernant les accusations portées par l'intimée.
2.3.5. Le recourant affirme encore que la cour cantonale aurait dû considérer que les premières déclarations de l'intimée au ministère public avaient été si "incongrues" que celui-ci ne les aurait pas jugées crédibles. L'impression alors produite par les propos de l'intimée est toutefois sans pertinence, dès lors qu'il appartenait à la cour cantonale d'apprécier librement les preuves (cf. art. 10 al. 2 CPP) et d'établir les faits avec un plein pouvoir d'examen (cf. art. 398 al. 2 CPP).
2.3.6. Le recourant reproche à la cour cantonale de s'être fondée sur les messages produits par l'intimée, lesquels feraient selon lui "dire aux mots tout et son contraire". Si le recourant livre son avis sur le développement des technologies numériques et s'interroge sur les raisons pour lesquelles la cour cantonale n'a pas ordonné la production de l'intégralité des échanges électroniques entre les parties - sans prétendre par ailleurs qu'il aurait quant à lui formulé une telle réquisition de preuve -, il ne démontre aucunement en quoi l'autorité précédente aurait tiré des constatations insoutenables des quelques messages auxquels elle s'est référée dans son appréciation des preuves. Il présente par ailleurs un exemple théorique censé illustrer les manipulations possibles en matière de découpage des conversations électroniques, sans toutefois exposer dans quelle mesure les messages retenus à sa charge auraient d'une quelconque manière été altérés ou mal interprétés par la cour cantonale. Ainsi, il ne démontre aucun arbitraire dans l'appréciation des preuves sur ce point.
2.3.7. Enfin, le recourant se réfère à divers arrêts du Tribunal fédéral portant sur des griefs d'arbitraire dans l'appréciation des preuves et l'établissement des faits. On voit mal ce qu'il entend en déduire, dès lors que l'appréciation portée par le Tribunal fédéral sur une décision cantonale en matière d'établissement des faits ne peut être transposée à une autre affaire, fût-elle relative à des infractions similaires.
2.4. Il découle de ce qui précède que le grief doit être rejeté dans la mesure où il est recevable.
3.
Au vu de ce qui précède, le recours doit être rejeté dans la mesure où il est recevable. Comme il était dénué de chances de succès, la requête d'assistance judiciaire doit également être rejetée (art. 64 al. 1 LTF). Le recourant devra donc supporter les frais judiciaires (art. 66 al. 1 LTF), dont le montant sera toutefois fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable (art. 65 al. 2 LTF). L'intimée, qui n'a pas été invitée à se déterminer, ne saurait prétendre à des dépens.
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La requête d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 15 mars 2018
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa