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>