添加新的语言环境并在Android应用程序中强制使用语言环境(本地化)

时间:2016-06-10 11:47:45

标签: android android-studio localization

我尝试学习如何在android studio中编程,我目前正在第二篇关于如何通过本地化来改变语言的教程。 当我尝试在文件夹if (FileUpload1.HasFile) { string path = string.Concat((Server.MapPath("~/ImportDocument" + FileUpload1.FileName))); FileUpload1.PostedFile.SaveAs(path); OleDbConnection con= new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}" + path + ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'"); OleDbCommand cmd = new OleDbCommand("select [Doctor_Id] from [Sheet1$]" , con); OleDbDataAdapter da = new OleDbDataAdapter(cmd); con.Open(); DbDataReader dr = cmd.ExecuteReader(); string con_str = @"DataSource=.;Initial Catalog=DoctorActivity;Integrated security=True"; //storing in sql database SqlBulkCopy bulkInsert = new SqlBulkCopy(con_str); bulkInsert.DestinationTableName = "Table"; bulkInsert.WriteToServer(dr); con.Close(); Array.ForEach(Directory.GetFiles((Server.MapPath("~/ImportDocument"))), File.Delete); Label1.Text = "Succesfully Uploaded to database"; } else { Label1.Text = "Please Select a file to Upload"; } 内创建第二个strings.xml文件时,它说我不能因为名称应该是唯一的。 我尝试将原始的values_el文件从values文件夹复制到新的values_el文件夹,我翻译了消息但没有任何反应。 此外,我尝试右键单击原始的strings.xml文件,我按下翻译选项,我从那里翻译它们,但没有任何反复。 当我在手机中运行应用程序时,我尝试上述两种方式的语言都是英语。 我的手机语言是希腊语,但我的程序字母是英文。

问题2。

首先为什么我的手机中的语言不会改变? 第二种方法是在我打开它时通过按下按钮来改变我的应用程序的语言?我在谷歌游戏中玩的一些游戏可以选择在你开始游戏之前选择你的游戏。 抱歉我的英语,如果你不明白我说的话请告诉我,所以我试着用谷歌翻译帮助更好地解释它。 无论如何,谢谢你的时间。

这就是我运行的代码

strings.xml

3 个答案:

答案 0 :(得分:6)

为什么不通过IDE使用简单方法?

  1. 打开您的strings.xml文件
  2. 点击Open Editor链接,如下所示
  3. enter image description here

    1. 通过选择此类
    2. 添加要添加翻译的区域设置

      enter image description here

      1. 这将为您创建正确的文件,而无需担心文件名

      2. 您无需打开每个strings.xml来放置本地化字符串。从这个strings.xml编辑器直接执行。

      3. 回到第二个问题:本地应用程序将是设备设置中设备上选择的区域设置。如果您尚未针对设备区域设置进行本地化,则会回退到strings.xml下的主res/values

        要在您的应用中强制使用区域设置,而不考虑设备的区域设置:

        在您的活动类中添加以下方法,并在onCreate

        中调用它
        private void setLanguageForApp(String language){
        
            String languageToLoad  = language; //pass the language code as param
            Locale locale;
            if(languageToLoad.equals("not-set")){
                locale = Locale.getDefault();
            }
            else {
                locale = new Locale(languageToLoad);
            }
            Locale.setDefault(locale);
            Configuration config = new Configuration();
            config.locale = locale;
            getBaseContext().getResources().updateConfiguration(config,
                    getBaseContext().getResources().getDisplayMetrics());
        }
        

答案 1 :(得分:1)

您的文件夹名称是: values_el ,这是不正确的。 它应该是 values-el

是的,可以更改应用程序的语言。请参考以下链接。

Change language programmatically in Android

答案 2 :(得分:0)

我不确定我是否完全理解您的问题,但您可以通过右键单击res添加新语言 - >新的-Android资源目录 - >区域设置并选择希腊和一个地区。将创建该目录并在其中添加包含翻译的文件。 如果您此时更改手机的语言,则应显示已翻译的应用程序。

第二个问题,我不确定是否是正确的方法,但我会更改区域设置并重新加载应用程序或活动。喜欢这个

String languageToLoad  = "fr_FR";
 Locale locale = new Locale(languageToLoad); 
 Locale.setDefault(locale);
 Configuration config = new Configuration();
 config.locale = locale;
 context.getResources().updateConfiguration(config,context.getResources().getDisplayMetrics());


Intent intent = new Intent(XYZ.this, XYZ.class); 

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(意向);

检查此答案:https://stackoverflow.com/a/15971553/1623224