Faits :
A.
La société Z._ Sàrl, à Genève, se consacre à l'organisation de voyages en Afrique et dans d'autres régions. Au cours de l'année 2006, elle a organisé plusieurs voyages à l'intention de X._ et de sa famille. Les prix acquittés par la cliente se sont élevés au total d'environ 215'000 francs.
Par télécopie du 10 janvier 2007, la société a adressé à sa cliente un itinéraire « provisoirement réservé » au Kenya pour la « famille X._ », du dimanche 22 juillet au jeudi 16 août 2007. Une confirmation devait être transmise sans délai car les hébergements choisis étaient « très prisés ». Le prix de l'ensemble des prestations énumérées s'élevait à « environ » 101'150 fr., vols internationaux en sus. Les modalités de l'offre étaient exposées comme suit:
Toutes nos offres sont sujettes aux disponibilités des camps/lodges au moment de la réservation, aux fluctuations des cours de change ainsi qu'aux augmentations des contreparties.
Sur acceptation d'une offre, un dépôt de 25% non remboursable est demandé pour garantir les réservations.
Le solde du séjour est payable huit semaines avant le départ, après quoi vous recevrez votre itinéraire final avec contacts et justificatifs. Dans le cas où nous ayons à augmenter le coût du séjour lors de la facture finale (différence de cours de change ou augmentation du prix des vols internes - coûts imprévisibles), nous nous réservons le droit de facturer un complément au coût total.
Si vous désirez payer le montant total lors de la réservation, ce petit risque peut être évité.
Si vous désirez payer le montant total lors de la réservation, ce petit risque peut être évité.
- . Une assurance de voyage couvrant les frais en cas d'annulation est indispensable.
Selon la gérante de la société, la cliente a donné son accord par téléphone le 16 janvier 2007.
La gérante et la cliente ont ensuite communiqué par messages SMS. La cliente a demandé « Bonjour, tjr ok vacances aout ? » et « Bonjour, tjr ok pr afrique ? », respectivement le 19 mars et le 27 mai 2007. Le 20 mars, elle s'est fait rappeler la date du départ; le 31 mai, parce qu'elle envisageait l'invitation d'amis, elle a demandé le nombre des chambres à sa disposition dans l'un des hébergements.
Le 31 mai 2007, la société a établi et transmis une facture au montant de 101'150 fr. pour l'itinéraire concerné, « payable à réception », sous déduction de 4'420 fr. qui devaient être restitués à la cliente en relation avec un autre voyage.
Par message SMS du 12 juin, la cliente a demandé l'accord de la gérante en vue de payer « tout en juillet », en raison de l'importance de la somme et d'un manque de liquidités. La gérante a répondu le lendemain qu'elle devait payer l'un des hébergements le 23 juin au plus tard.
Par message du 2 juillet, la cliente a fait savoir qu'elle renonçait au voyage pour des raisons familiales.
Une correspondance s'est poursuivie au sujet des frais d'annulation réclamés par la société. La cliente envisageait un report du voyage à l'année suivante ou un voyage plus bref et réduit à deux personnes. En définitive, aucun accord n'a été trouvé et la cliente s'est refusée à tout paiement.
Deux établissements touristiques au Kenya ont adressé à la société leurs factures relatives à des prestations que celle-ci avait commandées pour le compte de sa cliente, l'une datée du 5 juillet 2007 pour 11'800 dollars étasuniens, l'autre du 30 juillet pour 25'845 dollars, soit 37'645 dollars au total.
B.
Le 4 septembre 2009, Z._ Sàrl a ouvert action contre X._ devant le Tribunal civil de l'arrondissement de la Côte. La défenderesse devait être condamnée à payer 45'155 fr., 4'615 fr.50 et 100 fr. avec intérêts au taux de 5% par an, respectivement dès le 16 novembre 2007, le 28 novembre 2007 et le 28 novembre 2008.
La défenderesse a conclu au rejet de l'action. Elle avait préalablement obtenu l'autorisation d'appeler en cause son époux, dont elle avait par ailleurs entrepris de divorcer; elle a pris des conclusions récursoires contre lui.
La demanderesse a modifié ses conclusions en ce sens que la défenderesse et l'appelé en cause devaient être condamnés à payer solidairement les montants déjà en litige.
L'appelé en cause n'a pas procédé.
Le tribunal s'est prononcé le 18 janvier 2013. Selon son jugement, la demanderesse n'a droit qu'au remboursement des sommes réclamées par les deux établissements kenyans, et ce remboursement doit lui être alloué dans la monnaie correspondante, nonobstant les conclusions articulées en francs suisses. Le tribunal a donc condamné les deux époux à payer solidairement 37'645 dollars étasuniens à la demanderesse, sous déduction de 4'420 fr., avec intérêts dès le 16 novembre 2007; le taux d'intérêts n'est pas précisé. Le tribunal a condamné l'appelé en cause à relever la défenderesse de 13'175,75 dollars, sous déduction de 1'547 fr., avec intérêts dès la même date.
La défenderesse a appelé du jugement pour réclamer d'être libérée de toute obligation envers la demanderesse; cette partie-ci a conclu au rejet de l'appel et à la confirmation du jugement.
La Cour d'appel civile du Tribunal cantonal a statué le 16 mai 2014; elle a rejeté l'appel et confirmé le jugement.
C.
Agissant par la voie du recours en matière civile, la défenderesse requiert le Tribunal fédéral de réformer l'arrêt de la Cour d'appel en ce sens qu'elle soit libérée de toute obligation envers la demanderesse.
La demanderesse conclut au rejet du recours.
Les parties ont spontanément déposé une réplique et une duplique.
Considérant en droit :
1.
Dans les affaires pécuniaires qui ne concernent ni le droit du travail ni le droit du bail à loyer, le recours en matière civile est recevable à condition que la valeur litigieuse s'élève à 30'000 fr. au moins (art. 74 al. 1 let. b LTF). Cette valeur est déterminée d'après les conclusions restées litigieuses devant l'autorité précédente (art. 51 al. 1 let. a LTF). Selon la jurisprudence, lorsque lesdites conclusions portaient sur une somme d'argent en monnaie étrangère, celle-ci doit être convertie en francs suisses d'après son cours au jour de l'ouverture de l'action (ATF 48 II 412; 63 II 34 p. 35; arrêt 4A_274/2011 du 3 novembre 2011, consid. 1, SJ 2012 I 160).
Au 4 septembre 2009, jour de l'introduction de la demande devant le Tribunal civil, le montant de 37'645 dollars équivalait à 39'910 francs. Après déduction de 4'420 fr., l'appel portait donc sur 35'490 francs.
La jurisprudence précitée, relative à la date déterminante pour la conversion des conclusions en monnaie étrangère, est exclusivement issue de contestations où la partie demanderesse avait d'emblée, dès l'introduction de sa demande en justice, réclamé une prestation en monnaie étrangère. La présente affaire s'en distingue car les conclusions de la demanderesse, devant le Tribunal civil, n'ont jamais été libellées en dollars mais seulement en francs suisses. La défenderesse n'a pas non plus articulé de conclusions subsidiaires en dollars; le tribunal l'a néanmoins condamnée à une prestation dans cette monnaie-ci. Dans ce contexte, la date déterminante pour la conversion pourrait prêter à discussion, celle du jugement de première instance semblant préférable à celle de l'introduction de la demande en justice. Quoiqu'il en soit, au 18 janvier 2013, le montant de 37'645 dollars équivalait encore à 35'083 fr., de sorte que la valeur litigieuse minimale de 30'000 fr. était dépassée même après déduction de 4'420 francs.
Sous réserve des exigences concernant la motivation des griefs, les conditions de recevabilité du recours en matière civile sont par ailleurs satisfaites.
2.
Les autorités précédentes retiennent que les parties se sont liées par un contrat de voyage à forfait soumis à la loi fédérale du 18 juin 1993 sur les voyages à forfait (RS 944.3). Elles condamnent la défenderesse à rembourser les frais que la demanderesse a assumés en vue de l'exécution de ce contrat, établis par les deux factures de 11'800 et 25'845 dollars, au total de 37'645 dollars.
3.
La défenderesse conteste d'abord qu'un contrat soit venu à chef entre les parties.
Selon les art. 1er et 6 CO, un contrat est conclu lorsque les parties ont manifesté leur volonté de manière réciproque et concordante (art. 1er al. 1). Ces manifestations de volonté peuvent être tacites (art. 1er al. 2). Lorsque l'auteur de l'offre ne devait pas s'attendre à une acceptation expresse, en raison de la nature spéciale de l'affaire ou des circonstances, le contrat est réputé conclu si le destinataire ne l'a pas refusée dans un délai convenable (art. 6).
Des pourparlers ont débuté dès le 10 janvier 2007 avec la transmission à la défenderesse d'un itinéraire proposé au prix de 101'150 fr. « environ ». Il n'est pas établi que la demanderesse ait plus tard, lors d'un entretien téléphonique, précisé son offre en tant que le prix n'était articulé que de manière ambiguë, et que la défenderesse ait alors accepté cette offre.
En considération du principe de la confiance qui régit l'interprétation des déclarations et manifestations de volonté entre cocontractants (cf. ATF 135 III 410 consid. 3.2 p. 412; 133 III 675 consid. 3.3 p. 681), aucun des messages SMS « Bonjour, tjr ok vacances aout ? » et « Bonjour, tjr ok pr afrique ? » ne pouvait être compris comme une acceptation de la défenderesse; celle-ci demandait plutôt si l'offre était maintenue, et, implicitement, elle invitait la demanderesse à attendre encore. Les deux autres messages n'exprimaient non plus aucune acceptation dépourvue d'ambiguïté, propre à obliger la défenderesse.
Le 31 mai 2007, la demanderesse a transmis une facture au montant de 101'150 fr. pour l'itinéraire déjà proposé, « payable à réception ». L'offre était alors en suspens depuis plusieurs mois et la date du départ approchait. Au regard de cette situation et du principe de la confiance déjà mentionné, la demanderesse pouvait raisonnablement s'attendre à un refus rapide et explicite de sa cliente, dans l'éventualité où celle-ci, en définitive, n'aurait pas voulu passer commande du voyage. Or, la défenderesse a laissé passer près de dix jours sans se manifester; il s'ensuit qu'un contrat a été conclu par l'effet de l'art. 6 CO, correspondant à l'itinéraire proposé et à la facture.
Les prestations convenues s'inscrivent exactement dans la définition du voyage à forfait qui est consacrée par l'art. 1er al. 1 de la loi fédérale de 1993. La défenderesse s'est ainsi obligée à payer le prix global à hauteur de 101'150 francs. Aucune convention entre les parties ni aucune disposition légale n'autorisait la cliente à se départir du contrat et à se libérer de cette obligation au seul motif qu'elle renonçait au voyage pour des raisons familiales. La défenderesse est donc restée débitrice de ce prix. En tant que l'arrêt de la Cour d'appel ne la condamne qu'à une prestation en argent de valeur nettement inférieure, elle n'est pas fondée à se plaindre d'une application incorrecte du droit.
4.
La défenderesse conteste également qu'elle puisse être condamnée à verser des dollars alors que la demande en justice portait sur des francs suisses.
4.1. A teneur de l'art. 84 CO, le paiement d'une dette qui a pour objet une somme d'argent se fait en moyens de paiement ayant cours légal dans la monnaie due. Selon la jurisprudence relative à cette règle, le dispositif d'une décision par laquelle le juge reconnaît une prétention en argent ne peut être libellé que dans la monnaie effectivement due au créancier (ATF 134 III 151 consid. 2.4 et 2.5 p. 155). Le Tribunal fédéral n'a jusqu'ici pas élucidé si le droit de procédure civile autorise le juge à allouer une prétention dans la monnaie étrangère due selon le droit des obligations, alors qu'il est saisi de conclusions libellées en francs. Le tribunal a réservé cette question juridique alors que le code de procédure civile unifié (CPC) n'était pas encore introduit et que la matière relevait du droit cantonal (même arrêt, consid. 2.4 in fine p. 156; voir aussi ATF 74 II 81 p. 90 in fine).
Le code unifié est entré en vigueur le 1er janvier 2011 et la présente contestation était à ce moment pendante devant le Tribunal civil. Par l'effet des art. 404 al. 1 et 405 al. 1 CPC, la procédure devant ce tribunal est demeurée soumise au droit cantonal tandis que l'appel était régi par le code unifié.
4.2. Aux termes de l'art. 3 CPC vaud., déterminant pour la procédure de première instance selon ces règles transitoires, le juge était lié par les conclusions des parties; il pouvait les réduire, mais non les augmenter ni les changer. Dans l'arrêt présentement attaqué, la Cour d'appel retient que cette règle de droit cantonal n'autorisait pas le Tribunal civil à allouer des dollars sur la base des conclusions libellées en francs. Aucune des parties ne conteste l'arrêt sur ce point et le Tribunal fédéral ne saurait intervenir d'office; le jugement du premier degré était donc vicié.
Le jugement était d'ailleurs aussi vicié au regard de l'art. 84 CO. En effet, le contrat conclu obligeait la défenderesse à payer le prix global convenu. Il était loisible à la demanderesse de renoncer partiellement à sa prétention et de décomposer ses conclusions, dans sa demande en justice, en divers montants dont le total était inférieur à ce prix. En revanche, aucune clause contractuelle ni aucune disposition légale ne l'autorisaient à réclamer et à obtenir autre chose que le prix. Dans l'économie du contrat de voyage à forfait, le prix global doit évidemment couvrir le coût des diverses prestations composant le voyage; néanmoins, sur le plan juridique, ce coût incombe exclusivement à l'organisateur et le contrat n'oblige pas son client - le consommateur, selon le vocabulaire de la loi - à lui rembourser ses frais. Les parties ayant convenu d'un prix global en francs suisses, c'est cette monnaie qui était due par la défenderesse, cela quelle que fussent la ou les autres monnaies dans lesquelles la demanderesse s'était elle-même engagée. La demanderesse avait donc dûment libellé ses conclusions en francs suisses. Allouant des dollars à la place de cette monnaie-ci, le jugement du Tribunal civil était contraire à l'art. 84 CO.
4.3. En dépit du vice de procédure constaté par elle, la Cour d'appel n'a pas réformé le jugement. Elle a considéré que parce que la valeur du dollar avait diminué par rapport à celle du franc suisse, entre le mois de juillet 2007 et le jour de son prononcé, une conversion dans cette monnaie-ci aurait eu pour conséquence une reformatio in peius au détriment de la défenderesse. En réalité, il apparaît surtout qu'en raison de cette variation de valeur qui lui était avantageuse, la défenderesse n'avait pas d'intérêt à critiquer le jugement du premier degré en tant que celui-ci la condamnait à payer des dollars. Or, l'appel doit répondre à un intérêt digne de protection de la partie qui l'introduit, sans quoi il est irrecevable (Martin Sterchi, in Commentaire bernois, nos 25 ss in remarques préliminaires ad art. 308 CPC; Francesco Trezzini, in Commentario al Codice di diritto processuale civile svizzero, 2011, p. 1344 et ss). La Cour aurait donc dû déclarer l'appel de la défenderesse partiellement irrecevable, et le rejeter pour le surplus. Dans son résultat sinon dans sa motivation, l'arrêt attaqué se révèle conforme au droit fédéral déterminant pour la procédure d'appel.
A teneur de l'art. 42 al. 1 et 2 LTF, le recours adressé au Tribunal fédéral doit être motivé (al. 1) et les motifs doivent exposer succinctement en quoi la décision attaquée viole le droit (2). La partie recourante doit discuter les motifs de cette décision et indiquer précisément en quoi elle estime que l'autorité précédente a méconnu le droit. Il n'est pas indispensable que cette partie désigne précisément les dispositions légales ou les principes non écrits qu'elle tient pour violés; il est toutefois indispensable qu'à la lecture de son exposé, on comprenne clairement quelles règles ont été prétendument transgressées (ATF 140 III 86 consid. 2 p. 89). En l'occurrence, la défenderesse se plaint d'arbitraire mais son argumentation ne permet pas de reconnaître en quoi elle aurait eu intérêt à ce que la Cour d'appel, dans sa décision, convertît le montant de 37'645 dollars mis à sa charge par le jugement du premier degré. Il s'ensuit que le recours en matière civile doit être rejeté en tant que son auteur conteste avoir conclu un contrat avec l'autre partie, et déclaré irrecevable pour le surplus, faute d'une motivation suffisante.
5.
A titre de partie qui succombe, la défenderesse doit acquitter l'émolument à percevoir par le Tribunal fédéral et les dépens auxquels l'autre partie peut préten dre.
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté, dans la mesure où il est recevable.
2.
La défenderesse acquittera un émolument judiciaire de 2'000 francs.
3.
La défenderesse versera une indemnité de 2'500 fr. à la demanderesse, à titre de dépens.
4.
Le présent arrêt est communiqué aux parties et au Tribunal cantonal du canton de Vaud.
Lausanne, le 12 mars 2015
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La présidente : Kiss
Le greffier : Thélin