如何通过了解手机的本地语言来更改变量的值?

时间:2016-04-27 10:55:24

标签: android android-studio localization multilingual

我要把事情弄清楚。我有一个Android应用程序,支持英语和法语。

由此,应用程序知道手机上使用的语言,并在必要时更改其语言。但在我的应用程序中,我解析了URL中的信息,我想更改此URL的值与应用程序(或手机)的语言相比。

法语:

String QUERY_URL = "https://api.immotoolbox.com/xml/2.0/MCRE/produits/?search[typeTransaction]=Vente&_locale=en";

对于英语:

str = "This website is <a href='www.google.com'>Google</a>, some other website is <a href='www.facebook.com'>Facebook</a>"
style_to_add = "style='text-decoration:none;'"

有什么想法吗?

谢谢:)

2 个答案:

答案 0 :(得分:2)

query/values/strings.xml资源中定义名为/values-fr/strings.xml的字符串:

/values/strings.xml:
<string name="query">your query in english</string>

/values-fr/strings.xml:
<string name="query">your query in french</string>
在您的应用中

只需使用以下内容即可获取字符串:

String query = getActivity().getString(R.string.query);

如果您在非活动或非片段类中使用它,请执行以下操作:

使用构造函数将任何上下文传递给您的类:

public YourClassName(Context context)
 { 
   this.context=context; 
 } 

然后:context.getResources().getString(R.string.query_url);

答案 1 :(得分:1)

您可以使用Locale.getDefault().getLanguage()为您提供语言代码,然后您可以将其附加到您的查询中。

Uri.Builder builder = new Uri.Builder();
String lang = Locale.getDefault().getLanguage()
if(!lang.equals("fr") && !lang.equals("en"))
    lang = "en";
builder.appendQueryParameter("local", lang);
String query = builder.build().getEncodedQuery();
URL url = new URL(url+"?"+query);