ios/Mobile/AppDelegate.h | 5 ++--- ios/Mobile/AppDelegate.mm | 14 +++++++++++--- ios/Mobile/Document.mm | 12 ++---------- ios/Mobile/TemplateCollectionViewController.h | 1 + ios/Mobile/TemplateCollectionViewController.mm | 23 +++++++++++++++++------ 5 files changed, 33 insertions(+), 22 deletions(-)
New commits: commit 8f1ed481452d7a69204ce69c9f838402349839d5 Author: Tor Lillqvist <t...@collabora.com> AuthorDate: Mon Dec 10 19:48:15 2018 +0200 Commit: Tor Lillqvist <t...@collabora.com> CommitDate: Mon Dec 10 22:41:55 2018 +0200 Use the new LibreOfficeKit API to localise the template category headers Change-Id: Icc91138cbe5de290103a746c8797e647259d5009 diff --git a/ios/Mobile/TemplateCollectionViewController.h b/ios/Mobile/TemplateCollectionViewController.h index 50861a599..0668de966 100644 --- a/ios/Mobile/TemplateCollectionViewController.h +++ b/ios/Mobile/TemplateCollectionViewController.h @@ -12,6 +12,7 @@ @interface TemplateCollectionViewController : UICollectionViewController<UICollectionViewDataSource,UICollectionViewDelegateFlowLayout> { NSArray<NSURL*> *templates[3]; + LibreOfficeKit *kit; } @property (copy) void (^ _Nullable importHandler)(NSURL * _Nullable, UIDocumentBrowserImportMode); diff --git a/ios/Mobile/TemplateCollectionViewController.mm b/ios/Mobile/TemplateCollectionViewController.mm index 94a922825..cdb6de60d 100644 --- a/ios/Mobile/TemplateCollectionViewController.mm +++ b/ios/Mobile/TemplateCollectionViewController.mm @@ -6,9 +6,12 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#import "svtools/strings.hrc" + #import <LibreOfficeKit/LibreOfficeKit.h> #import <LibreOfficeKit/LibreOfficeKitInit.h> +#import "AppDelegate.h" #import "TemplateCollectionViewController.h" #import "TemplateSectionHeaderView.h" @@ -30,7 +33,9 @@ static NSString *mapTemplateExtensionToActual(NSString *templateName) { - (void)viewDidLoad { - // Here we should scan for available templates. + kit = lok_init_2(nullptr, nullptr); + + // Scan for available templates. templates[0] = [[NSBundle mainBundle] URLsForResourcesWithExtension:@".ott" subdirectory:@"Templates"]; templates[1] = [[NSBundle mainBundle] URLsForResourcesWithExtension:@".ots" subdirectory:@"Templates"]; @@ -88,12 +93,20 @@ static NSString *mapTemplateExtensionToActual(NSString *templateName) { TemplateSectionHeaderView *header = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"SectionHeaderView" forIndexPath:indexPath]; + char *translatedHeader; + if (index == 0) - header.title.text = @"Document"; + translatedHeader = kit->pClass->translateGet(kit, STR_DESCRIPTION_FACTORY_WRITER, "svt", [app_locale UTF8String]); else if (index == 1) - header.title.text = @"Spreadsheet"; + translatedHeader = kit->pClass->translateGet(kit, STR_DESCRIPTION_FACTORY_CALC, "svt", [app_locale UTF8String]); else if (index == 2) - header.title.text = @"Presentation"; + translatedHeader = kit->pClass->translateGet(kit, STR_DESCRIPTION_FACTORY_IMPRESS, "svt", [app_locale UTF8String]); + else + abort(); + + header.title.text = [NSString stringWithUTF8String:translatedHeader]; + + free(translatedHeader); return header; } @@ -107,12 +120,10 @@ static NSString *mapTemplateExtensionToActual(NSString *templateName) { // Load the template into LibreOffice core, save as the corresponding document type (with the // same basename), and then proceed to edit that. - LibreOfficeKit *kit = lok_init_2(nullptr, nullptr); kit->pClass->registerCallback(kit, [](int, const char *, void*){}, nullptr); LibreOfficeKitDocument *doc = kit->pClass->documentLoad(kit, [[selectedTemplate absoluteString] UTF8String]); doc->pClass->saveAs(doc, [[newURL absoluteString] UTF8String], nullptr, nullptr); doc->pClass->destroy(doc); - kit->pClass->destroy(kit); self.importHandler(newURL, UIDocumentBrowserImportModeMove); commit c65f3e43a10f63aed735ee54b4ddab49a2679834 Author: Tor Lillqvist <t...@collabora.com> AuthorDate: Mon Dec 10 19:46:52 2018 +0200 Commit: Tor Lillqvist <t...@collabora.com> CommitDate: Mon Dec 10 22:41:55 2018 +0200 Fetch the locale already in the AppDelegate's didFinishLaunchingWithOptions It will be needed by code that runs before the Document object is created. Change-Id: I5c4646e08c670b88b6d3a4d38450cc80e11ec402 diff --git a/ios/Mobile/AppDelegate.h b/ios/Mobile/AppDelegate.h index b373e8759..cc6d4a629 100644 --- a/ios/Mobile/AppDelegate.h +++ b/ios/Mobile/AppDelegate.h @@ -8,14 +8,13 @@ #import <UIKit/UIKit.h> -//#define LOK_USE_UNSTABLE_API -//#import <LibreOfficeKit/LibreOfficeKit.h> - @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @end +extern NSString *app_locale; + // vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/ios/Mobile/AppDelegate.mm b/ios/Mobile/AppDelegate.mm index 50d4b791d..99cf64d5c 100644 --- a/ios/Mobile/AppDelegate.mm +++ b/ios/Mobile/AppDelegate.mm @@ -24,9 +24,7 @@ static LOOLWSD *loolwsd = nullptr; -@interface AppDelegate () - -@end +NSString *app_locale; @implementation AppDelegate @@ -35,6 +33,16 @@ static LOOLWSD *loolwsd = nullptr; if (!trace) trace = strdup("warning"); + // Having LANG in the environment is expected to happen only when debugging from Xcode. When + // testing some language one doesn't know it might be risky to simply set one's iPad to that + // language, as it might be hard to find the way to set it back to a known language. + + char *lang = std::getenv("LANG"); + if (lang != nullptr) + app_locale = [NSString stringWithUTF8String:lang]; + else + app_locale = [[NSLocale preferredLanguages] firstObject]; + Log::initialize("Mobile", trace, false, false, {}); Util::setThreadName("main"); fakeSocketSetLoggingCallback([](const std::string& line) diff --git a/ios/Mobile/Document.mm b/ios/Mobile/Document.mm index 241e2cb3d..1a0ccdcde 100644 --- a/ios/Mobile/Document.mm +++ b/ios/Mobile/Document.mm @@ -51,22 +51,14 @@ fakeClientFd = fakeSocketSocket(); NSString *uri = [[self fileURL] absoluteString]; - // Having LANG in the environment is expected to happen only when debugging from Xcode - char *lang = std::getenv("LANG"); - NSString *locale; - if (lang != nullptr) - locale = [NSString stringWithUTF8String:lang]; - else - locale = [[NSLocale preferredLanguages] firstObject]; - - comphelper::LibreOfficeKit::setLanguageTag(LanguageTag(OUString::fromUtf8(OString([locale UTF8String])), true)); + comphelper::LibreOfficeKit::setLanguageTag(LanguageTag(OUString::fromUtf8(OString([app_locale UTF8String])), true)); NSURL *url = [[NSBundle mainBundle] URLForResource:@"loleaflet" withExtension:@"html"]; NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO]; components.queryItems = @[ [NSURLQueryItem queryItemWithName:@"file_path" value:uri], [NSURLQueryItem queryItemWithName:@"closebutton" value:@"1"], [NSURLQueryItem queryItemWithName:@"permission" value:@"edit"], - [NSURLQueryItem queryItemWithName:@"lang" value:locale] + [NSURLQueryItem queryItemWithName:@"lang" value:app_locale] ]; NSURLRequest *request = [[NSURLRequest alloc]initWithURL:components.URL]; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits