【问题标题】:Create "values-en" folder dynamically in android在android中动态创建“values-en”文件夹
【发布时间】:2016-04-14 21:45:45
【问题描述】:

首先对不起我的英语不好。

我正在寻找如何更改我的 android 应用程序的语言。我在很多链接中发现创建 values-fr(法语)、values-en(英语)等并将strings.xml 文件复制到这些文件夹中。并根据语言替换 strings.xml 中的字符串名称。最后添加一些代码块,说明将使用哪个“值文件夹”(见下面的代码块),我可以实现语言支持。

String languageToLoad  = "en"; // your language
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
                    getBaseContext().getResources().getDisplayMetrics());

但我想知道是否可以创建“values-any”文件在运行时创建后,是否可以将strings.xml 文件放入之前填充的文件夹中并假设strings.xml 文件来自某个数据库或网络服务。

简而言之,是否可以动态实现语言支持? 任何想法将不胜感激。提前致谢。

【问题讨论】:

    标签: java android xml locale setlocale


    【解决方案1】:

    我想知道是否可以在运行时创建“values-any”文件

    没有。资源在运行时是只读的。

    是否可以动态实现语言支持?

    不通过 Android 资源系统。

    【讨论】:

    • 谢谢,所以在运行时更改strings.xml文件也是不可能的,是吗?
    • @Hilal 是正确的,您不能在运行时更改值。
    • @Hilal:正确。资源在运行时是只读的。欢迎您将自己的翻译存储在自己的文件/数据库/任何内容中,并自己加载这些字符串。但是,此时,您处于 Android 资源系统之外。顺便说一句,您不需要问题中的代码块来实现资源的“语言支持”。 Android 会自动使用用户选择的设备区域设置。该代码块是如果您希望覆盖用户选择的设备区域设置,并且该代码可能需要在 Android N 上进行一些调整。
    • 谢谢@Marko,所以我会问另一个问题,仅支持android中的动态语言。
    • @CommonsWare 谢谢,您说通过 Android 资源系统无法提供语言支持。你能建议另一种方法吗?
    猜你喜欢
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多