Локализация HTML-файлов в XCode - PullRequest
3 голосов
/ 25 января 2012

У меня есть локализованное приложение для iOS, в которое я хочу включить некоторые локализованные HTML-файлы.Я не могу понять, как это сделать.

В настоящее время моя структура папок выглядит следующим образом:

/myapp
   /en.lrproj
       /Localizable.strings
   /fr.lrproj
       /Localizable.strings
   /webviews
      /view1
         /index.html
         /pic1.png
      /view2
         /index.html
         /pic2.png

Как вы можете видеть, в настоящее время у меня есть представления, организованные в свои собственные папки.со связанными изображениями.

В XCode, когда я выбрал файлы Localizable.strings, я могу добавить новые локализации.При поиске решения этой проблемы я вижу, что другие люди сделали то же самое для файлов HTML, однако, когда я выбираю файлы HTML, для локализаций не отображаются параметры, поэтому мне интересно, является ли структура папок проблемой.

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

Очевидно, я чего-то не понимаю- что мне нужно сделать, чтобы это работало?

Спасибо,

Тим

Ответы [ 2 ]

6 голосов
/ 25 января 2012

Расположите ваш index.html прямо рядом с Localized.strings, сохраните фотографии в каталоге веб-представлений:

/myapp
   /en.lrproj
       /Localizable.strings
       /view1/index.html
       /view2/index.html
   /fr.lrproj
       /Localizable.strings
       /view1/index.html
       /view2/index.html
   /webviews
      /view1
         /pic1.png
      /view2
         /index.html
         /pic2.png 

Путь к файлу сборки:

NSArray* availableLocalizations = [[NSBundle mainBundle] localizations];    
NSArray* userPrefered = [NSBundle preferredLocalizationsFromArray:availableLocalizations forPreferences:[NSLocale preferredLanguages]];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"view" forLocalization:[userPrefered objectAtIndex:0]];

Изображение в дереве html теперь похоже на

/myapp/en.lrproj/view1/index.html  
/myapp/webviews/view1/pic1.png

Внутри вашего index.html теги <img> указывают на ../../../webview/pic1.png (Не уверен насчет необходимого количества ../. Возможно, вы захотите открыть терминал, перейдите в /myapp/en.lrproj/view1/ и протестируйте с помощью ls ../../../webview/pic1.png.)

2 голосов
/ 24 апреля 2013

Я предполагаю, что "webviews / view1 / index.html" является английским, а "webviews / view2 / index.html" французским.

NSString *dir = NSLocalizedString("webviews/view1", @"webdir");
NSString *path = [[NSBundle mainBundle]pathForResource:@"index" ofType:@"html" inDirectory:dir];

в Localizable.strings французского

/* webdir */
"webviews/view1" = "webviews/view2";

Я тестировал приведенный выше код с использованием ниже в ViewController.

[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]];

Каталог "webviews" должен быть "ссылкой на папку" в Xcode, а не группой.(Синий значок каталога, а не желтый)

Кроме того, будьте осторожны, чтобы не добавить косую черту после имени каталога, например «webviews / view2 /».Я обнаружил, что это может быть проблемой, когда я запускаю его на iOS 5.x (я тестировал его на 5.0.1 и 5.1.1).Но нет проблем на iOS 6.1.2.

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