Az automatikus fordítási bővítményről

Az automatikus fordítási bővítmény az 1.6.2 verzió óta támogatott. Azonban, mi csak egy felületet nyitottunk a fejlesztők számára. A bővítmény fejlesztéséhez ki kell dolgoznunk egy önálló alkalmazást, amely fogadja a fordítási kérelmet, elvégzi a fordítást, majd beállítja a fordítási eredményt. Itt egy egyszerű leírást talál a fordítási bővítmény fejlesztésével kapcsolatban.

Fordítási kérelem

Mi továbbítjuk a fordítási kérelmet a TranslateItem által, amely a következő szerint van meghatározva:

package com.gmail.heagoo.apkeditor.translate;

import java.io.Serializable;

// MEG kell határozni, mivel ez nem lehetséges

public class TranslateItem implements Serializable {

private static final long serialVersionUID = -3101805950698159689L;

public String name;

public String originValue;

public String translatedValue;

public TranslateItem(String _n, String _o) {

this.name = _n;

this.originValue = _o;

}

public TranslateItem(String _n, String _o, String _t) {

this.name = _n;

this.originValue = _o;

this.translatedValue = _t;

}

}

Majd, tekintse meg az alábbi kódot az összes átadott paraméter lekéréséhez:

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// ...

Intent intent = getIntent();

Bundle bundle = intent.getExtras();

// Cél-nyelv kód, mint például a "-de"

this.targetLanguageCode = bundle.getString("targetLanguageCode");

// A lefordított elemek is át lesznek küldve, hogy felül lehessen vizsgálni őket

this.translatedFilePath = bundle.getString("translatedList_file");

this.translatedList = (List<TranslateItem>) readObjectFromFile(translatedFilePath);

// A lefordítatlan elemek, amelyeket le kell fordítani

String path =bundle.getString("untranslatedList_file");

this.untranslatedList = (List<TranslateItem>) readObjectFromFile(path);

// ...

}

public static Object readObjectFromFile(String filePath) {

Object result = null;

File file = new File(filePath);

ObjectInputStream objIn = null;

try {

objIn = new ObjectInputStream(new FileInputStream(file));

result = objIn.readObject();

} catch (IOException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

} finally {

closeWithoutThrow(objIn);

}

return result;

}

Fordítási eredmény beállítása

A fordítás után, nekünk vissza kell juttatnunk az eredményt a következő kód használatával:

private void setResult(List<TranslateItem> stringValues) {

Intent intent = new Intent();

intent.putExtra("targetLanguageCode", this.targetLanguageCode);

writeObjectToFile(this.translatedFilePath, stringValues);

intent.putExtra("translatedList_file", this.translatedFilePath);

this.setResult(RESULT_OK, intent);

}

public static void writeObjectToFile(String filePath, Object obj) {

File file = new File(filePath);

ObjectOutputStream objOut = null;

try {

objOut = new ObjectOutputStream(new FileOutputStream(file));

objOut.writeObject(obj);

objOut.flush();

} catch (IOException e) {

e.printStackTrace();

} finally {

closeWithoutThrow(objOut);

}

}

AndroidManifest követelmény

Általában, nekünk is engedélyeket kell kérnünk (mivel mi is online fordítókat használunk):

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.INTERNET" />

És, hogy az APK Editor megtalálja a bővítményt, deklarálnia kell a következő tevékenységet:

<activity android:name="xx.xx.TranslateActivity" android:exported="true" >

<intent-filter>

<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />

<data android:mimeType="application/com.gmail.heagoo.apkeditor-translate" />

</intent-filter>

</activity>