-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Updated language list from XCode 12.5 #3
Comments
@karlingen That's brilliant! Thanks so much! I'll take a look later today to see if I can integrate it. |
@karlingen I've played with this a bit. I've come up with this code, but it's still rough and not perfect:
But here's the big problem: The language list doesn't match the list in Xcode 100%. For example, Xcode 12.5 lists a language called "Interlingue (ie)". That language is missing in the output of the code above. I wonder how to obtain a 100% match of the list of languages a given Xcode version lists in its UI. |
@karlingen Created a PR here: #4 |
@jfahrenkrug Good catch! Seems like we could combine the output with the language codes given by import Foundation
struct LanguageInfo: Codable {
let name: String
let symbol: String
}
let availableLocaleIDs = Locale.availableIdentifiers
let outputLocale = NSLocale(localeIdentifier: "en_US")
var allCodes: [LanguageInfo] = []
var langsByDisplayName: [String: LanguageInfo] = [:]
for localeCode in availableLocaleIDs {
let displayName = outputLocale.displayName(forKey: NSLocale.Key.identifier, value: localeCode)!
let langInfo = LanguageInfo(name: displayName, symbol: localeCode.replacingOccurrences(of: "_", with: "-"))
langsByDisplayName[displayName] = langInfo
}
// Find language codes that "availableIdentifiers" failed to provide
for localeCode in Locale.isoLanguageCodes {
if !availableLocaleIDs.contains(where: { $0.lowercased() == localeCode.lowercased() }) {
if let displayName = outputLocale.displayName(forKey: NSLocale.Key.identifier, value: localeCode) {
let langInfo = LanguageInfo(name: displayName, symbol: localeCode.replacingOccurrences(of: "_", with: "-"))
langsByDisplayName[displayName] = langInfo
} else {
// The system failed to get a Display Name for the provided language code.
// Todo: Should we do something about it?
// print(localeCode)
// Currently, this outputs the following IDs: mdh, mis, mo, swc
}
}
}
for name in langsByDisplayName.keys.sorted() {
let langInfo = langsByDisplayName[name]
allCodes.append(langInfo!)
}
let encoder = JSONEncoder()
let encodedData = try! encoder.encode(allCodes)
print(String(data: encodedData, encoding: .utf8)!) This yields the following languages: Click to expand the list
|
@jfahrenkrug Below is the list of language codes that Click to expand the list
However, the problem is that sometimes the parent language code is supported by Xcode, and sometimes it isn't. For instance, But for the language Not sure how we should tackle this.. |
@karlingen Sorry I never replied to this. It would be worth a try to see what would happen if an |
I managed to get an updated language list by running the code below. It's without the country name for now.
I thought it might be a bit easier than going through the list in Xcode.
Formatted output:
Click to expand the list
The text was updated successfully, but these errors were encountered: