Tuyên bố từ chối trách nhiệm: Mặc dù tôi chắc chắn tìm thấy mã thông báo là phương tiện nghi ngờ dịch, chia nhỏ các câu như minh họa sau bằng cách gõ có thể tạo ra kết quả đáp ứng yêu cầu của bạn.
Tôi đã đề xuất rằng mã của anh ấy có thể được cải thiện bằng cách giảm 30 dòng xâu chuỗi thành chuỗi 1 dòng mà anh ta yêu cầu in another question nhưng đề xuất không được nhận rõ.
Đây là một thực hiện sử dụng google api for .net trong VB và CSharp
Program.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using Google.API.Translate;
namespace TokenizingTranslatorCS
{
internal class Program
{
private static readonly TranslateClient Client =
new TranslateClient("http://code.google.com/p/google-api-for-dotnet/");
private static void Main(string[] args)
{
Language originalLanguage = Language.English;
Language targetLanguage = Language.German;
string filename = args[0];
StringBuilder output = new StringBuilder();
string[] input = File.ReadAllLines(filename);
foreach (string line in input)
{
List<string> translatedSentences = new List<string>();
string[] sentences = Regex.Split(line, "\\b(?<sentence>.*?[\\.!?](?:\\s|$))");
foreach (string sentence in sentences)
{
string sentenceToTranslate = sentence.Trim();
if (!string.IsNullOrEmpty(sentenceToTranslate))
{
translatedSentences.Add(TranslateSentence(sentence, originalLanguage, targetLanguage));
}
}
output.AppendLine(string.Format("{0}{1}", string.Join(" ", translatedSentences.ToArray()),
Environment.NewLine));
}
Console.WriteLine("Translated:{0}{1}{0}", Environment.NewLine, string.Join(Environment.NewLine, input));
Console.WriteLine("To:{0}{1}{0}", Environment.NewLine, output);
Console.WriteLine("{0}Press any key{0}", Environment.NewLine);
Console.ReadKey();
}
private static string TranslateSentence(string sentence, Language originalLanguage, Language targetLanguage)
{
string translatedSentence = Client.Translate(sentence, originalLanguage, targetLanguage);
return translatedSentence;
}
}
}
Module1.vb
Imports System.Text.RegularExpressions
Imports System.IO
Imports System.Text
Imports Google.API.Translate
Module Module1
Private Client As TranslateClient = New TranslateClient("http://code.google.com/p/google-api-for-dotnet/")
Sub Main(ByVal args As String())
Dim originalLanguage As Language = Language.English
Dim targetLanguage As Language = Language.German
Dim filename As String = args(0)
Dim output As New StringBuilder
Dim input As String() = File.ReadAllLines(filename)
For Each line As String In input
Dim translatedSentences As New List(Of String)
Dim sentences As String() = Regex.Split(line, "\b(?<sentence>.*?[\.!?](?:\s|$))")
For Each sentence As String In sentences
Dim sentenceToTranslate As String = sentence.Trim
If Not String.IsNullOrEmpty(sentenceToTranslate) Then
translatedSentences.Add(TranslateSentence(sentence, originalLanguage, targetLanguage))
End If
Next
output.AppendLine(String.Format("{0}{1}", String.Join(" ", translatedSentences.ToArray), Environment.NewLine))
Next
Console.WriteLine("Translated:{0}{1}{0}", Environment.NewLine, String.Join(Environment.NewLine, input))
Console.WriteLine("To:{0}{1}{0}", Environment.NewLine, output)
Console.WriteLine("{0}Press any key{0}", Environment.NewLine)
Console.ReadKey()
End Sub
Private Function TranslateSentence(ByVal sentence As String, ByVal originalLanguage As Language, ByVal targetLanguage As Language) As String
Dim translatedSentence As String = Client.Translate(sentence, originalLanguage, targetLanguage)
Return translatedSentence
End Function
End Module
Input (bị đánh cắp trực tiếp từ typoking)
để chứng minh một điểm tôi đã ném này với nhau :) Đó là thô xung quanh các cạnh , nhưng nó sẽ xử lý một lô WHOLE của văn bản và nó chỉ tốt như Google cho độ chính xác bản dịch vì nó sử dụng API Google. Tôi đã xử lý toàn bộ số tài khoản SEC 10-K của Apple với mã này và nhấp vào nút một lần (mất khoảng 45 phút). Kết quả về cơ bản giống hệt với những gì bạn sẽ nhận được nếu bạn sao chép và dán một câu vào một thời điểm vào Google Translator. Nó không hoàn hảo (dấu câu kết thúc không chính xác và tôi không viết vào tệp văn bản từng dòng), nhưng nó hiển thị bằng chứng của khái niệm. Có thể có dấu chấm câu tốt hơn nếu bạn đã làm việc với Regex một số thông tin khác.
Kết quả (sang tiếng Đức cho typoking):
Chỉ cần để chứng minh một điểm ném Tôi làm điều này cùng nhau :) Đó là cạnh thô , nhưng có rất nhiều công việc xung quanh văn bản và nó đau quá tốt như Google về tính chính xác của bản dịch vì nó sử dụng API của Google . Tôi xử lý toàn bộ 2005 SEC 10-K nộp đơn của Apple với mã này và bấm vào một nút (mất khoảng 45 phút). Các kết quả là giống hệt nhau đáng kể với những gì bạn sẽ nhận được nếu bạn sao chép và dán một bộ trong một thời gian khi Google Translator. Nó không hoàn hảo (kết thúc chấm câu là không chính xác và Tôi không muốn trong file văn bản từng dòng) viết, nhưng nó cho thấy bằng chứng của khái niệm. Nó sẽ chấm câu tốt hơn nếu bạn làm việc với regex một số chi tiết.
Không lập trình liên quan. Bỏ phiếu để chuyển sang Super User. –
@David_Thornley Anh ấy yêu cầu một API dịch các văn bản lớn một cách có lập trình .. làm thế nào mà chương trình đó không liên quan? – Marcelo
điều này chắc chắn là lập trình có liên quan –