Android本地化

广告位

Android应用程序可以在许多不同地区的许多设备上运行。为了使应用程序更具交互性,应用程序应该处理以适合应用…

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

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

本地化字符串

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

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

Android本地化

该文件夹制成之后,从默认的文件夹中的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并启动它,如果一切设置和应用程序都没有问题,它会显示以下仿真器窗口:

Android本地化

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

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

Android本地化

贺, 贺朝

关于作者: 贺朝

为您推荐