Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(43)

Side by Side Diff: ui/base/l10n/l10n_util_mac.mm

Issue 854713003: More old files deletion. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fix tryjobs? Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/base/l10n/l10n_util_mac.h ('k') | ui/base/l10n/l10n_util_mac_unittest.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import <Foundation/Foundation.h>
6
7 #include "base/lazy_instance.h"
8 #include "base/logging.h"
9 #include "base/mac/bundle_locations.h"
10 #include "base/strings/sys_string_conversions.h"
11 #include "ui/base/l10n/l10n_util.h"
12 #include "ui/base/l10n/l10n_util_mac.h"
13
14 namespace {
15
16 base::LazyInstance<std::string> g_overridden_locale = LAZY_INSTANCE_INITIALIZER;
17
18 } // namespace
19
20 namespace l10n_util {
21
22 const std::string& GetLocaleOverride() {
23 return g_overridden_locale.Get();
24 }
25
26 void OverrideLocaleWithCocoaLocale() {
27 // NSBundle really should only be called on the main thread.
28 DCHECK([NSThread isMainThread]);
29
30 // Chrome really only has one concept of locale, but Mac OS X has locale and
31 // language that can be set independently. After talking with Chrome UX folks
32 // (Cole), the best path from an experience point of view is to map the Mac OS
33 // X language into the Chrome locale. This way strings like "Yesterday" and
34 // "Today" are in the same language as raw dates like "March 20, 1999" (Chrome
35 // strings resources vs ICU generated strings). This also makes the Mac acts
36 // like other Chrome platforms.
37 NSArray* languageList = [base::mac::OuterBundle() preferredLocalizations];
38 NSString* firstLocale = [languageList objectAtIndex:0];
39 // Mac OS X uses "_" instead of "-", so swap to get a real locale value.
40 std::string locale_value =
41 [[firstLocale stringByReplacingOccurrencesOfString:@"_"
42 withString:@"-"] UTF8String];
43
44 // On disk the "en-US" resources are just "en" (http://crbug.com/25578), so
45 // the reverse mapping is done here to continue to feed Chrome the same values
46 // in all cases on all platforms. (l10n_util maps en to en-US if it gets
47 // passed this on the command line)
48 if (locale_value == "en")
49 locale_value = "en-US";
50
51 g_overridden_locale.Get() = locale_value;
52 }
53
54 // Remove the Windows-style accelerator marker and change "..." into an
55 // ellipsis. Returns the result in an autoreleased NSString.
56 NSString* FixUpWindowsStyleLabel(const base::string16& label) {
57 const base::char16 kEllipsisUTF16 = 0x2026;
58 base::string16 ret;
59 size_t label_len = label.length();
60 ret.reserve(label_len);
61 for (size_t i = 0; i < label_len; ++i) {
62 base::char16 c = label[i];
63 if (c == '(' && i + 3 < label_len && label[i + 1] == '&'
64 && label[i + 3] == ')') {
65 // Strip '(&?)' patterns which means Windows-style accelerator in some
66 // non-English locales such as Japanese.
67 i += 3;
68 } else if (c == '&') {
69 if (i + 1 < label_len && label[i + 1] == '&') {
70 ret.push_back(c);
71 ++i;
72 }
73 } else if (c == '.' && i + 2 < label_len && label[i + 1] == '.'
74 && label[i + 2] == '.') {
75 ret.push_back(kEllipsisUTF16);
76 i += 2;
77 } else {
78 ret.push_back(c);
79 }
80 }
81
82 return base::SysUTF16ToNSString(ret);
83 }
84
85 NSString* GetNSString(int message_id) {
86 return base::SysUTF16ToNSString(l10n_util::GetStringUTF16(message_id));
87 }
88
89 NSString* GetNSStringF(int message_id,
90 const base::string16& a) {
91 return base::SysUTF16ToNSString(l10n_util::GetStringFUTF16(message_id,
92 a));
93 }
94
95 NSString* GetNSStringF(int message_id,
96 const base::string16& a,
97 const base::string16& b) {
98 return base::SysUTF16ToNSString(l10n_util::GetStringFUTF16(message_id,
99 a, b));
100 }
101
102 NSString* GetNSStringF(int message_id,
103 const base::string16& a,
104 const base::string16& b,
105 const base::string16& c) {
106 return base::SysUTF16ToNSString(l10n_util::GetStringFUTF16(message_id,
107 a, b, c));
108 }
109
110 NSString* GetNSStringF(int message_id,
111 const base::string16& a,
112 const base::string16& b,
113 const base::string16& c,
114 const base::string16& d) {
115 return base::SysUTF16ToNSString(l10n_util::GetStringFUTF16(message_id,
116 a, b, c, d));
117 }
118
119 NSString* GetNSStringF(int message_id,
120 const base::string16& a,
121 const base::string16& b,
122 std::vector<size_t>* offsets) {
123 return base::SysUTF16ToNSString(l10n_util::GetStringFUTF16(message_id,
124 a, b, offsets));
125 }
126
127 NSString* GetNSStringWithFixup(int message_id) {
128 return FixUpWindowsStyleLabel(l10n_util::GetStringUTF16(message_id));
129 }
130
131 NSString* GetNSStringFWithFixup(int message_id,
132 const base::string16& a) {
133 return FixUpWindowsStyleLabel(l10n_util::GetStringFUTF16(message_id,
134 a));
135 }
136
137 NSString* GetNSStringFWithFixup(int message_id,
138 const base::string16& a,
139 const base::string16& b) {
140 return FixUpWindowsStyleLabel(l10n_util::GetStringFUTF16(message_id,
141 a, b));
142 }
143
144 NSString* GetNSStringFWithFixup(int message_id,
145 const base::string16& a,
146 const base::string16& b,
147 const base::string16& c) {
148 return FixUpWindowsStyleLabel(l10n_util::GetStringFUTF16(message_id,
149 a, b, c));
150 }
151
152 NSString* GetNSStringFWithFixup(int message_id,
153 const base::string16& a,
154 const base::string16& b,
155 const base::string16& c,
156 const base::string16& d) {
157 return FixUpWindowsStyleLabel(l10n_util::GetStringFUTF16(message_id,
158 a, b, c, d));
159 }
160
161
162 } // namespace l10n_util
OLDNEW
« no previous file with comments | « ui/base/l10n/l10n_util_mac.h ('k') | ui/base/l10n/l10n_util_mac_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698