本站已关停,现有内容仅作科研等非赢利用途使用。特此声明。
查看: 1584|回复: 0
打印 上一主题 下一主题

Android M 中的应用内翻译

[复制链接]
跳转到指定楼层
1#
发表于 2016-1-14 17:50:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

英文原文:In-app translations in Android Marshmallow

Google Translate 每月使用量超过 5 亿人次,每日翻译量高达 1000 多亿单词

从本周开始,在运行最新版 Android 操作系统(Android 6.0,Marshmallow)的任何设备上,安装了 Translate 应用的 Android 移动用户将能够直接在他们喜爱的一些应用内翻译 90 种语言。


翻译葡萄牙语 TripAdvisor 点评


撰写俄语 WhatsApp 消息


使用 Android 文本选择行为的 Android 应用已启用此功能,因此无需采取额外的步骤。为其应用创建自定义文本选择行为的开发人员可以按照下面的步骤轻松实现此功能:

通过 PackageManager 扫描具有 PROCESS_TEXT Intent 过滤器的所有软件包(例如:com.google.android.apps.translate – 如果已安装),并将这些软件包作为 MenuItems(菜单项)添加到应用的 TextView(文本视图)选择


a若要查询软件包管理器,请先构建一个具有该操作的 Intent
  1. private Intent createProcessTextIntent() {
  2.     return new Intent()
  3.             .setAction(Intent.ACTION_PROCESS_TEXT)
  4.             .setType("text/plain");
  5. }
复制代码
b. 然后检索支持的 Activity
  1. private List getSupportedActivities() {
  2.     PackageManager packageManager =
  3. mTextView.getContext().getPackageManager();
  4.     return
  5. packageManager.queryIntentActivities(createProcessTextIntent(),
  6. 0);
  7. }
复制代码
c. 为每个检索的 Activity 添加一个项目,并向其附加一个 Intent 以启动该操作
  1. public void onInitializeMenu(Menu menu) {
  2.     // Start with a menu Item order value that is high enough
  3.     // so that your "PROCESS_TEXT" menu items appear after the
  4.     // standard selection menu items like Cut, Copy, Paste.
  5.     int menuItemOrder = 100;
  6.     for (ResolveInfo resolveInfo : getSupportedActivities()) {
  7.         menu.add(Menu.NONE, Menu.NONE,
  8.                 menuItemOrder++,
  9.                 getLabel(resolveInfo))
  10.                
  11. .setIntent(createProcessTextIntentForResolveInfo(resolveInfo))
  12.                 .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
  13.     }
  14. }
复制代码
可通过以下方式检索每个项目的标签:
  1. resolveInfo.loadLabel(mPackageManager);
复制代码
可通过重用您以前定义的 Intent 过滤器并添加缺少的数据来创建每个项目的 Intent:
  1. private Intent createProcessTextIntentForResolveInfo(ResolveInfo info) {
  2.     return createProcessTextIntent()
  3.             .putExtra(Intent.EXTRA_PROCESS_TEXT_READONLY, !
  4. mTextView.isTextEditable())
  5.             .setClassName(info.activityInfo.packageName,
  6. info.activityInfo.name);
  7. }
复制代码
将翻译选项添加到您的应用文本选择菜单(如果您不使用默认的 Android 文本选择行为)非常简单,只需加几行代码即可。请记住,如果用户正在撰写要翻译的文本,则在触发 Translate 应用时,您的应用应保留此选择。

借助这个新功能,Android Translate 应用用户将能够在加入该计划的应用中轻松地进行翻译。未来几周,我们将添加有关此功能的更多文档和示例代码。


ChinaGDG.com
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表