All pastes #297930 Raw Edit

Unnamed

public text v1 · immutable
#297930 ·published 2006-12-31 12:18 UTC
rendered paste body
// ETH32 - an Enemy Territory cheat for windows
// Copyright (c) 2007 eth32 team
// www.cheatersutopia.com & www.nixcoders.org

#include "eth32.h"

struct {
	char *src;
	char *tgt;
} langPairs[] = {
	{ "en", "fr" },
	{ "en", "de" },
	{ "en", "nl" },
	{ "en", "it" },
	{ "en", "pt" },
	{ "en", "es" },
};

HANDLE trHandle = NULL;
DWORD translateText(const char *lang1, const char *lang2, const char *text);

void translateCommand(void)
{
	static int pairs = sizeof(langPairs) / sizeof(langPairs[0]);

	int argc = Syscall.UI_Argc();

	if (argc != 4)
	{
		orig_syscall(UI_PRINT, "^dERROR: ^nWrong syntax.\n");
		orig_syscall(UI_PRINT, "^dUSAGE: ^n" ETH32_PREFIX "translate lang1 lang2 your text here\n");
		return;
	}

	const char *lang1 = Syscall.UI_Argv(1);
	const char *lang2 = Syscall.UI_Argv(2);
	const char *text = Syscall.UI_Argv(3);

	Debug.Log("Pairs: %s %s [ %s ]", lang1, lang2, text);

	int c = 0;
	for (; c < pairs; c++)
		if (!strcmp(lang1, langPairs[c].src) && !strcmp(lang2, langPairs[c].tgt))
			break;

	if (c == pairs)
	{
		orig_syscall(UI_PRINT, "^dERROR: ^nWrong language pair!\n");
		return;
	}

	if (trHandle)
	{
		orig_syscall(UI_PRINT, "^dERROR: ^nAnother text is currently being translated, try again later.\n");
		return;
	}

	orig_syscall(UI_PRINT, "^dTranslating..\n");
	trHandle = CTHREAD(translateText(lang1, lang2, text));
}

DWORD translateText(const char *lang1, const char *lang2, const char *text)
{
	// query babelfish code will be here
	
	CloseHandle(trHandle);
	trHandle = NULL;
	return 0;
}