?? translatorservice.java
字號:
// Copyright 2003 Nokia Corporation.
//
// THIS SOURCE CODE IS PROVIDED 'AS IS', WITH NO WARRANTIES WHATSOEVER,
// EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF MERCHANTABILITY, FITNESS
// FOR ANY PARTICULAR PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE
// OR TRADE PRACTICE, RELATING TO THE SOURCE CODE OR ANY WARRANTY OTHERWISE
// ARISING OUT OF ANY PROPOSAL, SPECIFICATION, OR SAMPLE AND WITH NO
// OBLIGATION OF NOKIA TO PROVIDE THE LICENSEE WITH ANY MAINTENANCE OR
// SUPPORT. FURTHERMORE, NOKIA MAKES NO WARRANTY THAT EXERCISE OF THE
// RIGHTS GRANTED HEREUNDER DOES NOT INFRINGE OR MAY NOT CAUSE INFRINGEMENT
// OF ANY PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OWNED OR CONTROLLED
// BY THIRD PARTIES
//
// Furthermore, information provided in this source code is preliminary,
// and may be changed substantially prior to final release. Nokia Corporation
// retains the right to make changes to this source code at
// any time, without notice. This source code is provided for informational
// purposes only.
//
// Nokia and Nokia Connecting People are registered trademarks of Nokia
// Corporation.
// Java and all Java-based marks are trademarks or registered trademarks of
// Sun Microsystems, Inc.
// Other product and company names mentioned herein may be trademarks or
// trade names of their respective owners.
//
// A non-exclusive, non-transferable, worldwide, limited license is hereby
// granted to the Licensee to download, print, reproduce and modify the
// source code. The licensee has the right to market, sell, distribute and
// make available the source code in original or modified form only when
// incorporated into the programs developed by the Licensee. No other
// license, express or implied, by estoppel or otherwise, to any other
// intellectual property rights is granted herein.
package example.translator;
import java.rmi.RemoteException;
import java.util.Locale;
import java.util.Properties;
public class TranslatorService
implements Translator
{
// The language options (i.e. the inputLocale and outputLocale)
// are strings should that follow the IETF RFC 3066 'Tags for the
// Identification of Languages'. Only simple language tags like
// "en" and "pt" are currently used.
private final static String[] locales = { "de",
"en",
"es",
"fr",
"it",
"pt" };
private final static int DE = 0;
private final static int EN = 1;
private final static int ES = 2;
private final static int FR = 3;
private final static int IT = 4;
private final static int PT = 5;
private String[] getOutputLocales(String inputLocale)
throws RemoteException
{
// The service's options for translating text from one language
// to another may depend on the input language.
String[] deTranslationOptions = { locales[EN], locales[FR] };
String[] enTranslationOptions = { locales[ES],
locales[DE],
locales[FR],
locales[IT],
locales[PT] };
String[] esTranslationOptions = { locales[EN] };
String[] frTranslationOptions = { locales[DE], locales[EN] };
String[] itTranslationOptions = { locales[EN] };
String[] ptTranslationOptions = { locales[EN] };
if (inputLocale.startsWith(locales[DE]))
{
return deTranslationOptions;
}
else if (inputLocale.startsWith(locales[EN]))
{
return enTranslationOptions;
}
else if (inputLocale.startsWith(locales[ES]))
{
return esTranslationOptions;
}
else if (inputLocale.startsWith(locales[FR]))
{
return frTranslationOptions;
}
else if (inputLocale.startsWith(locales[IT]))
{
return itTranslationOptions;
}
else if (inputLocale.startsWith(locales[PT]))
{
return ptTranslationOptions;
}
else
{
String msg = errorString("Translation not supported for " +
'"' + inputLocale + '"');
throw new RemoteException(msg);
}
}
private boolean isTranslationSupported(String inputLocale,
String outputLocale)
throws RemoteException
{
String[] supportedOutputLocales = getOutputLocales(inputLocale);
int i;
for (i = 0; i < supportedOutputLocales.length; i++)
{
if (supportedOutputLocales[i].startsWith(
outputLocale.substring(0, 1)))
{
break;
}
}
if (i == supportedOutputLocales.length)
{
return false;
}
else
{
return true;
}
}
public String getTranslation(String inputLocale,
String outputLocale,
String inputText)
throws RemoteException
{
if (isTranslationSupported(inputLocale, outputLocale))
{
// Note: A real translation service should be used
// instead of the simple dummy 'test' implementation below.
return dummyGetTranslation(inputLocale,
outputLocale,
inputText);
}
else
{
String msg = errorString("Translation not supported from " +
'"' + inputLocale + '"' + " to " +
'"' + outputLocale + '"');
throw new RemoteException(msg);
}
}
// An overly simplified implementation of a translation service.
// It only translates a small pre-defined set of phrases.
private String dummyGetTranslation(String inputLocale,
String outputLocale,
String inputText)
throws RemoteException
{
// Each row contains a phrase translated in the
// following order: DE, EN, ES, FR, IT, PT
String[][] phrases =
{
{ "katze", "cat", "gato", "chat", "gatto", "gato" },
{ "hallo", "hello", "hola", "bonjour", "ciao", "ol
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -