1// Copyright (c) 2011 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#ifndef UI_BASE_L10N_L10N_UTIL_MAC_H_
6#define UI_BASE_L10N_L10N_UTIL_MAC_H_
7
8#include <string>
9#include <vector>
10
11#include "base/basictypes.h"
12#include "base/strings/string16.h"
13#include "ui/base/ui_base_export.h"
14
15#ifdef __OBJC__
16@class NSString;
17#else
18class NSString;
19#endif
20
21namespace l10n_util {
22
23// Remove the Windows-style accelerator marker (for labels, menuitems, etc.)
24// and change "..." into an ellipsis.
25// Returns the result in an autoreleased NSString.
26UI_BASE_EXPORT NSString* FixUpWindowsStyleLabel(const base::string16& label);
27
28// Pulls resource string from the string bundle and returns it.
29UI_BASE_EXPORT NSString* GetNSString(int message_id);
30
31// Get a resource string and replace $1-$2-$3 with |a| and |b|
32// respectively.  Additionally, $$ is replaced by $.
33UI_BASE_EXPORT NSString* GetNSStringF(int message_id, const base::string16& a);
34UI_BASE_EXPORT NSString* GetNSStringF(int message_id,
35                                      const base::string16& a,
36                                      const base::string16& b);
37UI_BASE_EXPORT NSString* GetNSStringF(int message_id,
38                                      const base::string16& a,
39                                      const base::string16& b,
40                                      const base::string16& c);
41UI_BASE_EXPORT NSString* GetNSStringF(int message_id,
42                                      const base::string16& a,
43                                      const base::string16& b,
44                                      const base::string16& c,
45                                      const base::string16& d);
46
47// Variants that return the offset(s) of the replaced parameters. (See
48// app/l10n_util.h for more details.)
49UI_BASE_EXPORT NSString* GetNSStringF(int message_id,
50                                      const base::string16& a,
51                                      const base::string16& b,
52                                      std::vector<size_t>* offsets);
53
54// Same as GetNSString, but runs the result through FixUpWindowsStyleLabel
55// before returning it.
56UI_BASE_EXPORT NSString* GetNSStringWithFixup(int message_id);
57
58// Same as GetNSStringF, but runs the result through FixUpWindowsStyleLabel
59// before returning it.
60UI_BASE_EXPORT NSString* GetNSStringFWithFixup(int message_id,
61                                               const base::string16& a);
62UI_BASE_EXPORT NSString* GetNSStringFWithFixup(int message_id,
63                                               const base::string16& a,
64                                               const base::string16& b);
65UI_BASE_EXPORT NSString* GetNSStringFWithFixup(int message_id,
66                                               const base::string16& a,
67                                               const base::string16& b,
68                                               const base::string16& c);
69UI_BASE_EXPORT NSString* GetNSStringFWithFixup(int message_id,
70                                               const base::string16& a,
71                                               const base::string16& b,
72                                               const base::string16& c,
73                                               const base::string16& d);
74
75// Support the override of the locale with the value from Cocoa.
76UI_BASE_EXPORT void OverrideLocaleWithCocoaLocale();
77UI_BASE_EXPORT const std::string& GetLocaleOverride();
78
79}  // namespace l10n_util
80
81#endif  // UI_BASE_L10N_L10N_UTIL_MAC_H_
82