Giới thiệu
Hướng dẫn này trình bày cách thay đổi ngôn ngữ (locale) của ứng dụng Android theo chương trình, không phụ thuộc vào cài đặt hệ thống.
Các bước thực hiện
Bước 1: Tạo dự án mới
Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.
Bước 2: Thiết kế giao diện (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"
android:textSize="30dp"
android:textStyle="bold"
android:textColor="@color/colorPrimary"
android:layout_centerInParent="true" />
</RelativeLayout>
Bước 3: Viết logic xử lý (src/MainActivity.java)
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Đặt locale Tiếng Bulgaria (bg) trước setContentView
setAppLocale("bg");
setContentView(R.layout.activity_main);
}
private void setAppLocale(String localeCode) {
Resources resources = getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
Configuration config = resources.getConfiguration();
Locale locale = new Locale(localeCode.toLowerCase());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
// API 17+ (Android 4.2+)
config.setLocale(locale);
} else {
// API cũ
config.locale = locale;
}
// Cập nhật configuration
resources.updateConfiguration(config, dm);
}
}
Bước 4: Tạo file strings cho ngôn ngữ mới
Chuột phải vào res → New → Android Resource Directory → Chọn values → Qualification: Locale → Language: bg (Bulgaria) → OK.
Tạo file res/values-bg/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Sample</string>
<string name="hello_world">Здравей свят</string> <!-- "Xin chào thế giới" bằng Bulgaria -->
</resources>
Bước 5: Cấu hình Manifest (androidManifest.xml)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Lưu ý quan trọng
- Gọi
setAppLocale()trướcsetContentView()trongonCreate() - Cần tạo thư mục
values-<language_code>cho từng ngôn ngữ hỗ trợ - Mã ngôn ngữ theo chuẩn ISO 639-1:
vi(Việt),en(Anh),fr(Pháp),ja(Nhật),ko(Hàn),zh(Trung), v.v. - Từ Android 7.0 (API 24), hỗ trợ nhiều locale cùng lúc:
config.setLocales(LocaleList)
Cách hiện đại (AppCompatDelegate - khuyến nghị)
// Trong Application class hoặc Activity
AppCompatDelegate.setApplicationLocales(new LocaleListCompat(new Locale("vi")));
Chạy ứng dụng
Kết nối thiết bị Android, nhấn Run trong Android Studio. Ứng dụng sẽ hiển thị "Здравей свят" (Tiếng Bulgaria) thay vì tiếng Anh mặc định.

