Интернационализация Android WebView - PullRequest
6 голосов
/ 08 июля 2011

Какой лучший способ справиться с интернационализацией / локализацией в Android WebView. В идеале я хотел бы получить доступ ко всем строковым ресурсам в:

Рез / значения / strings.xml RES / значения-де / strings.xml ...

Кто-нибудь сделал это эффективным способом?

Информация о локализации Android: http://developer.android.com/guide/topics/resources/localization.html

Лучший, - Томас Амслер

Ответы [ 2 ]

10 голосов
/ 19 декабря 2011

Чтобы загрузить некоторые локализованные данные в веб-просмотр, я создал строку, содержащую локализованный URL, и использовал ее для загрузки HTML-файла. Так, например, строка:

<string name="url_to_load">file:///android_asset/localized_ru.html</string>

для ссылки на файл localized_ru.html в каталоге /assets, а затем в операции:

webView.loadUrl(getString(R.string.url_to_load));

Я использовал это косвенно через строку, так как каталог assets/ не локализован, и загрузка ресурса с использованием URL-адреса не работала для меня.


Если вы действительно хотите иметь возможность загружать все строковые ресурсы из своего веб-просмотра, вы можете создать JavaScript-интерфейс и простой вспомогательный класс:

class Localizer {
    private Resources res;

    public Localizer(Resources res) {
        this.res = res;
    }
    public String get(String key) {
        int id = res.getIdentifier(key, "string", "org.example.app");
        return res.getString(id);
    }
}

затем передайте это веб-представлению в вашей деятельности:

webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new Localizer(getResources()), "localizer");
0 голосов
/ 08 июля 2011

Вы можете отправлять данные локализованных строковых ресурсов на ваш WebView. Посмотрите на WebView.postUrl()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...