我想知道如何为不同语言命名我的文件夹.我在哪里可以找到Android上支持的语言列表?
我的应用程序支持3种(很快4种)语言.由于几个语言环境非常相似,我想让用户选择在我的应用程序中更改语言环境,例如意大利人可能更喜欢西班牙语而不是英语.
有没有办法让用户在可用于应用程序的语言环境中进行选择,然后更改使用的语言环境?我不认为为每个Activity设置语言环境是一个问题,因为它是在基类中执行的简单任务.
是否可以在Android应用程序中设置自定义字体?
我尝试了这里发布的内容,但我不知道我的extends Application课程在哪里......
有帮助吗?
编辑:
我尝试了以下方法:
添加一个扩展自的新类 Application
从我的电话中调用这个新课程AndroidManifest.xml.
我按照我的风格添加了它.
MyApp.java:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
FontsOverride.setDefaultFont(this, "DEFAULT", "raleway_regular.ttf");
// This FontsOverride comes from the example I posted above
}
}
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml中:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:name=".MyApp"
android:theme="@style/AppTheme">
....
Run Code Online (Sandbox Code Playgroud)
styles.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:fontFamily">default</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但我的字体仍然没有变换......任何想法?
然后MyApp调用该类.但对我的字体没有影响......
EDIT2:我意识到在为按钮设置自定义样式后,我的按钮会应用自定义字体.这是我的自定义按钮样式:
<style name="MyButtonStyle" parent="Widget.AppCompat.Button">
<item name="textAllCaps">false</item>
<item name="android:textAllCaps">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)
以下是它现在的样子:
所以:我的按钮正在应用样式,但不是TextView.有关为什么我的自定义字体没有应用于应用程序中的所有项目的任何想法?
安装我的Android程序后,我检查设备区域设置:
String deviceLocale=Locale.getDefault().getLanguage();
Run Code Online (Sandbox Code Playgroud)
如果deviceLocale在我支持的语言(英语,法语,德语)内,我不会更改语言环境.
但是比如说如果我不支持设备的语言:例如西班牙语.
我将当前的语言环境设置为英语,因为大多数人可以部分理解英语.
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
pContext.getResources().updateConfiguration(config, null);
Run Code Online (Sandbox Code Playgroud)
但在那之后,在其他方法中,当我检查设备的语言环境时,如下所示:
String deviceLocale=Locale.getDefault().getLanguage();
Run Code Online (Sandbox Code Playgroud)
我得到的结果是"英语".但设备的区域设置是西班牙语.
getLanguage()是否提供当前应用的区域设置?
如何获取设备的区域设置?
编辑:在应用程序的首次运行中,它是一个保存设备区域设置的选项.但是如果用户在保存后更改设备区域设置,则无法知道设备的新区域设置.我只能知道我在app install中保存的语言环境.
可能重复:
在Android中以编程方式更改语言
我是Android新手.在我的应用程序中,用户可以选择三种语言的语言.根据用户选择的语言,应该更改整个应用程序的语言.我怎样才能做到这一点?
我有一个支持多种语言的旧项目。我想升级支持库和目标平台,在迁移到Androidx之前,一切正常,但现在更改语言无效!
我使用此代码更改App的默认语言环境
private static Context updateResources(Context context, String language)
{
Locale locale = new Locale(language);
Locale.setDefault(locale);
Configuration configuration = context.getResources().getConfiguration();
configuration.setLocale(locale);
return context.createConfigurationContext(configuration);
}
Run Code Online (Sandbox Code Playgroud)
并在每个活动上通过attachBaseContext这样的覆盖调用此方法:
@Override
protected void attachBaseContext(Context newBase)
{
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
String language = preferences.getString(SELECTED_LANGUAGE, "fa");
super.attachBaseContext(updateResources(newBase, language));
}
Run Code Online (Sandbox Code Playgroud)
我尝试其他方法来获取字符串,但我注意到了吗?getActivity().getBaseContext().getString工作,而getActivity().getString不是工作。即使以下代码也不起作用,并且始终app_name在默认资源string.xml中显示vlaue。
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"/>
Run Code Online (Sandbox Code Playgroud)
我在https://github.com/Freydoonk/LanguageTest中共享示例代码
也getActivity()..getResources().getIdentifier行不通,总是返回0!
我正在用两种不同的语言开发一个Android应用程序.当用户点击"更改语言"按钮时,它会要求从两种不同语言选择语言选项并根据该语言更改键盘.
例如:用户选择"阿拉伯语"语言,然后键盘输入语言应自动从英语更改为阿拉伯语.
请帮我解决这个问题.
我们有一个Android应用程序,可用作远程PC程序的客户端.我们想添加一个功能,以便PC可以指示Android应用程序在运行时更改其语言环境,即启动应用程序; 把它与PC通信; 一段时间后,PC告诉应用程序切换到西班牙语或中文.
我们已经为各自的语言环境设置了所有布局和字符串资源.我们的应用程序是用户看到的唯一应用程序,因此如果设备的其余部分保留英语则无关紧要.
在Android中以编程方式在Change语言上有另一个线程,但它似乎没有得出结论.
我可以...
Locale locale = new Locale(sTheNewLocale);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
Run Code Online (Sandbox Code Playgroud)
...在setContentView ()之前的onCreate()中,但是如果我想在屏幕启动并运行后更改语言环境,则无法提供帮助.有没有办法在Activity已经运行后重新加载内容视图?所以是没有改变的即时语言环境中可靠地或做我要告诉我的老板也不能只是在开始应用之前整个设备设置成新的语言环境进行任何实际的方法?
如果要在Android中添加特定于语言环境的资源,则必须将该语言的小写ISO-3166-1代码添加到资源文件夹的名称中.到现在为止还挺好.
现在我想在我的应用程序中添加加泰罗尼亚语和巴斯克语字符串.根据ISO列表,我将不得不添加values-ca和values-eu.但这会有效吗?
编辑:使用应用程序中的自定义语言选择器,即使语言不在设备的设置菜单中,也可以为语言提供支持.我已经在GitHub上创建了我用的库:https: //github.com/delight-im/Android-Languages
我不知道Android是否支持所有ISO代码,是否会显示这些"次要"语言.如果Android没有这些语言版本,那么该设备可能甚至不会将此语言识别为其默认语言环境,而只是es用于西班牙语.
有人可以帮忙吗?