Skip to content

Commit

Permalink
Merge pull request #922 from wikimedia/feature/simplified_chinese/T13…
Browse files Browse the repository at this point in the history
…4967

Feature/simplified chinese/T134967
  • Loading branch information
coreyfloyd committed Sep 23, 2016
2 parents 6978043 + 287376e commit 94a8f3b
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 9 deletions.
6 changes: 6 additions & 0 deletions Wikipedia.xcodeproj/project.pbxproj
Expand Up @@ -793,6 +793,8 @@
D8B9E2C81D7617C000A465FF /* WMFDatabaseDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E33F2B31D57E15300C6CF94 /* WMFDatabaseDataSource.m */; };
D8B9E2C91D7617C200A465FF /* MWKDataStore+WMFDataSources.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E01B2B31D5BFF13005E3134 /* MWKDataStore+WMFDataSources.h */; settings = {ATTRIBUTES = (Public, ); }; };
D8B9E2CA1D7617C900A465FF /* MWKDataStore+WMFDataSources.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E01B2B41D5BFF13005E3134 /* MWKDataStore+WMFDataSources.m */; };
D8BBBCDA1D9456AC00DECA36 /* NSLocale+WMFExtras.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0E804971C0CE0B40065EBC0 /* NSLocale+WMFExtras.swift */; };
D8BBBCE11D94603800DECA36 /* WMFLocaleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D8BBBCE01D94603800DECA36 /* WMFLocaleTests.m */; };
D8C0C00B1D144FF30019374D /* WMFProxyServer.m in Sources */ = {isa = PBXBuildFile; fileRef = D8C0C00A1D144FF30019374D /* WMFProxyServer.m */; };
D8C9BFE81D6CC92C0084624F /* MWKLanguageLinkResponseSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = B0E8062D1C0CE7670065EBC0 /* MWKLanguageLinkResponseSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; };
D8C9BFE91D6CC9310084624F /* MWKLanguageLinkResponseSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = B0E8062E1C0CE7670065EBC0 /* MWKLanguageLinkResponseSerializer.m */; };
Expand Down Expand Up @@ -2340,6 +2342,7 @@
D8AC39351D6F25A3007E3C14 /* WMFUtilities-global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "WMFUtilities-global.h"; path = "WMFUtilities/WMFUtilities-global.h"; sourceTree = SOURCE_ROOT; };
D8AC39361D6F25A3007E3C14 /* WMFUtilities-prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "WMFUtilities-prefix.pch"; path = "WMFUtilities/WMFUtilities-prefix.pch"; sourceTree = SOURCE_ROOT; };
D8AC39371D6F25A4007E3C14 /* WMFUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WMFUtilities.h; path = WMFUtilities/WMFUtilities.h; sourceTree = SOURCE_ROOT; };
D8BBBCE01D94603800DECA36 /* WMFLocaleTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WMFLocaleTests.m; sourceTree = "<group>"; };
D8C0C0091D144FF30019374D /* WMFProxyServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMFProxyServer.h; sourceTree = "<group>"; };
D8C0C00A1D144FF30019374D /* WMFProxyServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WMFProxyServer.m; sourceTree = "<group>"; };
D8CDBA9E1D11976D0004DE05 /* TableOfContentsAboutThisArticleItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TableOfContentsAboutThisArticleItem.swift; path = Wikipedia/Code/TableOfContentsAboutThisArticleItem.swift; sourceTree = SOURCE_ROOT; };
Expand Down Expand Up @@ -5104,6 +5107,7 @@
children = (
BCB669D11A83F6D300C7B1FE /* MediaWikiKitTests */,
B0E808FC1C0D18730065EBC0 /* WMFJoinedPropertyParametersTests.m */,
D8BBBCE01D94603800DECA36 /* WMFLocaleTests.m */,
D84649AC1D4514F7009DB4A0 /* WMFTaskGroupTests.m */,
B0E808FE1C0D18800065EBC0 /* WMFErrorForApiErrorObjectTests.m */,
B0E809001C0D188A0065EBC0 /* NSArray+PredicateTests.m */,
Expand Down Expand Up @@ -6761,6 +6765,7 @@
D84649AD1D4514F7009DB4A0 /* WMFTaskGroupTests.m in Sources */,
B0E808B61C0D17070065EBC0 /* LSStubResponseDSL+WithJSON.m in Sources */,
B0E809371C0D1A420065EBC0 /* MWKLanguageLinkControllerTests.m in Sources */,
D8BBBCE11D94603800DECA36 /* WMFLocaleTests.m in Sources */,
B0E809411C0D1A820065EBC0 /* NSURL+WMFLinkParsingTests.m in Sources */,
B0E808981C0D16430065EBC0 /* XCTestCase+WMFLocaleTesting.m in Sources */,
B0E809011C0D188B0065EBC0 /* NSArray+PredicateTests.m in Sources */,
Expand Down Expand Up @@ -7087,6 +7092,7 @@
B0E5E9721C8237EC00D8E267 /* WMFWelcomeFadeInAndUpOnceViewController.m in Sources */,
D81FB2691D47B5DC0000C685 /* WMFCVLInvalidationContext.m in Sources */,
B0E804411C0CDF850065EBC0 /* MenuButton.m in Sources */,
D8BBBCDA1D9456AC00DECA36 /* NSLocale+WMFExtras.swift in Sources */,
B0E804BA1C0CE0B40065EBC0 /* BITHockeyManager+WMFExtensions.m in Sources */,
D84692E01D5E1E3F000A7058 /* WMFTableOfContentsHeader.swift in Sources */,
B0E8070A1C0CEBDA0065EBC0 /* WMFShareCardImageContainer.m in Sources */,
Expand Down
8 changes: 0 additions & 8 deletions Wikipedia.xcodeproj/xcshareddata/xcschemes/Wikipedia.xcscheme
Expand Up @@ -117,14 +117,6 @@
argument = "-WMFVisualTestBatchRecordMode NO"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "-AppleLocale en"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "-AppleLanguages (en)"
isEnabled = "YES">
</CommandLineArgument>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
Expand Down
5 changes: 4 additions & 1 deletion Wikipedia/Code/AFHTTPRequestSerializer+WMFRequestHeaders.m
@@ -1,7 +1,8 @@
#import "AFHTTPRequestSerializer+WMFRequestHeaders.h"
#import "SessionSingleton.h"
#import "ReadingActionFunnel.h"
#import "WikipediaAppUtils.h"
#import "WikipediaAppUtils.h"
#import <WMFModel/WMFModel-Swift.h>

