位置:首页 > 手机开发 > Android开发在线教程 > Android本地化

Android本地化

Android应用程序可以在许多不同地区的许多设备上运行。为了使应用程序更具交互性,应用程序应该处理以适合应用程序将要使用的语言环境方面的文字,数字,文件等。

在本章中,我们将解释,如何根据不同区域等应用程序我们将本地化的应用中定位使用的字符串,并以同样的方式的其他东西可以本地化。

本地化字符串

为了在你的应用程序中使用的字符串进行本地化,使RES下一个新的文件夹名称为本地值(values-local),当地将被替换的区域。

例如,在意大利的情况下,值在(values-it)文件夹将在res下。这显示在下面的图片:

Anroid Localization Tutorial

该文件夹制成之后,从默认的文件夹中的strings.xml复制到所创建的文件夹。并更改其内容。举例来说,已经改变参考hello world字符串的值。

意大利, RES/VALUES-IT/STRINGS.XML

<;?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello_world">Ciao mondo!</string>
</resources>

西班牙, RES/VALUES-IT/STRINGS.XML

<;?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello_world">Hola Mundo!</string>
</resources>

法国,RES/VALUES-IT/STRINGS.XML

<;?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello_world">Bonjour le monde !</string>
</resources>

除了这些语言,其他语言的区域码已在表中给出:

Sr.No 语言和代码
1 Afrikanns
代码:af 文件夹名称: values-af
2 Arabic
代码:ar 文件夹名称:values-ar
3 Bengali
代码:bn文件夹名称:
4 Czech
代码:cs文件夹名称:values-cs
5 Chinese
代码:zh文件夹名称: values-zh
6 German
代码:de 文件夹名称:values-de
7 French
代码:fr 文件夹名称::values-fr
8 Japanese
代码:ja 文件夹名称:values-ja

例子

这里有一个例子演示如何使用字符串的本地化的。它创建了一个基本的应用程序,允许根据美国和意大利地区的自定义应用程序。

为了试验这个例子,可以在实际设备或模拟器运行此应用程序。

Steps 描述
1 使用Android Studio创建Android应用程序,并将其命名为: Locals。在创建这个项目,确保目标SDK编译在Android SDK的最新版本或使用更高级别的API
2 修改src/MainActivity.java文件添加必要的代码
3 修改res/layout/activity_main添加相应的XML组件
4 修改res/values/string.xml 添加必要的字符串
5 创建 res/values-it/string.xml添加必要的字符串
6 运行应用程序并选择运行Android设备,并在其上安装的应用和验证结果

以下是修改后的主活动文件的内容 src/com.yiibai.locals/MainActivity.java.

package com.example.locals;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
   }

}

以下是修改 res/layout/activity_main.xml 的内容

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context=".MainActivity" >

   <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="174dp"
      android:text="@string/hello_world"
      android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

以下是 res/values/string.xml. 的内容

<?xml version="1.0" encoding="utf-8"?>
<resources>

   <string name="app_name">Locals</string>
   <string name="action_settings">Settings</string>
   <string name="hello_world">Hello world!</string>

</resources>

以下是 res/values-it/string.xml. 的内容

<?xml version="1.0" encoding="utf-8"?>
<resources>

   <string name="app_name">Locals</string>
   <string name="action_settings">Settings</string>
   <string name="hello_world">Ciao mondo!</string>

</resources>

以下是 AndroidManifest.xml 文件的内容

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.yiibai.locals"
   android:versionCode="1"
   android:versionName="1.0" >

   <uses-sdk
      android:minSdkVersion="8"
      android:targetSdkVersion="17" />

   <application
   android:allowBackup="true"
   android:icon="@drawable/ic_launcher"
   android:label="@string/app_name"
   android:theme="@style/AppTheme" >
      <activity
         android:name="com.yiibai.locals.MainActivity"
         android:label="@string/app_name" >
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

让我们试着来运行修改本地化应用。安装程序AVD并启动它,如果一切设置和应用程序都没有问题,它会显示以下仿真器窗口:

Anroid Localization Tutorial

现在从菜单/系统设置/语言意大利改变设置设备的语言。

现在再次打开应用程序,这时候会看到的Hello World在意大利语言。它已被证明下面::

Anroid Localization Tutorial