Lấy ngôn ngữ và quốc gia thiết bị
Dùng class java.util.Locale để lấy ngôn ngữ hiển thị và mã quốc gia (ISO 3166-1 alpha-2) mà người dùng đã cấu hình trong Settings.
Layout: Button + TextView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:background="#DDE4DD">
<TextView
android:id="@+id/tvLanguage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp" />
<Button
android:id="@+id/btnGetLang"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Lấy ngôn ngữ" />
</LinearLayout>
MainActivity.java
package com.example.myapplication;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private TextView tvLanguage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvLanguage = findViewById(R.id.tvLanguage);
Button btn = findViewById(R.id.btnGetLang);
btn.setOnClickListener(v -> {
Locale locale = Locale.getDefault();
String languageName = locale.getDisplayLanguage(); // Tên ngôn ngữ bản địa hóa
String countryCode = locale.getCountry(); // Mã quốc gia (VD: "US", "VN")
String countryName = locale.getDisplayCountry(); // Tên quốc gia bản địa hóa
tvLanguage.setText("Ngôn ngữ: " + languageName +
"\nMã quốc gia: " + countryCode +
"\nQuốc gia: " + countryName);
});
}
}
Kết quả ví dụ (VN)
Ngôn ngữ: Tiếng Việt Mã quốc gia: VN Quốc gia: Việt Nam
Lưu ý quan trọng
Locale.getDefault()trả về locale của toàn bộ ứng dụng/JVM, thường đồng bộ với system locale.- Android 7.0+ (API 24) hỗ trợ nhiều locale (Language List). Dùng
LocaleList.getDefault()để lấy danh sách ưu tiên. - Để force ngôn ngữ app: dùng
Configuration.setLocale()(API 17+) hoặcContext.createConfigurationContext()(API 24+).