2011年2月11日金曜日

自分のAndroidアプリに LibAndroTranslationを組み込んで翻訳してもらおう!!

Androidライブラリ「libandrotranslation」を使ってみました。
もの凄く簡単に「翻訳支援機構」が自分のアプリの取り込める事ができてお勧めです。

LibAndroTranslationとは:
libandrotranslation ホームから引用ここから
--------------------------------------------
LibAndroTranslationはAndroidアプリの多言語化を助けるためのライブラリです。

通常、アプリの国際化対応は開発者が行います。

しかし、実際に開発者がたくさんの言語のリソース(strings.xml)を用意することは非常に難しいです。

LibAndroTranslationではすべてのリソースを開発者が用意するのではなく、 アプリ自体にリソースの翻訳画面をもたせて 親切なユーザがリソースを翻訳し開発者に送信できる環境を提供します。


-------------------
引用ここまで


何が便利か:

1.翻訳したいリソースを別に用意する必要が無い
   res/valuses/に存在するxmlリソース名を元に以下の画面の様な
   アクティビティを自動生成してくれます。
送信者 Android blog Sakaneya

翻訳してくれるユーザーは、以下の様に翻訳文を入力することになります。
送信者 Android blog Sakaneya


上記アクティビティのメニューにメールが用意されており、
翻訳結果がXMLファイルとして開発者の元に届きます。

リソース名の突き合わせは必要ありません
そのまま使えるXMLファイルが送られてきます。
送信者 Android blog Sakaneya


2.導入が簡単
導入方法は「Description」にあります。

手順通りeclipseに一度インポートしてしまえば、eclipseにライブラリとして認識されます。
後はただ導入したいプロジェクトにライブラリとして追加するだけです。
送信者 Android blog Sakaneya


3.サンプルがそのまま流用できる
インテントで設定ページのアクティビティを呼ぶだけです。
私はpreferenceの1つに「Translation」という項目を設けて実装しました。
サンプルコードをそのまま使ってます。

送信者 Android blog Sakaneya

Preferenceに項目として出すよう「translation」を記述
/res/xml/preference.xml



  




以下の様に設定を表示するpreference表示アクティビティにリスナーを仕込み
/src/../PreferenceActivity.java
//「その他」カテゴリーのリスナー設定
private void setOther(){
  Preference setOther3 = findPreference("translation");
  setOther3.setOnPreferenceClickListener(new PreferenceClickListener());
}

//リスナー
private class PreferenceClickListener implements OnPreferenceClickListener {
 public boolean onPreferenceClick(Preference preference) {

  if(preference.getKey().equals("translation")){
   translation();
   return true;
  }

  return false;
 }
}
 

それに反応するメソッドを書く(この部分がサンプルソース)
/src/../PreferenceActivity.java続き
private void translation(){

    String mailAddress ="sakaneya@gmail.com";
    String versionName = DeployUtil.getVersionName(this);
    String aboutApp = APPLICATION_NAME + " "+SUFFIX+" ver"+versionName+"\n" ;

    Intent intent = new Intent(this, TranslationListActivity.class);
    // 翻訳データの送信先メールアドレス
    intent.putExtra(TranslationListActivity.INTENT_EXTRA_MAIL_TO, mailAddress);

    // 翻訳データのメールの題名に入るアプリ名
    intent.putExtra(TranslationListActivity.INTENT_EXTRA_MAIL_APPNAME, aboutApp);
    ArrayList ignores = new ArrayList();
    ignores.add("app_name");
    ignores.add("no_i18n.+");

    //無視するリソース名を入れる
    //strings_about.xml
    ignores.add("String_AboutEmailDescription");
    ignores.add("String_AboutTwitter");
    ignores.add("String_AboutTwitterDescription");
    ignores.add("String_AboutBlogDescription");

    // 翻訳画面に表示させたくないリソース名のパターン(正規表現)
    intent.putExtra(TranslationListActivity.INTENT_EXTRA_IGNORE_PATTERNS, ignores);

    // 翻訳データの保存先を変更したい場合に指定する
    // デフォルト Environment.getExternalStorageDirectory()+"/MyTranslation"
    // intent.putExtra(TranslationListActivity.INTENT_EXTRA_DIR,
    //              Environment.getExternalStorageDirectory()+"/LibAndroTranslationSample");
    
    this.startActivity(intent);
}


まとめ.
簡単に導入できるので是非使いましょう。
私の第1弾はスウェーデン語になりそうです。

0 件のコメント:

コメントを投稿