Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách lấy ngôn ngữ hiện tại của thiết bị Android

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ặc Context.createConfigurationContext() (API 24+).