using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using Google.API;
namespace translatorAddIns
{
public partial class PanelTranslator : UserControl
{
string appID = "5491084F42C447543403B9FCC7C379A25F8612D4";
List<string> srcTypeBing, destTypeBing;
List<string> srcTypeBingName, destTypeBingName;
List<string> srcTypeGoogle, destTypeGoogle;
TranslatorService.LanguageServiceClient translatorServ;
public PanelTranslator()
{
InitializeComponent();
}
/// <summary>
/// menyiapkan pilihan bahasa yang disediakan oleh Bing maupun Google dan menyimpannya dalam memori
/// sehingga tidak perlu merequest pilihan bahasa setiap kali pengguna berpindah layanan penerjemah
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void panelTranslator_Load(object sender, EventArgs e)
{
translatorServ = new TranslatorService.LanguageServiceClient();
srcTypeGoogle = Google.API.Translate.LanguageUtility.LanguageCollection.Select(a => a.ToString()).ToList();
destTypeGoogle = Google.API.Translate.LanguageUtility.LanguageCollection.Select(a => a.ToString()).ToList();
srcTypeBing = translatorServ.GetLanguages(appID).ToList();
destTypeBing = translatorServ.GetLanguages(appID).ToList();
srcTypeBingName = translatorServ.GetLanguageNames(appID, "en").ToList();
destTypeBingName = translatorServ.GetLanguageNames(appID, "en").ToList();
updateBing();
}
/// <summary>
/// menterjemahkan teks pada dokumen yang sedang aktif
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonTerjemahkan_Click(object sender, EventArgs e)
{
String teks,src,dest;
//cara mendapatkan teks yang ada pada dokumen aktif
teks = Globals.ThisAddIn.Application.ActiveDocument.Content.Text;
//menggunakan try-catch agar jika terjadi error aplikasi tidak langsung not responding
try
{
if (rbBing.Checked) //pengguna memilih Bing
{
src = srcTypeBing[cbSrcLang.SelectedIndex];
dest = destTypeBing[cbDestLang.SelectedIndex];
txtDest.Text = translatorServ.Translate(appID, teks, src, dest);
}
else if (rbGoogle.Checked) //pengguna memilih Google
{
src = srcTypeGoogle[cbSrcLang.SelectedIndex];
dest = destTypeGoogle[cbDestLang.SelectedIndex];
txtDest.Text = Google.API.Translate.Translator.Translate(teks, GetLang(src), GetLang(dest));
}
}
catch (Exception ex)
{
MessageBox.Show("Oops.. Sorry, " + ex.Message);
}
}
/// <summary>
/// mendeteksi bahasa dari teks yang ingin diterjemahkan
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonDeteksi_Click(object sender, EventArgs e)
{
String teks = Globals.ThisAddIn.Application.ActiveDocument.Content.Text;
if (rbBing.Checked) MessageBox.Show(translatorServ.Detect(appID, teks));
else if (rbGoogle.Checked)
{
bool reliable;
double confidence;
MessageBox.Show(Google.API.Translate.Translator.Detect(teks,out reliable,out confidence).ToString());
}
}
/// <summary>
/// pengguna melakukan perubahan pilihan layanan penerjemah
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void rbBing_CheckedChanged(object sender, EventArgs e)
{
if (rbBing.Checked) updateBing();
else if (rbGoogle.Checked) updateGoogle();
}
private void rbGoogle_CheckedChanged(object sender, EventArgs e)
{
if (rbBing.Checked) updateBing();
else if (rbGoogle.Checked) updateGoogle();
}
/// <summary>
/// mengisikan pilihan bahasa yang didukung Bing
/// </summary>
void updateBing()
{
cbSrcLang.Items.Clear();
cbSrcLang.Items.AddRange(srcTypeBingName.ToArray());
cbSrcLang.SelectedIndex = 0;
cbDestLang.Items.Clear();
cbDestLang.Items.AddRange(destTypeBingName.ToArray());
cbDestLang.SelectedIndex = 0;
}
/// <summary>
/// mengisikan pilihan bahasa yang didukung Google
/// </summary>
void updateGoogle()
{
cbSrcLang.Items.Clear();
cbSrcLang.Items.AddRange(srcTypeGoogle.ToArray());
cbSrcLang.SelectedIndex = 0;
cbDestLang.Items.Clear();
cbDestLang.Items.AddRange(destTypeGoogle.ToArray());
cbDestLang.SelectedIndex = 0;
}
/// <summary>
/// mendapatkan objek Language dari language yang sedang aktif, hanya dipakai untuk translate dengan Google
/// </summary>
/// <param name="lang"></param>
/// <returns></returns>
public static Language GetLang(string lang)
{
foreach (Language lgg in Google.API.Translate.LanguageUtility.TranslatableCollection)
{
if (lgg.ToString().Equals(lang)) return lgg;
}
return Language.English;
}
}
}