@implementation AFHTTPRequestSerializer (WMFRequestHeaders)

Expand All @@ -13,6 +14,8 @@ - (void)wmf_applyAppRequestHeaders {
ReadingActionFunnel *funnel = [[ReadingActionFunnel alloc] init];
[self setValue:funnel.appInstallID forHTTPHeaderField:@"X-WMF-UUID"];
}

[self setValue:[NSLocale wmf_acceptLanguageHeaderForPreferredLanguages] forHTTPHeaderField:@"Accept-Language"];
}

@end
54 changes: 54 additions & 0 deletions Wikipedia/Code/NSLocale+WMFExtras.swift
Expand Up @@ -7,7 +7,61 @@ extension NSLocale {
}
return (langCode == "en" || langCode.hasPrefix("en-")) ? true : false;
}

public func wmf_localizedLanguageNameForCode(code: String) -> String? {
return self.displayNameForKey(NSLocaleLanguageCode, value: code)
}

public class func wmf_uniqueLanguageCodesForLanguages(languages: [String]) -> [String] {
var uniqueLanguageCodes = [String]()
for preferredLanguage in languages {
var components = preferredLanguage.componentsSeparatedByString("-")
if components.count > 1 {
components.removeAtIndex(components.count - 1)
}
let languageCode = components.joinWithSeparator("-").lowercaseString
if uniqueLanguageCodes.contains(languageCode) {
continue
}
uniqueLanguageCodes.append(languageCode)
}
return uniqueLanguageCodes
}

public class var wmf_preferredLanguageCodes: [String] {
get {
return wmf_uniqueLanguageCodesForLanguages(preferredLanguages())
}
}

public class func wmf_acceptLanguageHeaderForLanguageCodes(languageCodes: [String]) -> String {
let count: Double = Double(languageCodes.count)
var q: Double = 1.0
let qDelta = 1.0/count
var acceptLanguageString = ""
for languageCode in languageCodes {
if q < 1.0 {
acceptLanguageString += ", "
}
acceptLanguageString += languageCode
if q < 1.0 {
acceptLanguageString += String(format: ";q=%.2g", q)
}
q -= qDelta
}
return acceptLanguageString
}

public class var wmf_acceptLanguageHeaderForPreferredLanguages: String {
get {
struct Once {
static var token: dispatch_once_t = 0
static var header: String = ""
}
dispatch_once(&Once.token) {
Once.header = wmf_acceptLanguageHeaderForLanguageCodes(wmf_preferredLanguageCodes)
}
return Once.header
}
}
}
19 changes: 19 additions & 0 deletions WikipediaUnitTests/Code/WMFLocaleTests.m
@@ -0,0 +1,19 @@
#import <XCTest/XCTest.h>
#import <WMFModel/WMFModel-Swift.h>

@interface WMFLocaleTests : XCTestCase

@end

@implementation WMFLocaleTests

- (void)testLocaleHeaders {
NSArray *languages = [NSLocale wmf_uniqueLanguageCodesForLanguages:@[@"en-US", @"zh-Hans-US", @"zh-Hant-US", @"en-GB"]];
NSArray *expectedResult = @[@"en", @"zh-hans", @"zh-hant"];
XCTAssert([languages isEqualToArray:expectedResult]);

NSString *header = [NSLocale wmf_acceptLanguageHeaderForLanguageCodes:languages];
XCTAssert([header isEqualToString:@"en, zh-hans;q=0.67, zh-hant;q=0.33"]);
}

@end

0 comments on commit 94a8f3b

Please sign in to comment.