I have a requirement to display one text in multiple languages especially Kannada and Telugu I am developing with minimum required API 14 (4.0)
Thankyou
Try this...
I shared here the whole application code.
Project structure
activity_main_activity1.xml
<LinearLayout 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:background="#2b579a"
android:orientation="vertical"
tools:context=".MainActivity1" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/kannada"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:gravity="start"
android:text="@string/kannada"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<Button
android:id="@+id/telugu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:gravity="end"
android:text="@string/telugu"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<Button
android:id="@+id/english"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:gravity="end"
android:text="@string/english"
android:textColor="#FFFFFF"
android:textSize="20sp" />
</LinearLayout>
<TextView
android:id="@+id/news"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="@string/note"
android:textColor="#FFFFFF"
android:textSize="20sp" />
</LinearLayout>
values/strings.xml
values-kn/strings.xml
Strings for kannada language.
values-te/strings.xml
Set font
download fonts here .
MainActivity1.java
package com.hirecraft.stackoverflowtest;
import java.util.Locale;
import android.app.Activity;
import android.content.res.Configuration;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity1 extends Activity {
/**
* Declaration
*/
Button kannada, telugu, english;
String currentLanguage;
TextView news;
Typeface kannadaFont, teluguFont;
/**
* This class describes all device configuration information
* that can impact the resources the application retrieves. This
* includes both user-specified configuration options (locale
* and scaling) as well as device configurations (such as input
* modes, screen size and screen orientation).
*/
Configuration config;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity1);
/**
* Initialization
*/
currentLanguage = "";
kannada = (Button) findViewById(R.id.kannada);
telugu = (Button) findViewById(R.id.telugu);
english = (Button) findViewById(R.id.english);
news = (TextView) findViewById(R.id.news);
/**
* Initialize the fonts.
*/
kannadaFont = Typeface.createFromAsset(getAssets(), "fonts/akshar.ttf");
teluguFont = Typeface.createFromAsset(getAssets(), "fonts/gautami.ttf");
/**
* Event for Kannada
*/
kannada.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
* "kn" is the localization code for our Kannada language.
*/
currentLanguage = "kn";
Locale locale = new Locale(currentLanguage);
Locale.setDefault(locale);
/**
* Print the current language
*/
System.out.println("My current language: "
+ Locale.getDefault());
config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
news.setText(R.string.note);
news.setTypeface(kannadaFont);
}
});
telugu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
* "te" is the localization code for our Telugu language.
*/
currentLanguage = "te";
Locale locale = new Locale(currentLanguage);
Locale.setDefault(locale);
/**
* Print the current language
*/
System.out.println("My current language: "
+ Locale.getDefault());
config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
news.setText(R.string.note);
news.setTypeface(teluguFont);
}
});
english.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
* "en" is the localization code for our default English language.
*/
currentLanguage = "en";
Locale locale = new Locale(currentLanguage);
Locale.setDefault(locale);
/**
* Print the current language
*/
System.out.println("My current language: "
+ Locale.getDefault());
config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
news.setText(R.string.note);
}
});
}
}
AndroidManifest.xml
Screen shots:
1. Default locale(English)
2. Kannada
3. Telugu
Happy coding.....
you need two things for that :-
like as follows :-
MyProject/
res/
values/
strings.xml
values-es/
strings.xml
values-fr/
strings.xml
more detail read it
Use android's inbuilt Locale package to get available locales. Then filter the indian languages and finally to display them in their corresponding font, use locale.getDisplayLanguage(locale)
as shown below:
for(locale in Locale.getAvailableLocales())
if ("IN" in locale.country)
availableLanguages.add(Pair(locale.language,locale.getDisplayLanguage(locale)))
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.