2015-01-22 6 views
1

Есть ли способ в Android для перевода строк с собственным файлом перевода во время выполнения?Перевод на Android во время выполнения

например. английский Файл:

hello world : Hello world. 

немецкий файл:

hello world: Hallo Welt. 

Как и в Webframeworks (Symfony, Rails, ...)

+0

Вы пытаетесь сделать приложение для переводчика? или просто перевод строки ресурса? –

+0

Я получаю сообщения об ошибках в ответе сервера на английском языке, и я хочу перевести их на разные языки во время выполнения с моими собственными переводами. – Fabian

+1

Возможно, вы имели в виду? https://developers.google.com/api-client-library/java/apis/translate/v2 –

ответ

1

Я могу думать о двух способов сделать это. Один из них - указать код языка/региона Android и использовать различные res/values ​​/ strings.xml для перевода строковых значений. Но это повлияет на все приложение. Вот ссылка на supporting different languages

Другой способ сделать это - создать локализованный файл ресурсов, подобный этому для перевода ответа сервера.

Так strings.xml будет выглядеть так:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="error_msg_ge">Fehlermeldung</string> 
    <string name="error_msg_en">Error Message</string> 
</resources> 

Ниже только псевдо-код, так как вы не отправлял никакого кода.

if(!isSuccess) { 
    TextView textView = new TextView(this); 
    textView.setText(R.string.error_msg_ge) 
} 

Если мы действительно хотим, чтобы быть более точными, то можно указать несколько сообщений об ошибках в файле ресурсов и обмен для использования на основе сообщения об ошибке, возвращаемом с сервера.

Так XML может быть, как это

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="error_ge_timeout">auszeit</string> 
    <string name="error_ge_noresult">kein Ergebnis</string> 
    <string name="error_en_timeout">timeout</string> 
    <string name="error_en_noresult">no result</string> 
</resources> 

Тогда

if(!isSuccess) { 
    TextView textView = new TextView(this); 
    if(errMsg.equals(R.string.error_en_timeout)) { 
    textView.setText(R.string.error_ge_timeout); 
    } //...and so on 

} 

Наконец, но не менее, вы можете также использовать стороннее API третьего, чтобы сделать перевод. Но поскольку вы переводите сообщение об ошибке, полученное с сервера, я не уверен, что это необходимо, так как это не целая диалогическая цель, так что это может быть перебор. В любом случае есть много способов его достижения.

Смежные вопросы