2012-09-07 161 views
3

我有textView和ListView。我在列表视图支持不同的语言

金属制成的支撑langugage列表当我点击任何语言的TextView文本需要改变

代码

String lang[] = new String[]{"English","French"}; 
     ListView listView = (ListView) findViewById(android.R.id.list); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lang); 

     listView.setAdapter(adapter); 

     TextView text = (TextView)findViewById(R.id.textbox); 

    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     TextView tv = (TextView)v; 
     String selected_lang = tv.getText().toString(); 
     Toast.makeText(this, selected_lang, Toast.LENGTH_LONG).show(); 
    } 

注: 需要从一种语言翻译成另一种语言,而不使串.xml和GoogleApi

有人知道Google如何将一种语言翻译成其他语言?

+0

是否要将文本语言翻译为法语,当点击法语的listview时? –

+0

当我点击法国需要更改textview,也在列表视图 – Bucks

+0

雅是好的...但那些文本视图包含较早,你需要它改变? –

回答

3

创建不久的目录价值新目录值-FR与文件的strings.xml和内容,如

<resources> 
    <string name="some_string_vith_localization">French translation</string> 
</resources> 

,并在你的代码

String lang[] = new String[]{"en","fr"}; 
     ListView listView = (ListView) findViewById(R.id.my_list_id); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lang); 

     listView.setAdapter(adapter); 

     TextView text = (TextView)findViewById(R.id.textbox); 

    } 
      @Override 
      protected void onListItemClick(ListView l, View v, int position, long id) { 
       TextView tv = (TextView)view.findViewById(R.id.text_view_to_change); 
       String selected_lang = tv.getText().toString(); 

       Locale locale2 = new Locale(selected_lang); 
       Locale.setDefault(locale2); 
       Configuration config2 = new Configuration(); 
       config2.locale = locale2; 
       getBaseContext().getResources().updateConfiguration(config2, 
         getBaseContext().getResources().getDisplayMetrics()); 
       tv.setText(getResources().getString(R.string.some_string_vith_localization)); 

      } 
+0

当我点击法语在列表框中我得到了一个异常09-07 11:45:44.285:E/AndroidRuntime(712):android.content.res。资源$ NotFoundException:字符串资源ID#0x7f040003 – Bucks

+0

你shuld有字符串的id some_string_vith_localization在你的string.xml中的值文件夹和strings.xml中你的值-f foleder。 你可以在[教程](http://dharmendra4android.blogspot.in/2012/04/some-users-expect-to-use-application-in.html) 了解这方面的内容,并确保你有TextView您的ID为R.id.text_view_to_change的活动和您的列表视图的ID为R.id.my_list_id。 –

+0

你有哪些例外? –

0

确定...尝试使用Android的翻译-API-1.1.jar

链接:http://code.google.com/p/android-translate-api/

Locale curLocale = this.getResources().getConfiguration().locale; 
I18nTranslator i18nTranslator = new I18nTranslator(curLocale .getLanguage()); 

String text = i18nTranslator.translateString("YOUR-TEXT-HERE"); 
1

下面是Multiple Language Support in Android的一个完整示例,就像你需要的一样。


现在,

对于被要求几件​​事情要理解,

res/values文件夹,你可以创建许多文件夹,并保持各自的语言字符串值Strings.xml文件的文件夹下。

现在,当用户选择的任何语言的它的选择然后更改configuration

我也建议你也应该经历一次这样的话题:Localization

+0

谢谢你的工作..在我的应用程序,我从这个案例中的web服务获取数据我该如何更改语言 – Bucks

+0

如果你正在动态数据,那么你将不得不使用翻译API和AFAIK它不是免费的,为此,你也必须打电话,并根据你的目标语言得到回应,并显示它..更好的方法是,如果你可以直接从翻译的数据你的网络服务只...意味着如果你可以在服务器端翻译... 否则简单的答案是使用任何translater API翻译它。 – MKJParekh

+0

谢谢我的问题在你的例子中..当我点击选择语言按钮没有任何反应 – Bucks