File: Locale_Protocol.swift

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (124 lines) | stat: -rw-r--r-- 4,840 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//

// Required to be `AnyObject` because it optimizes the call sites in the `struct` wrapper for efficient function dispatch.
package protocol _LocaleProtocol : AnyObject, Sendable, CustomDebugStringConvertible {

    init(identifier: String, prefs: LocalePreferences?)
    init(name: String?, prefs: LocalePreferences, disableBundleMatching: Bool)
    init(components: Locale.Components)
        
    func copy(newCalendarIdentifier identifier: Calendar.Identifier) -> any _LocaleProtocol
    
    var debugDescription: String { get }
    var isAutoupdating: Bool { get }
    var isBridged: Bool { get }
    
    var identifier: String { get }
    
    func identifierDisplayName(for value: String) -> String?
    func languageCodeDisplayName(for value: String) -> String?
    func countryCodeDisplayName(for regionCode: String) -> String?
    func scriptCodeDisplayName(for scriptCode: String) -> String?
    func variantCodeDisplayName(for variantCode: String) -> String?
    func calendarIdentifierDisplayName(for value: Calendar.Identifier) -> String?
    func currencyCodeDisplayName(for value: String) -> String?
    func currencySymbolDisplayName(for value: String) -> String?
    func collationIdentifierDisplayName(for value: String) -> String?
    func collatorIdentifierDisplayName(for collatorIdentifier: String) -> String?
    
    var languageCode: String? { get }
    var scriptCode: String? { get }
    var variantCode: String? { get }
    var regionCode: String? { get }
    
#if FOUNDATION_FRAMEWORK
    var exemplarCharacterSet: CharacterSet? { get }
#endif

    var calendar: Calendar { get }
    var calendarIdentifier: Calendar.Identifier { get }
    var collationIdentifier: String? { get }
    var usesMetricSystem: Bool { get }
    var decimalSeparator: String? { get }
    var groupingSeparator: String? { get }
    var currencySymbol: String? { get }
    var currencyCode: String? { get }
    var collatorIdentifier: String? { get }
    var quotationBeginDelimiter: String? { get }
    var quotationEndDelimiter: String? { get }
    var alternateQuotationBeginDelimiter: String? { get }
    var alternateQuotationEndDelimiter: String? { get }
    var measurementSystem: Locale.MeasurementSystem { get }
    var currency: Locale.Currency? { get }
    var numberingSystem: Locale.NumberingSystem { get }
    var availableNumberingSystems: [Locale.NumberingSystem] { get }
    var firstDayOfWeek: Locale.Weekday { get }
    var weekendRange: WeekendRange? { get }
    var minimumDaysInFirstWeek: Int { get }
    var language: Locale.Language { get }
    var hourCycle: Locale.HourCycle { get }
    var collation: Locale.Collation { get }
    var region: Locale.Region? { get }
    var timeZone: TimeZone? { get }
    var subdivision: Locale.Subdivision? { get }
    var variant: Locale.Variant? { get }
    var temperatureUnit: LocalePreferences.TemperatureUnit { get }

    func identifier(_ type: Locale.IdentifierType) -> String

    var forceHourCycle: Locale.HourCycle? { get }
    func forceFirstWeekday(_ calendar: Calendar.Identifier) -> Locale.Weekday?
    func forceMinDaysInFirstWeek(_ calendar: Calendar.Identifier) -> Int?
    var forceMeasurementSystem: Locale.MeasurementSystem? { get }
    var forceTemperatureUnit: LocalePreferences.TemperatureUnit? { get }
    
    var prefs: LocalePreferences? { get }
    
    var identifierCapturingPreferences: String { get }
    
    var doesNotRequireSpecialCaseHandling: Bool { get }
    
#if FOUNDATION_FRAMEWORK
    func pref(for key: String) -> Any?
    
    func bridgeToNSLocale() -> NSLocale
    
#if !NO_FORMATTERS
    // This is framework-only because Date.FormatStyle.DateStlye is Internationalization-only
    func customDateFormat(_ style: Date.FormatStyle.DateStyle) -> String?
#endif
#endif
}

extension _LocaleProtocol {
    package var doesNotRequireSpecialCaseHandling: Bool {
        // Some implementations may cache this value, but we can provide a default value here.
        Locale.identifierDoesNotRequireSpecialCaseHandling(identifier)
    }
    
    package var regionCode: String? {
        region?.identifier
    }
    
    package var debugDescription: String {
        identifier
    }
    
    package var isAutoupdating: Bool {
        false
    }
    
    package var isBridged: Bool {
        false
    }
}