feat(calculator): initialize basic SoulverCore library

This commit adds a native calculation engine by integrating the pre-compiled SoulverCore Swift library. A Swift package (`SoulverWrapper`) was created to act as a C-compatible FFI bridge, allowing the Rust backend to call into the library (because the library does not include de-mangled names). The build process was updated to compile this Swift wrapper and correctly bundle the necessary shared libraries and resources for both development and production environments. A new Tauri command, `calculate_soulver`, exposes this functionality to the Svelte frontend.

In the future, we will be using this functionality to improve the built-in calculator.
This commit is contained in:
ByteAtATime 2025-06-28 20:08:43 -07:00
parent c75383b714
commit 5f1ad1c84a
No known key found for this signature in database
88 changed files with 67161 additions and 3 deletions

8
src-tauri/SoulverWrapper/.gitignore vendored Normal file
View file

@ -0,0 +1,8 @@
.DS_Store
/.build
/Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc

View file

@ -0,0 +1,38 @@
// swift-tools-version: 6.1
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "SoulverWrapper",
products: [
// Products define the executables and libraries a package produces, making them visible to other packages.
.library(
name: "SoulverWrapper",
type: .dynamic,
targets: ["SoulverWrapper"]),
],
dependencies: [],
targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.target(
name: "SoulverWrapper",
dependencies: [],
swiftSettings: [
.unsafeFlags(["-I", "Vendor/SoulverCore-linux/Modules"])
],
linkerSettings: [
.linkedLibrary("SoulverCoreDynamic"),
.unsafeFlags([
"-L", "Vendor/SoulverCore-linux",
"-Xlinker", "-rpath", "-Xlinker", "$ORIGIN"
])
]
),
.testTarget(
name: "SoulverWrapperTests",
dependencies: ["SoulverWrapper"]
),
]
)

View file

@ -0,0 +1,51 @@
import SoulverCore
import Foundation
@MainActor
private var globalCalculator: Calculator?
@MainActor
@_cdecl("initialize_soulver")
public func initialize_soulver(resourcesPath: UnsafePointer<CChar>) {
guard globalCalculator == nil else {
print("Soulver Wrapper: Calculator already initialized.")
return
}
let pathString = String(cString: resourcesPath)
let resourcesURL = URL(fileURLWithPath: pathString)
guard let soulverResourceBundle = SoulverCore.ResourceBundle(url: resourcesURL) else {
print("❌ Soulver Wrapper: Failed to create SoulverCore.ResourceBundle from path: \(pathString)")
return
}
let customization = EngineCustomization(
resourcesBundle: soulverResourceBundle,
locale: .autoupdatingCurrent
)
globalCalculator = Calculator(customization: customization)
print("✅ Soulver calculator initialized with EngineCustomization using SoulverCore.ResourceBundle at \(resourcesURL.path)")
}
@MainActor
@_cdecl("evaluate")
public func evaluate(expression: UnsafePointer<CChar>) -> UnsafeMutablePointer<CChar>? {
guard let calculator = globalCalculator else {
let errorMsg = "Error: SoulverCore not initialized. Call initialize_soulver() first."
print("❌ Soulver Wrapper: \(errorMsg)")
return strdup(errorMsg)
}
let swiftExpression = String(cString: expression)
let result = calculator.calculate(swiftExpression)
let resultString = result.stringValue
return strdup(resultString)
}
@_cdecl("free_string")
public func free_string(ptr: UnsafeMutablePointer<CChar>?) {
free(ptr)
}

View file

@ -0,0 +1,6 @@
import Testing
@testable import SoulverWrapper
@Test func example() async throws {
// Write your test here and use APIs like `#expect(...)` to check expected conditions.
}

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
</dict>
</plist>

View file

@ -0,0 +1,180 @@
{
"rounding": [
{
"prototypeExpressions": [
"gerundet"
],
"identifier": "rounded"
},
{
"prototypeExpressions": [
"aufgerundet"
],
"identifier": "roundedUp"
},
{
"prototypeExpressions": [
"abgerundet"
],
"identifier": "roundedDown"
},
{
"prototypeExpressions": [
"__converter_symbol 3 dezimalstellen gerundet",
"gerundet zu 3 dezimalstellen",
"gerundet auf 3 dezimalstellen",
"gerundet 3 dezimalstellen",
"3 nk-stellen",
"3 nk",
"3 dezimalstellen",
"3 ziffer",
"3 nk-stelle",
"3 stellen",
"3 nk-stellen",
"3 nk",
"3 ziffern",
"1 dezimalstelle",
"1 nachkommastelle",
"3 dezimalpunkte",
"3 nachkommastellen"
],
"identifier": "roundedToDp"
},
{
"prototypeExpressions": [
"aufgerundet auf nächste 10",
"auf die nächste 10",
"aufrunden auf die nächste 10",
"aufgerundet auf die nächste 10"
],
"identifier": "roundedUpToNearestX"
},
{
"prototypeExpressions": [
"abgerundet auf nächste 10",
"auf die nächste 10 abrunden",
"abrunden auf die nächste 10",
"abgerundet auf die nächste 10"
],
"identifier": "roundedDownToNearestX"
},
{
"prototypeExpressions": [
"auf die nächste 10",
"runden auf die nächste 10",
"gerundet auf die nächste 10"
],
"identifier": "roundedToNearestX"
}
],
"compoundUnits": [
{
"prototypeExpressions": [
"__converter_symbol jahre und monate"
],
"identifier": "yearsAndMonths"
},
{
"prototypeExpressions": [
"__converter_symbol monate und wochen"
],
"identifier": "monthsAndWeeks"
},
{
"prototypeExpressions": [
"__converter_symbol monate und tage"
],
"identifier": "monthsAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol wochen und tage",
"__converter_symbol tage und wochen",
"__converter_symbol tage & wochen"
],
"identifier": "weeksAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol tage und stunden"
],
"identifier": "daysAndHours"
},
{
"prototypeExpressions": [
"__converter_symbol stunden und minuten"
],
"identifier": "hoursAndMinutes"
},
{
"prototypeExpressions": [
"__converter_symbol minuten und sekunden"
],
"identifier": "minutesAndSeconds"
}
],
"dateTime": [
{
"prototypeExpressions": [
"__converter_symbol Datum"
],
"identifier": "toDate"
},
{
"prototypeExpressions": [
"__converter_symbol zeitstempel"
],
"identifier": "toTimestamp"
},
{
"prototypeExpressions": [
"__converter_symbol zeitdauer",
"__converter_symbol zeitspanne"
],
"identifier": "toTimespan"
},
{
"prototypeExpressions": [
"__converter_symbol rundenzeit"
],
"identifier": "toLaptime"
}
],
"numberForms": [
{
"prototypeExpressions": [
"__converter_symbol multiplikator"
],
"identifier": "toMultiplier"
},
{
"prototypeExpressions": [
"__converter_symbol zahl",
"__converter_symbol nummer"
],
"identifier": "toDecimal"
},
{
"prototypeExpressions": [
"__converter_symbol bruch"
],
"identifier": "toFraction"
}
],
"music": [
{
"prototypeExpressions": [
"__converter_symbol tonhöhe"
],
"identifier": "toPitch"
}
],
"unitRelated": [
{
"prototypeExpressions": [
"__converter_symbol dms"
],
"identifier": "toDMS"
}
]
}

View file

@ -0,0 +1,531 @@
{
"weatherRelated": [
{
"identifier": "lowTemperature",
"prototypeExpressions": [
"tiefsttemperatur in __timezone",
"min. temp. in __timezone",
"min. in __timezone",
"niedrig in __timezone",
"__timezone min. temp.",
"__timezone min.",
"__timezone niedrig"
]
},
{
"identifier": "highTemperature",
"prototypeExpressions": [
"höchsttemperatur in __timezone",
"max. temp. in __timezone",
"max. in __timezone",
"hoch in __timezone",
"__timezone max. temp.",
"__timezone max.",
"__timezone hoch"
]
},
{
"identifier": "precipitationChance",
"prototypeExpressions": [
"regenwahrscheinlichkeit in __timezone",
"__timezone regenwahrscheinlichkeit"
]
},
{
"identifier": "rainfallAmount",
"prototypeExpressions": [
"regenmenge in __timezone",
"regenfall in __timezone",
"regen in __timezone",
"niederschlag in __timezone",
"__timezone regen"
]
},
{
"identifier": "snowfallAmount",
"prototypeExpressions": [
"schneemenge in __timezone",
"schneefall in __timezone",
"schnee in __timezone",
"__timezone schnee"
]
},
{
"identifier": "apparentTemperature",
"prototypeExpressions": [
"gefühlte temperatur in __timezone",
"gefühlte temp. in __timezone",
"scheinbare temperatur in __timezone",
"__timezone gefühlt"
]
},
{
"identifier": "currentTemperature",
"prototypeExpressions": [
"aktuelle temperatur in __timezone",
"temperatur in __timezone"
]
},
{
"identifier": "weatherConditions",
"prototypeExpressions": [
"wetter in __timezone",
"wetterbedingungen in __timezone",
"witterungsbedingungen in __timezone"
]
},
{
"identifier": "humidity",
"prototypeExpressions": [
"luftfeuchtigkeit in __timezone",
"__timezone luftfeuchtigkeit"
]
},
{
"identifier": "cloudCover",
"prototypeExpressions": [
"bewölkung in __timezone",
"wolkendecke in __timezone",
"__timezone wolkendecke",
"__timezone bewölkung"
]
},
{
"identifier": "visibility",
"prototypeExpressions": [
"sichtweite in __timezone",
"__timezone sichtweite"
]
},
{
"identifier": "windSpeed",
"prototypeExpressions": [
"windstärke in __timezone",
"windgeschwindigkeit in __timezone",
"wind in __timezone",
"__timezone wind"
]
},
{
"identifier": "windDirection",
"prototypeExpressions": [
"windrichtung in __timezone",
"__timezone windrichtung"
]
},
{
"identifier": "dewPoint",
"prototypeExpressions": [
"taupunkt in __timezone",
"__timezone taupunkt"
]
},
{
"identifier": "uvIndex",
"prototypeExpressions": [
"uv-index in __timezone",
"__timezone uv-index"
]
},
{
"identifier": "pressure",
"prototypeExpressions": [
"luftdruck in __timezone",
"druck in __timezone",
"__timezone druck",
"__timezone luftdruck"
]
},
{
"identifier": "pressureDirection",
"prototypeExpressions": [
"druckrichtung in __timezone",
"__timezone druckrichtung"
]
},
{
"identifier": "sunrise",
"prototypeExpressions": [
"sonnenaufgang in __timezone",
"__timezone sonnenaufgang"
]
},
{
"identifier": "sunset",
"prototypeExpressions": [
"sonnenuntergang in __timezone",
"__timezone sonnenuntergang"
]
},
{
"identifier": "moonrise",
"prototypeExpressions": [
"mondaufgang in __timezone",
"mondaufgang __timezone",
"__timezone mondaufgang"
]
},
{
"identifier": "moonset",
"prototypeExpressions": [
"monduntergang in __timezone",
"monduntergang __timezone",
"__timezone monduntergang"
]
},
{
"identifier": "moonPhase",
"prototypeExpressions": [
"mondphase in __timezone",
"mond in __timezone",
"__timezone mond",
"__timezone mondphase"
]
}
],
"financial": [
{
"prototypeExpressions": [
"present value of 1000 after __timespan at __percentage",
"present value of 1000 over __timespan at __percentage"
],
"identifier": "presentValue"
},
{
"prototypeExpressions": [
"annual return on 500 invested 1000 returned after __timespan",
"yearly return on 500 invested 1000 returned after __timespan",
"annual return on 500 invested 1000 returned over __timespan",
"yearly return on 500 invested 1000 returned over __timespan"
],
"identifier": "returnOnInvestmentAfter"
},
{
"prototypeExpressions": [
"500 invested 1000 returned"
],
"identifier": "returnOnInvestment"
},
{
"prototypeExpressions": [
"total repayment on 10000 for __timespan at __percentage",
"total repayment on 10000 after __timespan at __percentage",
"total repayment on 10000 over __timespan at __percentage"
],
"identifier": "totalLoanRepayment"
},
{
"prototypeExpressions": [
"annual repayment on 10000 for __timespan at __percentage",
"annual repayment on 10000 after __timespan at __percentage",
"annual repayment on 10000 over __timespan at __percentage",
"yearly repayment on 10000 over __timespan at __percentage",
"yearly repayment on 10000 after __timespan at __percentage",
"yearly repayment on 10000 for __timespan at __percentage"
],
"identifier": "annualLoanRepayment"
},
{
"prototypeExpressions": [
"monthly repayment on 10000 for __timespan at __percentage",
"monthly repayment on 10000 after __timespan at __percentage",
"monthly repayment on 10000 over __timespan at __percentage"
],
"identifier": "monthlyLoanRepayment"
},
{
"prototypeExpressions": [
"total interest on 10000 for __timespan at __percentage",
"total interest on 10000 after __timespan at __percentage",
"total interest on 10000 over __timespan at __percentage"
],
"identifier": "totalInterestOnLoanRepayment"
},
{
"prototypeExpressions": [
"annual interest on 10000 for __timespan at __percentage",
"annual interest on 10000 after __timespan at __percentage",
"annual interest on 10000 over __timespan at __percentage",
"yearly interest on 10000 over __timespan at __percentage",
"yearly interest on 10000 after __timespan at __percentage",
"yearly interest on 10000 for __timespan at __percentage"
],
"identifier": "annualInterestOnLoanRepayment"
},
{
"prototypeExpressions": [
"monthly interest on 10000 for __timespan at __percentage",
"monthly interest on 10000 after __timespan at __percentage",
"monthly interest on 10000 over __timespan at __percentage"
],
"identifier": "monthlyInterestOnLoanRepayment"
},
{
"prototypeExpressions": [
"100 after __timespan at __percentage",
"100 for __timespan at __percentage",
"100 over __timespan at __percentage"
],
"identifier": "compoundInterest"
}
],
"percentage": [
{
"prototypeExpressions": [
"__percentage von 100"
],
"identifier": "percentOf"
},
{
"prototypeExpressions": [
"__percentage ab von 100"
],
"identifier": "percentOff"
},
{
"prototypeExpressions": [
"__percentage auf 100"
],
"identifier": "percentOn"
},
{
"prototypeExpressions": [
"30 ist __percentage von was",
"30 ist __percentage von welcher zahl"
],
"identifier": "isPercentOfWhat"
},
{
"prototypeExpressions": [
"__percentage von was ist 30"
],
"identifier": "isPercentOfWhatClassic"
},
{
"prototypeExpressions": [
"30 ist __percentage off was"
],
"identifier": "isPercentOffWhat"
},
{
"prototypeExpressions": [
"__percentage ab von was ist 30"
],
"identifier": "isPercentOffWhatClassic"
},
{
"prototypeExpressions": [
"30 ist __percentage on was"
],
"identifier": "isPercentOnWhat"
},
{
"prototypeExpressions": [
"__percentage auf was ist 30"
],
"identifier": "isPercentOnWhatClassic"
},
{
"prototypeExpressions": [
"10 ist wieviel % von 20",
"10 als % von 20",
"10 in % von 30"
],
"identifier": "isWhatPercentOf"
},
{
"prototypeExpressions": [
"10 ist wieviel % off 20",
"10 als % abnahme von 20",
"10 in % ab von 20"
],
"identifier": "isWhatPercentOff"
},
{
"prototypeExpressions": [
"20 ist wieviel % on 10",
"20 sind welche % auf 10",
"20 als % auf 10",
"20 in % auf 10",
"20 als % zunahme auf 10"
],
"identifier": "isWhatPercentOn"
}
],
"datetime": [
{
"prototypeExpressions": [
"__duration zwischen __datestamp und __datestamp",
"__duration zwischen dem __datestamp und dem __datestamp",
"__duration von __datestamp bis __datestamp",
"__duration vom __datestamp bis zum __datestamp",
"__duration in __datestamp als __datestamp"
],
"identifier": "calendarUnitBetweenDates"
},
{
"prototypeExpressions": [
"__duration bis __datestamp",
"__duration vor __datestamp",
"__duration vor dem __datestamp",
"__duration bis zum __datestamp"
],
"identifier": "calendarUnitToDate"
},
{
"prototypeExpressions": [
"__datestamp bis __datestamp",
"__datestamp bis zum __datestamp"
],
"identifier": "intervalBetweenDates"
},
{
"prototypeExpressions": [
"__timestamp bis __timestamp",
"__timestamp bis zum __timestamp"
],
"identifier": "intervalBetweenTimestamps"
},
{
"prototypeExpressions": [
"__duration seit __datestamp",
"__duration seit dem __datestamp"
],
"identifier": "calendarUnitSinceDate"
},
{
"prototypeExpressions": [
"neuer zeitstempel"
],
"identifier": "generateTimestamp"
},
{
"prototypeExpressions": [
"__timespan von __datestamp",
"__timespan nach __datestamp"
],
"identifier": "calendarUnitExpressionAfterDate"
},
{
"prototypeExpressions": [
"__timezone zeit",
"zeit in __timezone"
],
"identifier": "timeInTimezone"
},
{
"prototypeExpressions": [
"zeitdifferenz zwischen __timezone und __timezone",
"differenz zwischen __timezone und __timezone",
"zeitdifferenz zwischen __timezone & __timezone",
"differenz zwischen __timezone & __timezone"
],
"identifier": "differenceBetweenTimezones"
}
],
"general": [
{
"prototypeExpressions": [
"rest von 20 durch 3",
"rest von 20 geteilt durch 3"
],
"identifier": "remainder"
},
{
"prototypeExpressions": [
"hälfte von 20"
],
"identifier": "halfOf"
},
{
"prototypeExpressions": [
"kleinere wert von 2 und 30",
"kleinere zahl von 2 und 30"
],
"identifier": "lesserOf"
},
{
"prototypeExpressions": [
"größere wert von 2 und 30",
"größere zahl von 2 und 30",
"zahl von 2 und 30 ist größer",
"welche der zahlen von 2 und 30 ist größer"
],
"identifier": "greaterOf"
},
{
"prototypeExpressions": [
"mitte zwischen 2 und 32"
],
"identifier": "midpoint"
},
{
"prototypeExpressions": [
"6 ist zu 600 wie was zu 8",
"6 verhält sich zu 600 wie was zu 8"
],
"identifier": "proportionsFindNumerator"
},
{
"prototypeExpressions": [
"6 ist zu 600 wie 8 zu was",
"6 verhält sich zu 600 wie 8 zu was"
],
"identifier": "proportionsFindDenominator"
},
{
"prototypeExpressions": [
"zufallszahl zwischen 1 und 5",
"zufällig zwischen 1 und 5"
],
"identifier": "makeRandomNumber"
},
{
"prototypeExpressions": [
"lcm of 5 and 8",
"lowest common multiple of 5 and 8"
],
"identifier": "lcm"
},
{
"prototypeExpressions": [
"gcd of 20 and 30",
"greatest common divisor of 5 and 8",
"gcf of 20 and 30",
"greatest common factor of 5 and 8"
],
"identifier": "gcd"
}
],
"unitRelated": [
{
"prototypeExpressions": [
"__duration in __timespan"
],
"identifier": "calendarUnitInTimespan"
},
{
"prototypeExpressions": [
"__unit_rate is what / __unit",
"__unit_rate is how much / __unit",
"__unit_rate as / __unit",
"__unit_rate is what /__unit",
"__unit_rate is how much /__unit",
"__unit_rate as /__unit",
"__unit_rate is what per __unit",
"__unit_rate is how much per __unit",
"__unit_rate as per __unit",
"__unit_rate is what per__unit",
"__unit_rate is how much per__unit",
"__unit_rate as per__unit"
],
"identifier": "rateUnitChange"
},
{
"prototypeExpressions": [
"__unit in __unit_expression"
],
"identifier": "unitInUnitExpression"
}
]
}

View file

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>day</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@day@</string>
<key>day</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>Tag</string>
<key>other</key>
<string>Tage</string>
</dict>
</dict>
<key>hr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@hour@</string>
<key>hour</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>Stunde</string>
<key>other</key>
<string>Stunden</string>
</dict>
</dict>
<key>in</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@in@</string>
<key>in</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>Zoll</string>
<key>other</key>
<string>Zoll</string>
</dict>
</dict>
<key>month</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@month@</string>
<key>month</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>Monat</string>
<key>other</key>
<string>Monate</string>
</dict>
</dict>
<key>week</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@week@</string>
<key>week</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>Woche</string>
<key>other</key>
<string>Wochen</string>
</dict>
</dict>
<key>workday</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@workday@</string>
<key>workday</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>Arbeitstag</string>
<key>other</key>
<string>Arbeitstage</string>
</dict>
</dict>
<key>year</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@year@</string>
<key>year</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>Jahr</string>
<key>other</key>
<string>Jahre</string>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,94 @@
{
"fixtures": {
"nextDateQualifiers": [
"nächste",
"nächsten",
"nächstes",
"nächster",
"folgende",
"folgenden",
"folgendes",
"folgender",
"kommende",
"kommenden",
"kommendes",
"kommender"
],
"converterSymbols": [
"bis",
"als",
"nach",
"mit"
],
"percentWords": [
"Prozent",
"Prozentrechnung"
],
"hereAliases": [
"hier"
],
"nowDateAliases": [
"jetzt"
],
"piAliases": [
"π"
],
"divisionOperators": [
"÷",
"pro"
],
"dayOfWeekDateAliases": [
],
"previousDateQualifiers": [
"vergangene",
"vergangenes",
"vergangener",
"vergangenen",
"letzte",
"letztes",
"letzter",
"letzten"
],
"lessThanOrEqualToOperators": [
"<=",
"=<"
],
"prepositionWordsAt": [
"zu",
"je"
],
"subtractionOperators": [
"",
""
],
"conjunctionWordsOr": [
"oder"
],
"todayDateAliases": [
"heute"
],
"additionOperators": [
],
"isNotEqualToOperators": [
"!=",
"=!"
],
"greaterThanOrEqualToOperators": [
">=",
"=>"
],
"multiplicationOperators": [
"×",
"x"
],
"yesterdayDateAliases": [
"gestern"
],
"conjunctionWordsAnd": [
"und"
],
"tomorrowDateAliases": [
"morgen"
]
}
}

View file

@ -0,0 +1,289 @@
{
"rounding": [
{
"prototypeExpressions": [
"rounded"
],
"identifier": "rounded"
},
{
"prototypeExpressions": [
"rounded up"
],
"identifier": "roundedUp"
},
{
"prototypeExpressions": [
"rounded down"
],
"identifier": "roundedDown"
},
{
"prototypeExpressions": [
"rounded to 3 dp",
"rounded 3 dp",
"rounded to 1 digit",
"rounded to 2 digits",
"rounded to 1 decimal",
"rounded to 2 decimals",
"to 3 dp",
"to __headNumberCluster_dp",
"to 3 digit",
"to 3 digits",
"to 1 decimal point",
"to 1 decimal place",
"to 3 decimal points",
"to 3 decimal places",
"to 3 decimal",
"to 3 decimals"
],
"identifier": "roundedToDp"
},
{
"prototypeExpressions": [
"round up to nearest 10",
"rounded up to nearest 10",
"round up to next 10",
"rounded up to next 10"
],
"identifier": "roundedUpToNearestX"
},
{
"prototypeExpressions": [
"rounded down to nearest 10",
"rounded down to last 10",
"rounded down to 10"
],
"identifier": "roundedDownToNearestX"
},
{
"prototypeExpressions": [
"to nearest 10",
"round to nearest 10",
"rounded to nearest 10"
],
"identifier": "roundedToNearestX"
}
],
"compoundUnits": [
{
"prototypeExpressions": [
"__converter_symbol years and months",
"__converter_symbol years & months",
"__converter_symbol yrs & months",
"__converter_symbol months & years",
"__converter_symbol months and years"
],
"identifier": "yearsAndMonths"
},
{
"prototypeExpressions": [
"__converter_symbol months and weeks",
"__converter_symbol months & weeks",
"__converter_symbol months & wks",
"__converter_symbol weeks and months",
"__converter_symbol weeks & months"
],
"identifier": "monthsAndWeeks"
},
{
"prototypeExpressions": [
"__converter_symbol months and days",
"__converter_symbol months & days",
"__converter_symbol days and months",
"__converter_symbol days & months"
],
"identifier": "monthsAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol weeks and days",
"__converter_symbol weeks & days",
"__converter_symbol wks and days",
"__converter_symbol wks & days",
"__converter_symbol days and weeks",
"__converter_symbol days and wks",
"__converter_symbol days & weeks"
],
"identifier": "weeksAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol days and hours",
"__converter_symbol days and hrs",
"__converter_symbol hours and days",
"__converter_symbol hrs and days"
],
"identifier": "daysAndHours"
},
{
"prototypeExpressions": [
"__converter_symbol hours and minutes",
"__converter_symbol hours and min",
"__converter_symbol hrs and min",
"__converter_symbol hr and min"
],
"identifier": "hoursAndMinutes"
},
{
"prototypeExpressions": [
"__converter_symbol minutes and seconds",
"__converter_symbol min and sec",
"__converter_symbol min and s"
],
"identifier": "minutesAndSeconds"
},
{
"prototypeExpressions": [
"__converter_symbol pounds ounces",
"__converter_symbol pound ounce",
"__converter_symbol pounds and ounces",
"__converter_symbol pounds & ounces",
"__converter_symbol pound and ounce",
"__converter_symbol pound & ounce",
"__converter_symbol pounds and oz",
"__converter_symbol pounds & oz",
"__converter_symbol lb and oz",
"__converter_symbol lb & oz",
"__converter_symbol lb oz"
],
"identifier": "poundsAndOunces"
},
{
"prototypeExpressions": [
"__converter_symbol feet and inches",
"__converter_symbol feet and inch",
"__converter_symbol inches and feet",
"__converter_symbol feet inches",
"__converter_symbol foot inch",
"__converter_symbol feet inch",
"__converter_symbol ft inch"
],
"identifier": "feetAndInches"
}
],
"dateTime": [
{
"prototypeExpressions": [
"__converter_symbol date"
],
"identifier": "toDate"
},
{
"prototypeExpressions": [
"__converter_symbol timestamp",
"__converter_symbol time stamp"
],
"identifier": "toTimestamp"
},
{
"prototypeExpressions": [
"__converter_symbol timespan",
"__converter_symbol time span"
],
"identifier": "toTimespan"
},
{
"prototypeExpressions": [
"__converter_symbol laptime",
"__converter_symbol lap time"
],
"identifier": "toLaptime"
},
{
"prototypeExpressions": [
"__converter_symbol iso8601",
"__converter_symbol iso"
],
"identifier": "toISO8601"
}
],
"numberForms": [
{
"prototypeExpressions": [
"__converter_symbol num",
"__converter_symbol number",
"__converter_symbol decimal",
"__converter_symbol plain number",
"__converter_symbol dec"
],
"identifier": "toDecimal"
},
{
"prototypeExpressions": [
"__converter_symbol frac",
"__converter_symbol fraction",
"__converter_symbol a fraction"
],
"identifier": "toFraction"
},
{
"prototypeExpressions": [
"__converter_symbol scientific notation",
"__converter_symbol scientific",
"__converter_symbol sci not",
"__converter_symbol sci"
],
"identifier": "toScientificNotation"
},
{
"prototypeExpressions": [
"__converter_symbol multiplier",
"__converter_symbol multiple"
],
"identifier": "toMultiplier"
},
{
"prototypeExpressions": [
"__converter_symbol hexadecimal",
"__converter_symbol hex"
],
"identifier": "toHexadecimal"
},
{
"prototypeExpressions": [
"__converter_symbol binary",
"__converter_symbol bin"
],
"identifier": "toBinary"
},
{
"prototypeExpressions": [
"__converter_symbol octal",
"__converter_symbol oct"
],
"identifier": "toOctal"
},
{
"prototypeExpressions": [
"__converter_symbol base 8"
],
"identifier": "toBaseX"
}
],
"music": [
{
"prototypeExpressions": [
"__converter_symbol pitch",
"__converter_symbol musical note"
],
"identifier": "toPitch"
},
{
"prototypeExpressions": [
"__converter_symbol midi note number",
"__converter_symbol midi number",
"__converter_symbol midi"
],
"identifier": "toMIDI"
}
],
"unitRelated": [
{
"prototypeExpressions": [
"__converter_symbol dms"
],
"identifier": "toDMS"
}
]
}

View file

@ -0,0 +1,196 @@
{
"ADA": 1.5786018863667486,
"AED": 3.6730420000000001,
"AFN": 72.000367999999995,
"ALL": 87.274775000000005,
"AMD": 390.940403,
"ANG": 1.8022899999999999,
"AOA": 912.00036699999998,
"ARS": 1137.970104,
"AUD": 1.5653490000000001,
"AVAX": 0.050049505288309974,
"AWG": 1.8,
"AZN": 1.70397,
"BAM": 1.7206859999999999,
"BBD": 2.0178769999999999,
"BCH": 0.0029547520723407199,
"BDT": 121.42806899999999,
"BGN": 1.7215929999999999,
"BHD": 0.37690099999999999,
"BIF": 2930,
"BMD": 1,
"BNB": 0.0016883335064241576,
"BND": 1.312071,
"BOB": 6.9065630000000002,
"BRL": 5.8082039999999999,
"BSD": 0.99943700000000002,
"BSV": 0.034666824093781676,
"BTC": 1.1729884782105675e-05,
"BTN": 85.314610999999999,
"BWP": 13.775690000000001,
"BYN": 3.2708080000000002,
"BYR": 19600,
"BZD": 2.0074960000000002,
"CAD": 1.3841650000000001,
"CDF": 2877.0003620000002,
"CHF": 0.81849000000000005,
"CLF": 0.025203,
"CLP": 967.16039599999999,
"CNH": 7.3036899999999996,
"CNY": 7.3039100000000001,
"COP": 4310,
"CRC": 502.26984800000002,
"CUC": 1,
"CUP": 26.5,
"CVE": 97.403893999999994,
"CZK": 22.038603999999999,
"DASH": 0.047205657010773359,
"DJF": 177.720393,
"DKK": 6.5655700000000001,
"DOGE": 6.30220134950613,
"DOP": 60.503883999999999,
"DOT": 0.25809449877226398,
"DZD": 132.56603999999999,
"EGP": 51.126904000000003,
"EOS": 1.5434004527589087,
"ERN": 15,
"ETB": 133.02364900000001,
"ETC": 0.063093030403994832,
"ETH": 0.00061880271961870393,
"EUR": 0.87932500000000002,
"FJD": 2.2837040000000002,
"FKP": 0.75315900000000002,
"GBP": 0.75383500000000003,
"GEL": 2.7403909999999998,
"GGP": 0.75315900000000002,
"GHS": 15.56039,
"GIP": 0.75315900000000002,
"GMD": 71.503850999999997,
"GNF": 8655.5038480000003,
"GTQ": 7.6981279999999996,
"GYD": 209.656701,
"HKD": 7.7625200000000003,
"HNL": 25.908819000000001,
"HRK": 6.6121040000000004,
"HTG": 130.41948199999999,
"HUF": 359.10503999999997,
"IDR": 16862.900000000001,
"ILS": 3.6839499999999998,
"IMP": 0.75315900000000002,
"INR": 85.377504000000002,
"IQD": 1310,
"IRR": 42125.000352000003,
"ISK": 127.590386,
"JEP": 0.75315900000000002,
"JMD": 157.96558300000001,
"JOD": 0.70930400000000005,
"JPY": 142.17104,
"KES": 129.50380100000001,
"KGS": 87.233503999999996,
"KHR": 4015.0003499999998,
"KMF": 433.50379400000003,
"KPW": 899.97700099999997,
"KRW": 1418.3903829999999,
"KWD": 0.30663000000000001,
"KYD": 0.83289299999999999,
"KZT": 523.17356400000006,
"LAK": 21630.000349000002,
"LBP": 89600.000348999994,
"LINK": 0.077191169532379256,
"LKR": 298.91522400000002,
"LRD": 199.97503900000001,
"LSL": 18.856894,
"LTC": 0.013115886570664519,
"LTL": 2.9527399999999999,
"LUNA": 16665.630040678505,
"LVL": 0.60489000000000004,
"LYD": 5.4703809999999997,
"MAD": 9.2750389999999996,
"MDL": 17.289555,
"MGA": 4552.8927359999998,
"MKD": 54.091003000000001,
"MMK": 2099.608303,
"MNT": 3548.057033,
"MOP": 7.9903930000000001,
"MRU": 39.435529000000002,
"MUR": 45.090378000000001,
"MVR": 15.403739,
"MWK": 1736.0003449999999,
"MXN": 19.72174,
"MYR": 4.4075040000000003,
"MZN": 63.905039000000002,
"NAD": 18.856894,
"NEO": 0.17775095907295937,
"NGN": 1604.7037250000001,
"NIO": 36.775055999999999,
"NOK": 10.481075000000001,
"NPR": 136.50320199999999,
"NZD": 1.685133,
"OMR": 0.38499800000000001,
"PAB": 0.99943700000000002,
"PEN": 3.763039,
"PGK": 4.133235,
"PHP": 56.712504000000003,
"PKR": 280.603701,
"PLN": 3.7624050000000002,
"POL": 5.2398878601491159,
"PYG": 7999.8944259999998,
"QAR": 3.6406040000000002,
"RON": 4.3781040000000004,
"RSD": 103.137317,
"RUB": 82.174308999999994,
"RWF": 1415,
"SAR": 3.752237,
"SBD": 8.368347,
"SCR": 14.241693,
"SDG": 600.50367600000004,
"SEK": 9.6336899999999996,
"SGD": 1.310745,
"SHIB": 80712.040106971806,
"SHP": 0.78584299999999996,
"SLE": 22.775037999999999,
"SLL": 20969.483762,
"SOL": 0.0070623413157722172,
"SOS": 571.50366199999996,
"SRD": 37.150370000000002,
"STD": 20697.981007999999,
"SVC": 8.7450729999999997,
"SYP": 13001.686309999999,
"SZL": 18.820368999999999,
"THB": 33.347037999999998,
"TJS": 10.733753999999999,
"TMT": 3.5,
"TND": 2.988038,
"TON": 0.33602893238957443,
"TOP": 2.342104,
"TRX": 4.0893024485222336,
"TRY": 38.123820000000002,
"TTD": 6.7813910000000002,
"TWD": 32.524037999999997,
"TZS": 2687.503631,
"UAH": 41.417687000000001,
"UGX": 3663.55798,
"UNI": 0.18729439649340474,
"USDT": 1.0000790148649914,
"UYU": 41.913007,
"UZS": 12986.521677999999,
"VES": 80.858630000000005,
"VND": 25870,
"VUV": 121.39857499999999,
"WST": 2.7840980000000002,
"XAF": 577.11196399999994,
"XAG": 0.030658000000000001,
"XAU": 0.000301,
"XCD": 2.70255,
"XDR": 0.71769799999999995,
"XLM": 4.0543358553092741,
"XMR": 0.0046170713087317706,
"XOF": 575.00033199999996,
"XPF": 102.775037,
"XRP": 0.47952522231761274,
"YER": 245.25036299999999,
"ZAR": 18.840363,
"ZMK": 9001.203587,
"ZMW": 28.458438999999998,
"ZWL": 321.99959200000001
}

View file

@ -0,0 +1,85 @@
/*
Localizable.strings
SoulverCore
Created by Zac Cohan on 29/9/19.
Copyright © 2019 Zac Cohan. All rights reserved.
*/
/* Line References */
//i.e line1 will be a reference to line 1
"plain text line reference" = "line";
"line above" = "line above";
"previous line" = "previous line";
"prev" = "prev";
///* Inline sub-totals & averages */
//"total" = "total";
//"sum" = "sum";
//"average" = "average";
/* Unit Categories */
"Time" = "Time";
"Acceleration" = "Acceleration";
"Length" = "Length";
"Mass" = "Mass";
"Volume" = "Volume";
"Frequency" = "Frequency";
"Angle" = "Angle";
"Temperature" = "Temperature";
"Energy" = "Energy";
"Power" = "Power";
"Pressure" = "Pressure";
"Currency" = "Currency";
"Area" = "Area";
"Speed" = "Speed";
"Data Transfer" = "Data Transfer";
"Data Storage" = "Data Storage";
"Other Unit Kind" = "Other Unit Kind";
/* Errors */
"Error: ∞" = "Error: ∞";
"Error: incompatible units" = "Error: incompatible units";
"Error: divide by zero" = "Error: divide by zero";
"Error: imaginary number" = "Error: imaginary number";
"Error: unsupported multiplicative unit" = "Error: unsupported multiplicative unit";
"Error: unsupported unit in rate" = "Error: unsupported unit in rate";
"Error: division without divisor" = "Error: division without divisor";
"Error: imprecision due to magnitude" = "Error: imprecision due to magnitude";
"Error: unsupported exponent operation" = "Error: unsupported exponent operation";
/* Positions of a custom currency symbol */
"Before" = "Before";
"Before (with space)" = "Before (with space)";
"After" = "After";
"After (with space)" = "After (with space)";
/* Answer Contextual Metadata */
/* Used in the contextual menu for an answer */
/* For instance, km, a unit of distance */
"%@, a unit of %@" = "%@, a unit of %@";
/* a rate, like km per day */
"%@ per %@" = "%@ per %@";
"amount per %@" = "amount per %@";
/* days of the week, like February 12 was a Saturday, March 8 will be a Tuesday */
"%@ was a %@" = "%@ was a %@";
"%@ will be a %@" = "%@ will be a %@";
/* Quick Operators */
"plusQuickOperator" = "p";
"minusQuickOperator" = "m";
"timesQuickOperator" = "x";
"divideQuickOperator" = "d";
/* Weather Functions */
/* For historical daily weather query: temperature in Sydney _on_ March 12, 2024 */
"on __datestamp" = "on __datestamp";
/* For historical monthly weather query: weather in Sydney _in_ March, 2024 */
"in __datestamp" = "in __datestamp";

View file

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>day</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@day@</string>
<key>day</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>day</string>
<key>other</key>
<string>days</string>
</dict>
</dict>
<key>night</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@night@</string>
<key>night</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>night</string>
<key>other</key>
<string>nights</string>
</dict>
</dict>
<key>ft</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@ft@</string>
<key>ft</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>foot</string>
<key>other</key>
<string>feet</string>
</dict>
</dict>
<key>hr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@hour@</string>
<key>hour</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>hour</string>
<key>other</key>
<string>hours</string>
</dict>
</dict>
<key>in</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@in@</string>
<key>in</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>inch</string>
<key>other</key>
<string>inches</string>
</dict>
</dict>
<key>month</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@month@</string>
<key>month</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>month</string>
<key>other</key>
<string>months</string>
</dict>
</dict>
<key>week</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@week@</string>
<key>week</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>week</string>
<key>other</key>
<string>weeks</string>
</dict>
</dict>
<key>workday</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@workday@</string>
<key>workday</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>workday</string>
<key>other</key>
<string>workdays</string>
</dict>
</dict>
<key>year</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@year@</string>
<key>year</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>year</string>
<key>other</key>
<string>years</string>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,25 @@
{
"fixtures": {
"midnightAliases": [
"midn"
],
"pmAliases": [
"p"
],
"middayAliases": [
"midd"
],
"amAliases": [
"a"
],
"todayDateAliases": [
"tod"
],
"yesterdayDateAliases": [
"yes"
],
"tomorrowDateAliases": [
"tom"
]
}
}

View file

@ -0,0 +1,175 @@
{
"fixtures": {
"colons": [
":",
""
],
"nextDateQualifiers": [
"next"
],
"converterSymbols": [
"to",
"as"
],
"powerOperators": [
"^",
"ˆ",
"**"
],
"percentWords": [
"percent",
"percentage",
"per cent"
],
"hereAliases": [
"here"
],
"nowDateAliases": [
"now"
],
"ordinalSuffixes": [
"st",
"nd",
"rd",
"th"
],
"conjunctionWordsAnd": [
"and"
],
"conjunctionWordsOr": [
"or"
],
"prepositionWordsUntil" : [
"until",
"till"
],
"grammerWordsOf" : [
"of"
],
"prepositionWordsWith" : [
"with"
],
"prepositionWordsAt" : [
"at",
"@"
],
"piAliases": [
"π"
],
"thisDateQualifiers": [
"this"
],
"divisionOperators": [
"÷",
"per"
],
"midnightAliases": [
"midnight"
],
"previousDateQualifiers": [
"previous",
"last"
],
"timeWords": [
"time"
],
"timespanWords": [
"timespan"
],
"pmAliases": [
"pm",
"p.m.",
"P.M."
],
"lessThanOrEqualToOperators": [
"<=",
"=<"
],
"subtractionOperators": [
"",
"",
"minus"
],
"middayAliases": [
"midday",
"noon"
],
"reverseSubtractionOperators": [
],
"amAliases": [
"am",
"a.m.",
"A.M."
],
"todayDateAliases": [
"today"
],
"additionOperators": [
"plus"
],
"isNotEqualToOperators": [
"!=",
"=!"
],
"greaterThanOrEqualToOperators": [
">=",
"=>"
],
"multiplicationOperators": [
"×",
"x",
"⋅",
"·"
],
"averageAliases": [
"average",
"mean"
],
"totalAliases": [
"total",
"sum"
],
"medianAliases": [
"median"
],
"countAliases": [
"count"
],
"greaterAliases": [
"greater",
"larger",
"max"
],
"lesserAliases": [
"lesser",
"smaller",
"min"
],
"standardDeviationAliases": [
"standard deviation",
"std dev"
],
"gcdAliases": [
"greatest common factor",
"greatest common divisor",
"gcd",
"gcf"
],
"lcmAliases": [
"lowest common multiple",
"lcm"
],
"yesterdayDateAliases": [
"yesterday"
],
"tomorrowDateAliases": [
"tomorrow"
],
"openBracketAliases": [
""
],
"closeBracketAliases": [
""
]
}
}

View file

@ -0,0 +1,26 @@
[
{
"aliases": [
"w"
],
"identifier": "weeks"
},
{
"aliases": [
"mo"
],
"identifier": "months"
},
{
"aliases": [
"d"
],
"identifier": "days"
},
{
"aliases": [
"y"
],
"identifier": "years"
}
]

View file

@ -0,0 +1,58 @@
{
"sets": [
{
"system": "standard",
"scalars": {
"thousand": { "symbol": "k", "aliases": [] },
"million": { "symbol": "M", "aliases": [] },
"billion": { "symbol": "G", "aliases": [] },
"trillion": { "symbol": "T", "aliases": [] }
}
},
{
"system": "chinese",
"scalars": {
"thousand": { "symbol": "千", "aliases": [] },
"million": { "symbol": "M", "aliases": [] },
"billion": { "symbol": "G", "aliases": [] },
"trillion": { "symbol": "T", "aliases": [] }
}
},
{
"system": "russian",
"scalars": {
"thousand": { "symbol": "К", "aliases": ["к"] },
"million": { "symbol": "М", "aliases": [] },
"billion": { "symbol": "Г", "aliases": [] },
"trillion": { "symbol": "Т", "aliases": [] }
}
},
{
"system": "currencyUppercase",
"scalars": {
"thousand": { "symbol": "K", "aliases": [] },
"million": { "symbol": "M", "aliases": [] },
"billion": { "symbol": "B", "aliases": [] },
"trillion": { "symbol": "T", "aliases": [] }
}
},
{
"system": "currencyLowercase",
"scalars": {
"thousand": { "symbol": "k", "aliases": [] },
"million": { "symbol": "m", "aliases": ["mm"] },
"billion": { "symbol": "b", "aliases": [] },
"trillion": { "symbol": "t", "aliases": [] }
}
},
{
"system": "currencyBritish",
"scalars": {
"thousand": { "symbol": "k", "aliases": [] },
"million": { "symbol": "mn", "aliases": [] },
"billion": { "symbol": "bn", "aliases": [] },
"trillion": { "symbol": "tn", "aliases": [] }
}
}
]
}

View file

@ -0,0 +1,58 @@
[
{
"type": "christmasEve",
"aliases": ["Christmas Eve"]
},
{
"type": "christmasDay",
"aliases": ["Christmas Day", "Xmas", "Christmas"]
},
{
"type": "goodFriday",
"aliases": ["Good Friday", "Holy Friday", "Easter Friday"]
},
{
"type": "easterSunday",
"aliases": ["Easter Sunday", "Easter"]
},
{
"type": "boxingDay",
"aliases": ["Boxing Day"]
},
{
"type": "newYearsDay",
"aliases": ["New Year's Day", "New Years", "New Years Day"]
},
{
"type": "newYearsEve",
"aliases": ["NYE", "New Years Eve", "New Year's Eve"]
},
{
"type": "blackFriday",
"aliases": ["Black Friday"]
},
{
"type": "thanksgiving",
"aliases": ["Thanksgiving"]
},
{
"type": "valentinesDay",
"aliases": ["Valentine's Day", "Saint Valentine's Day", "Valentines Day"]
},
{
"type": "halloween",
"aliases": ["Halloween"]
},
{
"type": "chineseNewYear",
"aliases": ["Chinese New Year", "Spring Festival", "Lunar New Year"]
},
{
"type": "ramadanStart",
"aliases": ["Ramadan", "Ramadan start", "Start of Ramadan"]
},
{
"type": "ramadanEnd",
"aliases": ["End of Ramadan", "Ramadan end"]
}
]

View file

@ -0,0 +1,605 @@
[
{
"capital": "London",
"capitalCityTimezoneID": "Europe/London",
"country": "United Kingdom",
"name": "England",
"aliases": [
"england",
"eng"
]
},
{
"capital": "Edinburgh",
"capitalCityTimezoneID": "Europe/London",
"country": "United Kingdom",
"name": "Scotland",
"aliases": [
"scotland",
"sco"
]
},
{
"capital": "Cardiff",
"capitalCityTimezoneID": "Europe/London",
"country": "United Kingdom",
"name": "Wales",
"aliases": [
"wales",
"wal"
]
},
{
"capital": "Belfast",
"capitalCityTimezoneID": "Europe/London",
"country": "United Kingdom",
"name": "Northern Ireland",
"aliases": [
"northern ireland",
"ni",
"nir"
]
},
{
"capital": "Sydney",
"capitalCityTimezoneID": "Australia/Sydney",
"country": "Australia",
"name": "New South Wales",
"aliases": [
"nsw"
]
},
{
"capital": "Adelaide",
"capitalCityTimezoneID": "Australia/Adelaide",
"country": "Australia",
"name": "South Australia",
"aliases": [
"sa"
]
},
{
"capital": "Brisbane",
"capitalCityTimezoneID": "Australia/Brisbane",
"country": "Australia",
"name": "Queensland",
"aliases": [
"qld"
]
},
{
"capital": "Darwin",
"capitalCityTimezoneID": "Australia/Darwin",
"country": "Australia",
"name": "Northern Territory",
"aliases": [
"nt"
]
},
{
"capital": "Perth",
"capitalCityTimezoneID": "Australia/Perth",
"country": "Australia",
"name": "Western Australia",
"aliases": [
]
},
{
"capital": "Melbourne",
"capitalCityTimezoneID": "Australia/Melbourne",
"country": "Australia",
"name": "Victoria",
"aliases": [
"vic"
]
},
{
"capital": "Hobart",
"capitalCityTimezoneID": "Australia/Hobart",
"country": "Australia",
"name": "Tasmania",
"aliases": [
"tas",
"tasmania"
]
},
{
"capital": "Canberra",
"capitalCityTimezoneID": "Australia/Canberra",
"country": "Australia",
"name": "Australian Capital Territory",
"aliases": [
"act"
]
},
{
"capital": "Toronto",
"capitalCityTimezoneID": "America/Toronto",
"country": "Canada",
"name": "Ontario",
"aliases": [
]
},
{
"capital": "Montreal",
"capitalCityTimezoneID": "America/Montreal",
"country": "Canada",
"name": "Quebec",
"aliases": [
]
},
{
"capital": "Vancouver",
"capitalCityTimezoneID": "America/Vancouver",
"country": "Canada",
"name": "British Columbia",
"aliases": [
]
},
{
"capital": "Edmonton",
"capitalCityTimezoneID": "America/Edmonton",
"country": "Canada",
"name": "Alberta",
"aliases": [
]
},
{
"capital": "Winnipeg",
"capitalCityTimezoneID": "America/Winnipeg",
"country": "Canada",
"name": "Manitoba",
"aliases": [
]
},
{
"capital": "Regina",
"capitalCityTimezoneID": "America/Regina",
"country": "Canada",
"name": "Saskatchewan",
"aliases": [
]
},
{
"capital": "Halifax",
"capitalCityTimezoneID": "America/Halifax",
"country": "Canada",
"name": "Nova Scotia",
"aliases": [
]
},
{
"capital": "St. John's",
"capitalCityTimezoneID": "America/St_Johns",
"country": "Canada",
"name": "Newfoundland and Labrador",
"aliases": [
]
},
{
"capital": "Fredericton",
"capitalCityTimezoneID": "America/Moncton",
"country": "Canada",
"name": "New Brunswick",
"aliases": [
]
},
{
"capital": "Whitehorse",
"capitalCityTimezoneID": "America/Whitehorse",
"country": "Canada",
"name": "Yukon",
"aliases": [
]
},
{
"capital": "Yellowknife",
"capitalCityTimezoneID": "America/Yellowknife",
"country": "Canada",
"name": "Northwest Territories",
"aliases": [
]
},
{
"capital": "Iqaluit",
"capitalCityTimezoneID": "America/Iqaluit",
"country": "Canada",
"name": "Nunavut",
"aliases": [
]
},
{
"capital": "Charlottetown",
"capitalCityTimezoneID": "America/Halifax",
"country": "Canada",
"name": "Prince Edward Island",
"aliases": [
]
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["ny"],
"capital": "Albany",
"name": "New York State",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Los_Angeles",
"aliases": ["ca"],
"capital": "Sacramento",
"name": "California",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": ["il"],
"capital": "Springfield",
"name": "Illinois",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Denver",
"aliases": ["co"],
"capital": "Denver",
"name": "Colorado",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Phoenix",
"aliases": ["az"],
"capital": "Phoenix",
"name": "Arizona",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Indiana/Indianapolis",
"aliases": [],
"capital": "Indianapolis",
"name": "Indiana",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": [],
"capital": "Jackson",
"name": "Mississippi",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Denver",
"aliases": ["sd"],
"capital": "Pierre",
"name": "South Dakota",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["va"],
"capital": "Richmond",
"name": "Virginia",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Denver",
"aliases": ["ut"],
"capital": "Salt Lake City",
"name": "Utah",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": ["ia"],
"capital": "Des Moines",
"name": "Iowa",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": ["ks"],
"capital": "Topeka",
"name": "Kansas",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": ["tx"],
"capital": "Austin",
"name": "Texas",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": ["mo"],
"capital": "Jefferson City",
"name": "Missouri",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Los_Angeles",
"aliases": [],
"capital": "Salem",
"name": "Oregon",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Anchorage",
"aliases": ["ak"],
"capital": "Juneau",
"name": "Alaska",
"country": "United States"
},
{
"capitalCityTimezoneID": "Pacific/Honolulu",
"aliases": [],
"capital": "Honolulu",
"name": "Hawaii",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["ma"],
"capital": "Boston",
"name": "Massachusetts",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Detroit",
"aliases": ["mi"],
"capital": "Lansing",
"name": "Michigan",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["ct"],
"capital": "Hartford",
"name": "Connecticut",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": [],
"capital": "Dover",
"name": "Delaware",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["ga"],
"capital": "Atlanta",
"name": "Georgia",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["fl"],
"capital": "Tallahassee",
"name": "Florida",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Los_Angeles",
"aliases": ["nv"],
"capital": "Carson City",
"name": "Nevada",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": [],
"capital": "Baton Rouge",
"name": "Louisiana",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["md"],
"capital": "Annapolis",
"name": "Maryland",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": [],
"capital": "Augusta",
"name": "Maine",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["ky"],
"capital": "Frankfort",
"name": "Kentucky",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["nh"],
"capital": "Concord",
"name": "New Hampshire",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["nj"],
"capital": "Trenton",
"name": "New Jersey",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Denver",
"aliases": ["nm"],
"capital": "Santa Fe",
"name": "New Mexico",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["nc"],
"capital": "Raleigh",
"name": "North Carolina",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/North_Dakota/Center",
"aliases": ["nd"],
"capital": "Bismarck",
"name": "North Dakota",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["oh"],
"capital": "Columbus",
"name": "Ohio",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": [],
"capital": "Oklahoma City",
"name": "Oklahoma",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Los_Angeles",
"aliases": [],
"capital": "Salem",
"name": "Oregon",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["pa"],
"capital": "Harrisburg",
"name": "Pennsylvania",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["ri"],
"capital": "Providence",
"name": "Rhode Island",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["sc"],
"capital": "Columbia",
"name": "South Carolina",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": ["sd"],
"capital": "Pierre",
"name": "South Dakota",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": ["tn"],
"capital": "Nashville",
"name": "Tennessee",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": ["tx"],
"capital": "Austin",
"name": "Texas",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Denver",
"aliases": ["ut"],
"capital": "Salt Lake City",
"name": "Utah",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["vt"],
"capital": "Montpelier",
"name": "Vermont",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["va"],
"capital": "Richmond",
"name": "Virginia",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Los_Angeles",
"aliases": ["wa"],
"capital": "Olympia",
"name": "Washington",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/New_York",
"aliases": ["wv"],
"capital": "Charleston",
"name": "West Virginia",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": ["wi"],
"capital": "Madison",
"name": "Wisconsin",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Denver",
"aliases": ["wy"],
"capital": "Cheyenne",
"name": "Wyoming",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": [],
"capital": "Montgomery",
"name": "Alabama",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": ["ar"],
"capital": "Little Rock",
"name": "Arkansas",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Boise",
"aliases": ["id"],
"capital": "Boise",
"name": "Idaho",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": ["mn"],
"capital": "Saint Paul",
"name": "Minnesota",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Chicago",
"aliases": ["ne"],
"capital": "Lincoln",
"name": "Nebraska",
"country": "United States"
},
{
"capitalCityTimezoneID": "America/Denver",
"aliases": ["mt"],
"capital": "Helena",
"name": "Montana",
"country": "United States"
}
]

View file

@ -0,0 +1,64 @@
{
"ACDT": "10.5",
"ACST": "9.5",
"ADT": "-3.0",
"AEDT": "11.0",
"AEST": "10.0",
"AKDT": "-8.0",
"AKST": "-9.0",
"ART": "-3.0",
"AST": "-4.0",
"AWST": "8.0",
"AWDT": "9.0",
"BDT": "6.0",
"BRST": "-2.0",
"BRT": "-3.0",
"BST": "1.0",
"CAT": "2.0",
"CDT": "-5.0",
"CEST": "2.0",
"CET": "1.0",
"CLST": "-3.0",
"CLT": "-4.0",
"COT": "-5.0",
"CST": "-6.0",
"EAT": "3.0",
"EDT": "-4.0",
"EEST": "3.0",
"EET": "2.0",
"EST": "-5.0",
"GMT": "0.0",
"GST": "4.0",
"HKT": "8.0",
"HST": "-10.0",
"ICT": "7.0",
"IRST": "3.5",
"IST": "5.5",
"JST": "9.0",
"KST": "9.0",
"MDT": "-6.0",
"MSD": "-6.0",
"MSK": "3.0",
"MST": "-7.0",
"NDT": "-2.5",
"NST": "-3.5",
"NZDT": "13.0",
"NZST": "12.0",
"PDT": "-7.0",
"PET": "-5.0",
"PHT": "8.0",
"PKT": "5.0",
"PST": "-8.0",
"SAST": "2.0",
"SGT": "8.0",
"SST": "-11.0",
"TRT": "3.0",
"UTC": "0.0",
"WAT": "1.0",
"WEST": "1.0",
"WET": "0.0",
"WIB": "7.0",
"WIT": "9.0",
"WITA": "8.0"
}

View file

@ -0,0 +1,4 @@
{
"version": "1.1.0",
"build": "20"
}

View file

@ -0,0 +1,188 @@
{
"rounding": [
{
"prototypeExpressions": [
"redondeado"
],
"identifier": "rounded"
},
{
"prototypeExpressions": [
"redondeado hacia arriba"
],
"identifier": "roundedUp"
},
{
"prototypeExpressions": [
"redondeado hacia abajo"
],
"identifier": "roundedDown"
},
{
"prototypeExpressions": [
"__converter_symbol 3 cifras",
"__converter_symbol 3 dígitos",
"__converter_symbol 3 dígito",
"__converter_symbol 1 decimal",
"__converter_symbol 1 cifra decimal",
"__converter_symbol 3 decimales",
"redondeado a 3 cifras",
"redondeado 3 cifras",
"redondeado a 3 decimales"
],
"identifier": "roundedToDp"
},
{
"prototypeExpressions": [
"hasta el 10 más cercano",
"redondear al 10 más cercano",
"redondeado al 10 más cercano",
"redondeado hacia arriba al más cercano 10"
],
"identifier": "roundedUpToNearestX"
},
{
"prototypeExpressions": [
"al 10 más cercano",
"redondear hacia abajo al 10 más cercano",
"redondeado hacia abajo al 10 más cercano",
"redondeado hacia abajo al más cercano 10"
],
"identifier": "roundedDownToNearestX"
},
{
"prototypeExpressions": [
"redondear al 10 más cercano",
"redondeado al 10 más cercano",
"al número más cercano de 10",
"al múltiplo de 10 más cercano",
"redondeado al número más cercano de 10",
"al más cercano 10",
"al 10 más cercano"
],
"identifier": "roundedToNearestX"
}
],
"compoundUnits": [
{
"prototypeExpressions": [
"__converter_symbol años y meses"
],
"identifier": "yearsAndMonths"
},
{
"prototypeExpressions": [
"__converter_symbol meses y semanas"
],
"identifier": "monthsAndWeeks"
},
{
"prototypeExpressions": [
"__converter_symbol meses y días"
],
"identifier": "monthsAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol semanas y días"
],
"identifier": "weeksAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol días y horas"
],
"identifier": "daysAndHours"
},
{
"prototypeExpressions": [
"__converter_symbol horas y minutos"
],
"identifier": "hoursAndMinutes"
},
{
"prototypeExpressions": [
"__converter_symbol minutos y segundos"
],
"identifier": "minutesAndSeconds"
},
{
"prototypeExpressions": [
"pies y pulgadas",
"pie y pulgada",
"pulgadas y pies",
"pies pulgadas",
"pie pulgada",
"pies pulgada",
"ft pulgada"
],
"identifier": "feetAndInches"
}
],
"dateTime": [
{
"prototypeExpressions": [
"__converter_symbol fecha"
],
"identifier": "toDate"
},
{
"prototypeExpressions": [
"__converter_symbol marca de tiempo"
],
"identifier": "toTimestamp"
},
{
"prototypeExpressions": [
"__converter_symbol duración",
"__converter_symbol intervalo de tiempo"
],
"identifier": "toTimespan"
},
{
"prototypeExpressions": [
"__converter_symbol tiempo de vuelta",
"__converter_symbol tiempo por vuelta"
],
"identifier": "toLaptime"
}
],
"numberForms": [
{
"prototypeExpressions": [
"__converter_symbol número",
"__converter_symbol número decimal"
],
"identifier": "toDecimal"
},
{
"prototypeExpressions": [
"__converter_symbol binario"
],
"identifier": "toBinary"
},
{
"prototypeExpressions": [
"__converter_symbol fracción"
],
"identifier": "toFraction"
},
{
"prototypeExpressions": [
"__converter_symbol multiplicador",
"__converter_symbol múltiplo"
],
"identifier": "toMultiplier"
}
],
"music": [
{
"prototypeExpressions": [
"__converter_symbol tono",
"__converter_symbol nota musical"
],
"identifier": "toPitch"
}
]
}

View file

@ -0,0 +1,67 @@
/*
Localizable.strings
SoulverCore
Created by Zac Cohan on 29/9/19.
Copyright © 2019 Zac Cohan. All rights reserved.
*/
/* Referencias de línea */
// es decir, line1 será una referencia a la línea 1
"plain text line reference" = "línea";
"line above" = "línea arriba";
/* Categorías de unidades */
"Time" = "Tiempo";
"Acceleration" = "Aceleración";
"Length" = "Longitud";
"Mass" = "Masa";
"Volume" = "Volumen";
"Frequency" = "Frecuencia";
"Angle" = "Ángulo";
"Temperature" = "Temperatura";
"Energy" = "Energía";
"Power" = "Potencia";
"Pressure" = "Presión";
"Currency" = "Moneda";
"Area" = "Área";
"Speed" = "Velocidad";
"Data Transfer" = "Transferencia de datos";
"Data Storage" = "Almacenamiento de datos";
"Other Unit Kind" = "Otro tipo de unidad";
/* Errores */
"Error: ∞" = "Error: ∞";
"Error: incompatible units" = "Error: unidades incompatibles";
"Error: divide by zero" = "Error: división por cero";
"Error: imaginary number" = "Error: número imaginario";
"Error: unsupported multiplicative unit" = "Error: unidad de exponente no soportada";
"Error: unsupported unit in rate" = "Error: unidad no soportada en tasa";
"Error: division without divisor" = "Error: división sin divisor";
/* Posiciones de un símbolo de moneda personalizado */
"Before" = "Antes";
"Before (with space)" = "Antes (con espacio)";
"After" = "Después";
"After (with space)" = "Después (con espacio)";
/* Metadatos contextuales de respuesta */
/* Utilizado en el menú contextual para una respuesta */
/* Por ejemplo, km, una unidad de distancia */
"%@, a unit of %@" = "%@, una unidad de %@";
/* una tasa, como km por día */
"%@ per %@" = "%@ por %@";
"amount per %@" = "cantidad por %@";
/* días de la semana, como el 12 de febrero fue un sábado, el 8 de marzo será un martes */
"%@ was a %@" = "%@ fue un(a) %@.";
"%@ will be a %@" = "%@ será un(a) %@.";
/* Quick Operators */
"plusQuickOperator" = "p";
"minusQuickOperator" = "m";
"timesQuickOperator" = "x";
"divideQuickOperator" = "d";

View file

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>day</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@day@</string>
<key>day</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>día</string>
<key>other</key>
<string>días</string>
</dict>
</dict>
<key>night</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@night@</string>
<key>night</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>noche</string>
<key>other</key>
<string>noches</string>
</dict>
</dict>
<key>ft</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@ft@</string>
<key>ft</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>pie</string>
<key>other</key>
<string>pies</string>
</dict>
</dict>
<key>hr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@hour@</string>
<key>hour</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>hora</string>
<key>other</key>
<string>horas</string>
</dict>
</dict>
<key>in</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@in@</string>
<key>in</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>pulgada</string>
<key>other</key>
<string>pulgadas</string>
</dict>
</dict>
<key>month</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@month@</string>
<key>month</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>mes</string>
<key>other</key>
<string>meses</string>
</dict>
</dict>
<key>week</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@week@</string>
<key>week</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>semana</string>
<key>other</key>
<string>semanas</string>
</dict>
</dict>
<key>workday</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@workday@</string>
<key>workday</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>día laborable</string>
<key>other</key>
<string>días laborables</string>
</dict>
</dict>
<key>year</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@year@</string>
<key>year</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>año</string>
<key>other</key>
<string>años</string>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,127 @@
{
"fixtures": {
"colons": [
":",
""
],
"converterSymbolsTo": [
"a"
],
"converterSymbolsIn": [
"en"
],
"converterSymbolsAs": [
"como"
],
"nextDateQualifiers": [
"siguiente"
],
"powerOperators": [
"^",
"**"
],
"percentWords": [
"porcentaje",
"por ciento"
],
"hereAliases": [
"aquí"
],
"nowDateAliases": [
"ahora"
],
"ordinalSuffixes": [
"º",
"º",
"º",
"º"
],
"piAliases": [
"π"
],
"thisDateQualifiers": [
"este"
],
"divisionOperators": [
"÷",
"por"
],
"midnightAliases": [
"medianoche"
],
"previousDateQualifiers": [
"anterior",
"pasado"
],
"pmAliases": [
"pm",
"p.m.",
"P.M."
],
"conjunctionWordsOr": [
"o"
],
"middayAliases": [
"mediodía"
],
"subtractionOperators": [
"",
"",
"menos"
],
"additionOperators": [
"más"
],
"amAliases": [
"am",
"a.m.",
"A.M."
],
"todayDateAliases": [
"hoy"
],
"grammerWordsOf": [
"de"
],
"isNotEqualToOperators": [
"!=",
"=!"
],
"medianAliases": [
"mediana"
],
"greaterThanOrEqualToOperators": [
">=",
"=>"
],
"multiplicationOperators": [
"×",
"x",
"⋅",
"·"
],
"averageAliases": [
"promedio",
"media"
],
"prepositionWordsUntil": [
"hasta"
],
"totalAliases": [
"total",
"suma"
],
"countAliases": [
"conteo"
],
"yesterdayDateAliases": [
"ayer"
],
"conjunctionWordsAnd": [
"y"
],
"tomorrowDateAliases": [
"mañana"
]
}
}

View file

@ -0,0 +1,186 @@
{
"rounding": [
{
"prototypeExpressions": [
"arrondi"
],
"identifier": "rounded"
},
{
"prototypeExpressions": [
"arrondi à l'inférieur",
"arrondi supérieur",
"arrondi vers le haut"
],
"identifier": "roundedUp"
},
{
"prototypeExpressions": [
"arrondi vers le bas",
"arrondi à l'inférieur",
"arrondi inférieur"
],
"identifier": "roundedDown"
},
{
"prototypeExpressions": [
"arrondi à 3 décimales",
"arrondi 3 décimales",
"arrondi à 3 décimales",
"à 3 décimales",
"à 3 chiffres",
"à 3 chiffre",
"à 3 décimales",
"à 1 décimale",
"à 1 chiffre après la virgule",
"à 3 chiffres après la virgule"
],
"identifier": "roundedToDp"
},
{
"prototypeExpressions": [
"jusqu'à la dizaine la plus proche 10",
"arrondir à la dizaine la plus proche 10",
"arrondi à la dizaine la plus proche 10",
"arrondi vers le haut au plus proche 10"
],
"identifier": "roundedUpToNearestX"
},
{
"prototypeExpressions": [
"arrondi vers le bas au plus proche 10",
"à la dizaine la plus proche 10"
],
"identifier": "roundedDownToNearestX"
},
{
"prototypeExpressions": [
"à la dizaine la plus proche 10",
"au plus proche 10"
],
"identifier": "roundedToNearestX"
}
],
"compoundUnits": [
{
"prototypeExpressions": [
"__converter_symbol années et mois"
],
"identifier": "yearsAndMonths"
},
{
"prototypeExpressions": [
"__converter_symbol mois et semaines"
],
"identifier": "monthsAndWeeks"
},
{
"prototypeExpressions": [
"__converter_symbol mois et jours"
],
"identifier": "monthsAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol semaines et jours"
],
"identifier": "weeksAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol jours et heures"
],
"identifier": "daysAndHours"
},
{
"prototypeExpressions": [
"__converter_symbol heures et minutes"
],
"identifier": "hoursAndMinutes"
},
{
"prototypeExpressions": [
"__converter_symbol minutes et secondes"
],
"identifier": "minutesAndSeconds"
},
{
"prototypeExpressions": [
"__converter_symbol pieds et pouces",
"__converter_symbol pouces et pieds",
"__converter_symbol pieds pouces",
"__converter_symbol pied pouce"
],
"identifier": "feetAndInches"
}
],
"dateTime": [
{
"prototypeExpressions": [
"__converter_symbol date"
],
"identifier": "toDate"
},
{
"prototypeExpressions": [
"__converter_symbol horodatage"
],
"identifier": "toTimestamp"
},
{
"prototypeExpressions": [
"__converter_symbol intervalle de temps",
"__converter_symbol durée"
],
"identifier": "toTimespan"
},
{
"prototypeExpressions": [
"__converter_symbol temps au tour",
"__converter_symbol temps de tour"
],
"identifier": "toLaptime"
}
],
"numberForms": [
{
"prototypeExpressions": [
"__converter_symbol nombre",
"__converter_symbol decimal",
"__converter_symbol décimal"
],
"identifier": "toDecimal"
},
{
"prototypeExpressions": [
"__converter_symbol hexadecimale",
"__converter_symbol hexadécimal",
"__converter_symbol hexadécimale"
],
"identifier": "toHexadecimal"
},
{
"prototypeExpressions": [
"__converter_symbol fraction"
],
"identifier": "toFraction"
},
{
"prototypeExpressions": [
"__converter_symbol multiplié par",
"__converter_symbol multiplicateur"
],
"identifier": "toMultiplier"
}
],
"music": [
{
"prototypeExpressions": [
"__converter_symbol note musicale"
],
"identifier": "toPitch"
}
]
}

View file

@ -0,0 +1,797 @@
{
"weatherRelated": [
{
"identifier": "lowTemperature",
"prototypeExpressions": [
"température minimale à __timezone",
"basse à __timezone",
"min à __timezone",
"température basse à __timezone",
"__timezone minimum"
]
},
{
"identifier": "highTemperature",
"prototypeExpressions": [
"température maximale à __timezone",
"haute à __timezone",
"élevé à __timezone",
"température haute à __timezone",
"__timezone maximum"
]
},
{
"identifier": "precipitationChance",
"prototypeExpressions": [
"risque de précipitations à __timezone",
"chance de pluie à __timezone",
"risque de pluie à __timezone",
"__timezone risque de précipitations"
]
},
{
"identifier": "rainfallAmount",
"prototypeExpressions": [
"quantité de pluie à __timezone",
"cumul de pluie à __timezone",
"précipitations à __timezone",
"pluie à __timezone",
"__timezone pluie"
]
},
{
"identifier": "snowfallAmount",
"prototypeExpressions": [
"quantité de neige à __timezone",
"cumul de neige à __timezone",
"neige à __timezone",
"__timezone neige"
]
},
{
"identifier": "apparentTemperature",
"prototypeExpressions": [
"température ressentie à __timezone",
"ressenti à __timezone",
"__timezone sensation thermique"
]
},
{
"identifier": "currentTemperature",
"prototypeExpressions": [
"température actuelle à __timezone",
"température à __timezone"
]
},
{
"identifier": "weatherConditions",
"prototypeExpressions": [
"météo à __timezone",
"conditions météorologiques à __timezone"
]
},
{
"identifier": "humidity",
"prototypeExpressions": [
"humidité à __timezone",
"__timezone humidité"
]
},
{
"identifier": "cloudCover",
"prototypeExpressions": [
"couverture nuageuse à __timezone",
"nuages à __timezone",
"__timezone couverture nuageuse"
]
},
{
"identifier": "visibility",
"prototypeExpressions": [
"visibilité à __timezone",
"__timezone visibilité"
]
},
{
"identifier": "windSpeed",
"prototypeExpressions": [
"vitesse du vent à __timezone",
"vent à __timezone",
"__timezone vent"
]
},
{
"identifier": "windDirection",
"prototypeExpressions": [
"direction du vent à __timezone",
"__timezone direction du vent"
]
},
{
"identifier": "dewPoint",
"prototypeExpressions": [
"point de rosée à __timezone",
"__timezone point de rosée"
]
},
{
"identifier": "uvIndex",
"prototypeExpressions": [
"indice uv à __timezone",
"__timezone indice uv"
]
},
{
"identifier": "pressure",
"prototypeExpressions": [
"pression à __timezone",
"__timezone pression"
]
},
{
"identifier": "pressureDirection",
"prototypeExpressions": [
"direction de la pression à __timezone",
"__timezone direction de la pression"
]
},
{
"identifier": "sunrise",
"prototypeExpressions": [
"lever du soleil à __timezone",
"__timezone lever du soleil"
]
},
{
"identifier": "sunset",
"prototypeExpressions": [
"coucher du soleil à __timezone",
"__timezone coucher du soleil"
]
},
{
"identifier": "moonrise",
"prototypeExpressions": [
"lever de la lune à __timezone",
"lever de lune à __timezone",
"__timezone lever de la lune"
]
},
{
"identifier": "moonset",
"prototypeExpressions": [
"coucher de la lune à __timezone",
"coucher de lune à __timezone",
"__timezone coucher de la lune"
]
},
{
"identifier": "moonPhase",
"prototypeExpressions": [
"phase lunaire à __timezone",
"lune à __timezone",
"__timezone phase lunaire"
]
}
],
"datetime": [
{
"prototypeExpressions": [
"__duration entre le __datestamp et le __datestamp",
"__duration entre le __datestamp à le __datestamp",
"__duration entre le __datestamp - le __datestamp",
"__duration entre le __datestamp le __datestamp",
"__duration entre __datestamp et __datestamp",
"__duration entre __datestamp à __datestamp",
"__duration entre __datestamp - __datestamp",
"__duration entre __datestamp __datestamp",
"__duration du __datestamp au __datestamp"
],
"identifier": "calendarUnitBetweenDates"
},
{
"prototypeExpressions": [
"__duration jusqu'au __datestamp",
"__duration d'ici au __datestamp",
"__duration jusqu'à __datestamp",
"__duration avant le __datestamp",
"__duration avant __datestamp"
],
"identifier": "calendarUnitToDate"
},
{
"prototypeExpressions": [
"__duration avant __datespan",
"__duration jusqu'à __datespan"
],
"identifier": "calendarUnitToDatespan"
},
{
"prototypeExpressions": [
"__duration en le __datestamp",
"__duration en __datestamp"
],
"identifier": "calendarUnitInDate"
},
{
"prototypeExpressions": [
"__duration dans __datespan"
],
"identifier": "calendarUnitInDatespan"
},
{
"prototypeExpressions": [
"__datestamp au __datestamp",
"__datestamp à __datestamp",
"__datestamp jusqu'au __datestamp",
"__datestamp jusqu'à __datestamp",
"différence entre __datestamp et __datestamp"
],
"identifier": "intervalBetweenDates"
},
{
"prototypeExpressions": [
"__duration entre __datestamp jusqu'au __datestamp",
"__duration du __datestamp jusqu'au __datestamp",
"__duration de __datestamp jusqu'au __datestamp"
],
"identifier": "inclusiveCalendarUnitBetweenDates"
},
{
"prototypeExpressions": [
"__timestamp à __timestamp"
],
"identifier": "intervalBetweenTimestamps"
},
{
"prototypeExpressions": [
"__duration depuis le __datestamp",
"__duration depuis __datestamp"
],
"identifier": "calendarUnitSinceDate"
},
{
"prototypeExpressions": [
"__timespan à partir du __datestamp",
"__timespan après le __datestamp"
],
"identifier": "calendarUnitExpressionAfterDate"
},
{
"prototypeExpressions": [
"__timespan avant le __datestamp",
"__timespan avant __datestamp"
],
"identifier": "calendarUnitExpressionBeforeDate"
},
{
"prototypeExpressions": [
"__timespan depuis"
],
"identifier": "calendarUnitExpressionAgo"
},
{
"prototypeExpressions": [
"temps présent",
"nouvel horodatage",
"horodatage courant"
],
"identifier": "generateTimestamp"
},
{
"prototypeExpressions": [
"__timezone temps",
"temps __timezone",
"temps à __timezone",
"__timezone heure",
"heure à __timezone",
"heure __timezone"
],
"identifier": "timeInTimezone"
},
{
"prototypeExpressions": [
"différence de temps entre __timezone et __timezone",
"différence entre __timezone et __timezone",
"différence de temps entre __timezone & __timezone",
"différence entre __timezone & __timezone"
],
"identifier": "differenceBetweenTimezones"
},
{
"prototypeExpressions": [
"__datestamp après __timespan"
],
"identifier": "weekdayAfterTimespan"
},
{
"prototypeExpressions": [
"numéro de semaine le __datestamp",
"semaine du __datestamp"
],
"identifier": "weekOfYearOnDate"
},
{
"prototypeExpressions": [
"semaine de l'année"
],
"identifier": "weekOfYear"
},
{
"prototypeExpressions": [
"mi-chemin entre __datestamp et __datestamp",
"moitié chemin entre __datestamp et __datestamp",
"à mi-chemin entre __datestamp et __datestamp",
"milieu entre __datestamp et __datestamp"
],
"identifier": "halfwayBetweenDates"
}
],
"financial": [
{
"prototypeExpressions": [
"valeur actualisée de 1000 après __timespan à __percentage",
"valeur actualisée de 1000 sur __timespan à __percentage"
],
"identifier": "presentValue"
},
{
"prototypeExpressions": [
"retour annuel de 500 investi 1000 retiré après __timespan",
"retour annualisé de 500 investi 1000 retiré après __timespan",
"retour annuel de 500 investi 1000 retiré sur __timespan",
"retour annualisé de 500 investi 1000 retiré sur __timespan"
],
"identifier": "returnOnInvestmentAfter"
},
{
"prototypeExpressions": [
"500 investi 1000 retiré"
],
"identifier": "returnOnInvestment"
},
{
"prototypeExpressions": [
"remboursement total de 10000 pour __timespan à __percentage",
"remboursement total de 10000 après __timespan à __percentage",
"remboursement total de 10000 sur __timespan à __percentage",
"paiement total de 10000 pour __timespan à __percentage",
"paiement total de 10000 après __timespan à __percentage",
"paiement total de 10000 sur __timespan à __percentage"
],
"identifier": "totalLoanRepayment"
},
{
"prototypeExpressions": [
"remboursement annuel de 10000 pour __timespan à __percentage",
"remboursement annuel de 10000 après __timespan à __percentage",
"remboursement annuel de 10000 sur __timespan à __percentage",
"paiement annuel de 10000 pour __timespan à __percentage",
"paiement annuel de 10000 après __timespan à __percentage",
"paiement annuel de 10000 sur __timespan à __percentage"
],
"identifier": "annualLoanRepayment"
},
{
"prototypeExpressions": [
"remboursement mensuel sur 10000 sur __timespan à __percentage",
"remboursement mensuel de 10000 pour __timespan à __percentage",
"remboursement mensuel de 10000 après __timespan à __percentage",
"remboursement mensuel de 10000 sur __timespan à __percentage",
"remboursement par mois de 10000 pour __timespan à __percentage",
"remboursement par mois de 10000 après __timespan à __percentage",
"remboursement par mois de 10000 sur __timespan à __percentage",
"paiement mensuel de 10000 pour __timespan à __percentage",
"paiement mensuel de 10000 après __timespan à __percentage",
"paiement mensuel de 10000 sur __timespan à __percentage",
"paiement par mois de 10000 pour __timespan à __percentage",
"paiement par mois de 10000 après __timespan à __percentage",
"paiement par mois de 10000 sur __timespan à __percentage"
],
"identifier": "monthlyLoanRepayment"
},
{
"prototypeExpressions": [
"intérêt total sur 10000 pour __timespan à __percentage",
"intérêt total sur 10000 après __timespan à __percentage",
"intérêt total sur 10000 sur __timespan à __percentage",
"intérêt total de 10000 pour __timespan à __percentage",
"intérêt total de 10000 après __timespan à __percentage",
"intérêt total de 10000 sur __timespan à __percentage"
],
"identifier": "totalInterestOnLoanRepayment"
},
{
"prototypeExpressions": [
"intérêt annuel sur 10000 pour __timespan à __percentage",
"intérêt annuel sur 10000 après __timespan à __percentage",
"intérêt annuel sur 10000 sur __timespan à __percentage",
"intérêt par année sur 10000 pour __timespan à __percentage",
"intérêt par année sur 10000 après __timespan à __percentage",
"intérêt par année sur 10000 sur __timespan à __percentage"
],
"identifier": "annualInterestOnLoanRepayment"
},
{
"prototypeExpressions": [
"intérêt mensuel sur 10000 pour __timespan à __percentage",
"intérêt mensuel sur 10000 après __timespan à __percentage",
"intérêt mensuel sur 10000 sur __timespan à __percentage",
"intérêt mensuel de 10000 pour __timespan à __percentage",
"intérêt mensuel de 10000 après __timespan à __percentage",
"intérêt mensuel de 10000 sur __timespan à __percentage",
"intérêt par mois sur 10000 pour __timespan à __percentage",
"intérêt par mois sur 10000 après __timespan à __percentage",
"intérêt par mois sur 10000 sur __timespan à __percentage",
"intérêt par mois de 10000 pour __timespan à __percentage",
"intérêt par mois de 10000 après __timespan à __percentage",
"intérêt par mois de 10000 sur __timespan à __percentage"
],
"identifier": "monthlyInterestOnLoanRepayment"
},
{
"prototypeExpressions": [
"100 après __timespan à __percentage composé mensuellement",
"100 pour __timespan à __percentage composé mensuellement",
"100 sur __timespan à __percentage composé mensuellement",
"100 à __percentage après __timespan composé mensuellement",
"100 à __percentage pour __timespan composé mensuellement",
"100 à __percentage sur __timespan composé mensuellement",
"100 après __timespan à __percentage composé mensuellement",
"100 pour __timespan à __percentage composé mensuellement",
"100 sur __timespan à __percentage composé mensuellement",
"100 à __percentage après __timespan composé mensuellement",
"100 à __percentage pour __timespan composé mensuellement",
"100 à __percentage sur __timespan composé mensuellement"
],
"identifier": "compoundInterestCompoundingMonthly"
},
{
"prototypeExpressions": [
"100 après __timespan à __percentage",
"100 pour __timespan à __percentage",
"100 sur __timespan à __percentage",
"100 à __percentage après __timespan",
"100 à __percentage pour __timespan",
"100 à __percentage sur __timespan"
],
"identifier": "compoundInterest"
}
],
"general": [
{
"prototypeExpressions": [
"reste de 21 divisé par 5",
"restant de 20 divisé par 3",
"reste de 21 par 5"
],
"identifier": "remainder"
},
{
"prototypeExpressions": [
"la moitié de 20",
"moitié de 20"
],
"identifier": "halfOf"
},
{
"prototypeExpressions": [
"le plus petit entre 5 et 10",
"plus petit entre 2 et 30",
"plus petit de 5 et 10"
],
"identifier": "lesserOf"
},
{
"prototypeExpressions": [
"plus grand entre 2 et 30",
"plus grand de 200 et 100"
],
"identifier": "greaterOf"
},
{
"prototypeExpressions": [
"milieu entre 2 et 32",
"mi-chemin entre 2 et 32",
"moitié chemin entre 2 et 32"
],
"identifier": "midpoint"
},
{
"prototypeExpressions": [
"ppcm de 5 et 8",
"plus petit commun multiple de 5 et 8"
],
"identifier": "lcm"
},
{
"prototypeExpressions": [
"pgcd de 20 et 30",
"plus grand commun diviseur de 5 et 8",
"pgcd de 20 et 30",
"plus grand facteur commun de 5 et 8"
],
"identifier": "gcd"
},
{
"prototypeExpressions": [
"6 est sur 600 ce que combien est sur 8",
"6 sur 600 représente combien sur 8",
"6 sur 600 donne combien sur 8",
"5 est à 10 comme quoi à 80",
"5 est à 10 comme quoi est à 80"
],
"identifier": "proportionsFindNumerator"
},
{
"prototypeExpressions": [
"6 est sur 600 ce que 8 est sur combien",
"6 sur 600 représente 8 sur combien",
"6 sur 600 donne 8 sur combien",
"6 est lié à 60 comme 8 est lié à quoi",
"6 est à 60 comme 8 est à quoi"
],
"identifier": "proportionsFindDenominator"
},
{
"prototypeExpressions": [
"nombre aléatoire entre 1 et 5",
"aléatoire entre 1 et 5"
],
"identifier": "makeRandomNumber"
},
{
"prototypeExpressions": [
"racine carrée de 100",
"racine carrée 100"
],
"identifier": "squareRoot"
},
{
"prototypeExpressions": [
"racine cubique de 100",
"racine cubique 100"
],
"identifier": "cubedRoot"
},
{
"prototypeExpressions": [
"5 racine de 100",
"racine 5 de 100"
],
"identifier": "nthRoot"
},
{
"prototypeExpressions": [
"log 20 base 4",
"log de 20 sur base 4",
"log de 20 avec base 4",
"logarithme 20 base 4",
"logarithme de 20 sur base 4",
"logarithme de 20 avec base 4",
"81 est 9 à quelle puissance"
],
"identifier": "nthLog"
},
{
"prototypeExpressions": [
"sélection 10 de 0 à 10",
"sélectionner 10 de 0 à 10",
"sélection 10 entre 0 et 10",
"sélectionner 10 entre 0 et 10"
],
"identifier": "scrubNumberWithSpecifiedRange"
},
{
"prototypeExpressions": [
"5 sur 10"
],
"identifier": "xToY"
}
],
"percentage": [
{
"prototypeExpressions": [
"__percentage de 100"
],
"identifier": "percentOf"
},
{
"prototypeExpressions": [
"__percentage ôté de 100",
"__percentage de réduction sur 100",
"__percentage de diminution sur 100"
],
"identifier": "percentOff"
},
{
"prototypeExpressions": [
"__percentage d'augmentation sur 100",
"__percentage sur 100",
"__percentage ajouté à 100"
],
"identifier": "percentOn"
},
{
"prototypeExpressions": [
"30 donne __percentage de quoi",
"30 donne __percentage de combien",
"20 représente __percentage de quoi"
],
"identifier": "isPercentOfWhat"
},
{
"prototypeExpressions": [
"__percentage de quoi donne 30",
"__percentage de combien donne 30"
],
"identifier": "isPercentOfWhatClassic"
},
{
"prototypeExpressions": [
"30 donne __percentage de réduction sur combien",
"30 donne __percentage de réduction sur quoi",
"90 est une réduction de __percentage sur quoi",
"90 est une réduction de __percentage sur combien"
],
"identifier": "isPercentOffWhat"
},
{
"prototypeExpressions": [
"__percentage de réduction sur combien donne 30",
"__percentage ôtés de quoi donne 30",
"__percentage ôté de quoi donne 30",
"__percentage enlevé de quoi donne 30",
"__percentage enlevés de quoi donne 30",
"__percentage de réduction sur quoi donne 30",
"__percentage de diminution sur quoi donne 30"
],
"identifier": "isPercentOffWhatClassic"
},
{
"prototypeExpressions": [
"30 donne __percentage sur combien",
"30 donne __percentage sur quoi",
"150 est une augmentation de __percentage sur quoi"
],
"identifier": "isPercentOnWhat"
},
{
"prototypeExpressions": [
"__percentage sur combien donne 30",
"__percentage ajouté à quoi combien donne 30",
"__percentage d'augmentation sur quoi donne 30"
],
"identifier": "isPercentOnWhatClassic"
},
{
"prototypeExpressions": [
"50 est quel % de 200",
"10 en % de 20"
],
"identifier": "isWhatPercentOf"
},
{
"prototypeExpressions": [
"10 représente combien de % de réduction sur 20",
"10 est combien de % de réduction sur 20",
"10 comme % de réduction sur 20",
"10 en tant que % de réduction sur 20",
"30 en % de diminution sur 200",
"30 en % de réduction sur 200",
"30 en % ôté de 200",
"30 en % enlevé à 200"
],
"identifier": "isWhatPercentOff"
},
{
"prototypeExpressions": [
"20 donne quel % sur 10",
"20 en tant que % sur 10",
"220 en % d'augmentation sur 200",
"220 en % ajouté à 200",
"20 en tant que % sur 10",
"30 en % enlevé à 200"
],
"identifier": "isWhatPercentOn"
},
{
"prototypeExpressions": [
"10 sur 20 donne quel %",
"10 sur 20 comme %",
"10 sur 20 en tant que %",
"10 sur 20 sous forme de %",
"10 sur 20 donne combien de pourcents",
"10 sur 20 comme pourcents",
"10 sur 20 en tant que pourcents",
"10 sur 20 sous forme de pourcents",
"10 sur 20 donne quel pourcentage",
"10 sur 20 comme pourcentage",
"10 sur 20 sous forme de pourcentage",
"10 sur 20 en tant que pourcentage"
],
"identifier": "xToYIsWhatPercentage"
},
{
"prototypeExpressions": [
"10 sur 20 donne quel x",
"10 sur 20 comme x",
"10 sur 20 en tant que x",
"10 sur 20 donne quel multiple",
"10 sur 20 comme multiple",
"10 sur 20 en tant que multiple",
"10 sur 20 donne quel multiplicateur",
"10 sur 20 comme multiplicateur",
"10 sur 20 en tant que multiplicateur"
],
"identifier": "xToYIsWhatMultiplier"
}
],
"statistics": [
{
"prototypeExpressions": [
"__statistic_type de __list",
"__statistic_type __list"
],
"identifier": "statisticOfList"
},
{
"prototypeExpressions": [
"__statistic_type de __tag",
"__statistic_type __tag",
"__tag __statistic_type"
],
"identifier": "statisticOfTag"
}
],
"unitRelated": [
{
"prototypeExpressions": [
"nombre de __unit en __unit_expression",
"__unit en __unit_expression",
"__unit dans __unit_expression"
],
"identifier": "unitInUnitExpression"
},
{
"prototypeExpressions": [
"__unit_expression __substance in __unit",
"__unit_expression of __substance in __unit",
"__unit_expression __substance as __unit",
"__unit_expression of __substance as __unit",
"__unit_expression __substance to __unit",
"__unit_expression of __substance to __unit"
],
"identifier": "substanceWeightToVolumeConversion"
},
{
"prototypeExpressions": [
"densité de __substance",
"__substance densité"
],
"identifier": "densityOfSubstance"
},
{
"prototypeExpressions": [
"nombre de __duration en __timespan",
"__duration en __timespan",
"__duration dans __timespan"
],
"identifier": "calendarUnitInTimespan"
},
{
"prototypeExpressions": [
"__unit_rate donne quoi / __unit",
"__unit_rate donne combien / __unit",
"__unit_rate donne quoi /__unit",
"__unit_rate donne combien /__unit",
"__unit_rate donne quoi par __unit",
"__unit_rate donne combien par __unit",
"__unit_rate donne quoi par__unit",
"__unit_rate donne combien par__unit",
"__unit_rate représente quoi / __unit"
],
"identifier": "rateUnitChange"
}
]
}

View file

@ -0,0 +1,66 @@
/*
Localizable.strings
SoulverCore
Created by Zac Cohan on 29/9/19.
Copyright © 2019 Zac Cohan. All rights reserved.
*/
/* Line References */
//i.e line1 will be a reference to line 1
"plain text line reference" = "ligne";
/* Catégories d'unités */
"Time" = "Temps";
"Acceleration" = "Accélération";
"Length" = "Longueur";
"Mass" = "Masse";
"Volume" = "Volume";
"Frequency" = "Fréquence";
"Angle" = "Angle";
"Temperature" = "Température";
"Energy" = "Énergie";
"Power" = "Puissance";
"Pressure" = "Pression";
"Currency" = "Devise";
"Area" = "Surface";
"Speed" = "Vitesse";
"Data Transfer" = "Transfert de données";
"Data Storage" = "Stockage de données";
"Other Unit Kind" = "Autre type d'unité";
/* Erreurs */
"Error: ∞" = "Erreur : ∞";
"Error: incompatible units" = "Erreur : unités incompatibles";
"Error: divide by zero" = "Erreur : division par zéro";
"Error: imaginary number" = "Erreur : nombre imaginaire";
"Error: unsupported multiplicative unit" = "Erreur : unité d'exposant non prise en charge";
"Error: unsupported unit in rate" = "Erreur : unité non prise en charge dans le taux";
"Error: division without divisor" = "Erreur : division sans diviseur";
/* Positions d'un symbole de devise personnalisé */
"Before" = "Avant";
"Before (with space)" = "Avant (avec espace)";
"After" = "Après";
"After (with space)" = "Après (avec espace)";
/* Answer Contextual Metadata */
/* Used in the contextual menu for an answer */
/* For instance, km, a unit of distance */
"%@, a unit of %@" = "%@, une unité de %@";
/* a rate, like km per day */
"%@ per %@" = "%@ par %@";
"amount per %@" = "montant par %@";
/* days of the week, like February 12 was a Saturday, March 8 will be a Tuesday */
"%@ was a %@" = "%@ était un %@.";
"%@ will be a %@" = "%@ sera un%@.";
/* Quick Operators */
"plusQuickOperator" = "p";
"minusQuickOperator" = "m";
"timesQuickOperator" = "x";
"divideQuickOperator" = "d";

View file

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>day</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@day@</string>
<key>day</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>jour</string>
<key>other</key>
<string>jours</string>
</dict>
</dict>
<key>night</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@night@</string>
<key>night</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>nuit</string>
<key>other</key>
<string>nuits</string>
</dict>
</dict>
<key>ft</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@ft@</string>
<key>ft</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>pied</string>
<key>other</key>
<string>pieds</string>
</dict>
</dict>
<key>hr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@hour@</string>
<key>hour</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>heure</string>
<key>other</key>
<string>heures</string>
</dict>
</dict>
<key>in</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@in@</string>
<key>in</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>pouce</string>
<key>other</key>
<string>pouces</string>
</dict>
</dict>
<key>month</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@month@</string>
<key>month</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>mois</string>
<key>other</key>
<string>mois</string>
</dict>
</dict>
<key>week</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@week@</string>
<key>week</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>semaine</string>
<key>other</key>
<string>semaines</string>
</dict>
</dict>
<key>workday</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@workday@</string>
<key>workday</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>jour ouvré</string>
<key>other</key>
<string>jours ouvrés</string>
</dict>
</dict>
<key>year</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@year@</string>
<key>year</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>an</string>
<key>other</key>
<string>ans</string>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,122 @@
{
"fixtures": {
"colons": [
":",
""
],
"nextDateQualifiers": [
"suivant",
"suivante"
],
"converterSymbols": [
"vers"
],
"converterSymbolsIn": [
"en"
],
"converterSymbolsAs": [
"comme",
],
"converterSymbolsTo": [
"à"
],
"powerOperators": [
"^",
"**"
],
"percentWords": [
"pourcent",
"pourcentage",
"pour cent"
],
"hereAliases": [
"ici"
],
"nowDateAliases": [
"maintenant"
],
"ordinalSuffixes": [
"er",
"nd"
],
"piAliases": [
"π"
],
"divisionOperators": [
"÷",
"divisé par"
],
"midnightAliases": [
"minuit"
],
"previousDateQualifiers": [
"précédent",
"dernier"
],
"timespanWords": [
"intervalle de temps",
"durée"
],
"pmAliases": [
"pm"
],
"lessThanOrEqualToOperators": [
"<=",
"=<"
],
"conjunctionWordsOr": [
"ou"
],
"middayAliases": [
"midi"
],
"subtractionOperators": [
"",
"",
"moins"
],
"reverseSubtractionOperators": [
],
"additionOperators": [
"plus"
],
"amAliases": [
"am"
],
"todayDateAliases": [
"aujourd'hui"
],
"isNotEqualToOperators": [
"!=",
"=!"
],
"greaterThanOrEqualToOperators": [
">=",
"=>"
],
"totalAliases": [
"total",
"somme"
],
"multiplicationOperators": [
"×",
"x"
],
"averageAliases": [
"moyenne"
],
"countAliases": [
"décompte",
"dénombrement"
],
"yesterdayDateAliases": [
"hier"
],
"conjunctionWordsAnd": [
"et"
],
"tomorrowDateAliases": [
"demain"
]
}
}

View file

@ -0,0 +1,282 @@
{
"rounding": [
{
"prototypeExpressions": [
"rounded"
],
"identifier": "rounded"
},
{
"prototypeExpressions": [
"rounded up"
],
"identifier": "roundedUp"
},
{
"prototypeExpressions": [
"rounded down"
],
"identifier": "roundedDown"
},
{
"prototypeExpressions": [
"rounded to 3 dp",
"rounded 3 dp",
"rounded to 1 digit",
"rounded to 2 digits",
"rounded to 1 decimal",
"rounded to 2 decimals",
"to 3 dp",
"to 3 digit",
"to 3 digits",
"to 1 decimal point",
"to 1 decimal place",
"to 3 decimal points",
"to 3 decimal places",
"to 3 decimal",
"to 3 decimals"
],
"identifier": "roundedToDp"
},
{
"prototypeExpressions": [
"round up to nearest 10",
"rounded up to nearest 10",
"round up to next 10",
"rounded up to next 10"
],
"identifier": "roundedUpToNearestX"
},
{
"prototypeExpressions": [
"rounded down to nearest 10",
"rounded down to last 10",
"rounded down to 10"
],
"identifier": "roundedDownToNearestX"
},
{
"prototypeExpressions": [
"to nearest 10",
"round to nearest 10",
"rounded to nearest 10"
],
"identifier": "roundedToNearestX"
}
],
"compoundUnits": [
{
"prototypeExpressions": [
"__converter_symbol years and months",
"__converter_symbol years & months",
"__converter_symbol yrs & months",
"__converter_symbol months & years",
"__converter_symbol months and years"
],
"identifier": "yearsAndMonths"
},
{
"prototypeExpressions": [
"__converter_symbol months and weeks",
"__converter_symbol months & weeks",
"__converter_symbol months & wks",
"__converter_symbol weeks and months",
"__converter_symbol weeks & months"
],
"identifier": "monthsAndWeeks"
},
{
"prototypeExpressions": [
"__converter_symbol months and days",
"__converter_symbol months & days",
"__converter_symbol days and months",
"__converter_symbol days & months"
],
"identifier": "monthsAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol weeks and days",
"__converter_symbol weeks & days",
"__converter_symbol wks and days",
"__converter_symbol wks & days",
"__converter_symbol days and weeks",
"__converter_symbol days and wks",
"__converter_symbol days & weeks"
],
"identifier": "weeksAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol days and hours",
"__converter_symbol days and hrs",
"__converter_symbol hours and days",
"__converter_symbol hrs and days"
],
"identifier": "daysAndHours"
},
{
"prototypeExpressions": [
"__converter_symbol hours and minutes",
"__converter_symbol hours and min",
"__converter_symbol hrs and min",
"__converter_symbol hr and min"
],
"identifier": "hoursAndMinutes"
},
{
"prototypeExpressions": [
"__converter_symbol minutes and seconds",
"__converter_symbol min and sec",
"__converter_symbol min and s"
],
"identifier": "minutesAndSeconds"
},
{
"prototypeExpressions": [
"__converter_symbol pounds ounces",
"__converter_symbol pound ounce",
"__converter_symbol pounds and ounces",
"__converter_symbol pounds & ounces",
"__converter_symbol pound and ounce",
"__converter_symbol pound & ounce",
"__converter_symbol pounds and oz",
"__converter_symbol pounds & oz",
"__converter_symbol lb and oz",
"__converter_symbol lb & oz",
"__converter_symbol lb oz"
],
"identifier": "poundsAndOunces"
},
{
"prototypeExpressions": [
"__converter_symbol feet and inches",
"__converter_symbol feet and inch",
"__converter_symbol inches and feet",
"__converter_symbol feet inches",
"__converter_symbol foot inch",
"__converter_symbol feet inch",
"__converter_symbol ft inch"
],
"identifier": "feetAndInches"
}
],
"dateTime": [
{
"prototypeExpressions": [
"__converter_symbol date"
],
"identifier": "toDate"
},
{
"prototypeExpressions": [
"__converter_symbol timestamp",
"__converter_symbol time stamp"
],
"identifier": "toTimestamp"
},
{
"prototypeExpressions": [
"__converter_symbol timespan",
"__converter_symbol time span"
],
"identifier": "toTimespan"
},
{
"prototypeExpressions": [
"__converter_symbol laptime",
"__converter_symbol lap time"
],
"identifier": "toLaptime"
},
{
"prototypeExpressions": [
"__converter_symbol iso8601",
"__converter_symbol iso"
],
"identifier": "toISO8601"
}
],
"numberForms": [
{
"prototypeExpressions": [
"__converter_symbol num",
"__converter_symbol number",
"__converter_symbol decimal",
"__converter_symbol plain number",
"__converter_symbol dec"
],
"identifier": "toDecimal"
},
{
"prototypeExpressions": [
"__converter_symbol frac",
"__converter_symbol fraction",
"__converter_symbol a fraction"
],
"identifier": "toFraction"
},
{
"prototypeExpressions": [
"__converter_symbol scientific notation",
"__converter_symbol scientific",
"__converter_symbol sci not",
"__converter_symbol sci"
],
"identifier": "toScientificNotation"
},
{
"prototypeExpressions": [
"__converter_symbol multiplier",
"__converter_symbol multiple"
],
"identifier": "toMultiplier"
},
{
"prototypeExpressions": [
"__converter_symbol hexadecimal",
"__converter_symbol hex"
],
"identifier": "toHexadecimal"
},
{
"prototypeExpressions": [
"__converter_symbol binary",
"__converter_symbol bin"
],
"identifier": "toBinary"
},
{
"prototypeExpressions": [
"__converter_symbol octal",
"__converter_symbol oct"
],
"identifier": "toOctal"
}
],
"music": [
{
"prototypeExpressions": [
"__converter_symbol pitch",
"__converter_symbol musical note"
],
"identifier": "toPitch"
},
{
"prototypeExpressions": [
"__converter_symbol midi note number",
"__converter_symbol midi number",
"__converter_symbol midi"
],
"identifier": "toMIDI"
}
],
"unitRelated": [
{
"prototypeExpressions": [
"__converter_symbol dms"
],
"identifier": "toDMS"
}
]
}

View file

@ -0,0 +1,68 @@
/*
Localizable.strings
SoulverCore
Created by Zac Cohan on 29/9/19.
Copyright © 2019 Zac Cohan. All rights reserved.
*/
/* Line References */
"plain text line reference" = "行";
"line above" = "上の行";
"previous line" = "前の行";
"prev" = "前";
/* Unit Categories */
"Time" = "時間";
"Acceleration" = "加速度";
"Length" = "長さ";
"Mass" = "質量";
"Volume" = "体積";
"Frequency" = "周波数";
"Angle" = "角度";
"Temperature" = "温度";
"Energy" = "エネルギー";
"Power" = "電力";
"Pressure" = "圧力";
"Currency" = "通貨";
"Area" = "面積";
"Speed" = "速度";
"Data Transfer" = "データ転送";
"Data Storage" = "データストレージ";
"Other Unit Kind" = "その他の単位";
/* Errors */
"Error: ∞" = "エラー: ∞";
"Error: incompatible units" = "エラー: 互換性のない単位";
"Error: divide by zero" = "エラー: ゼロによる除算";
"Error: imaginary number" = "エラー: 虚数";
"Error: unsupported multiplicative unit" = "エラー: サポートされていない乗数単位";
"Error: unsupported unit in rate" = "エラー: レートでサポートされていない単位";
"Error: division without divisor" = "エラー: 除数がありません";
"Error: try a smaller number" = "エラー: より小さい数を試してください";
"Error: unsupported exponent operation" = "エラー: サポートされていない指数演算";
/* Positions of a custom currency symbol */
"Before" = "前";
"Before (with space)" = "前(スペース付き)";
"After" = "後";
"After (with space)" = "後(スペース付き)";
/* Answer Contextual Metadata */
"%@, a unit of %@" = "%@、%@の単位";
"%@ per %@" = "%@毎%@";
"amount per %@" = "%@あたりの量";
"%@ was a %@" = "%@は%@でした。";
"%@ will be a %@" = "%@は%@になります。";
/* Quick Operators */
"plusQuickOperator" = "p";
"minusQuickOperator" = "m";
"timesQuickOperator" = "x";
"divideQuickOperator" = "d";
/* Weather Functions */
"on __datestamp" = "__datestampの";
"in __datestamp" = "__datestampの";

View file

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>day</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@day@</string>
<key>day</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>日</string>
</dict>
</dict>
<key>night</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@night@</string>
<key>night</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>夜</string>
</dict>
</dict>
<key>ft</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@ft@</string>
<key>ft</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>フィート</string>
</dict>
</dict>
<key>hr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@hour@</string>
<key>hour</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>時間</string>
</dict>
</dict>
<key>in</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@in@</string>
<key>in</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>インチ</string>
</dict>
</dict>
<key>month</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@month@</string>
<key>month</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>月</string>
</dict>
</dict>
<key>week</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@week@</string>
<key>week</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>週間</string>
</dict>
</dict>
<key>workday</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@workday@</string>
<key>workday</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>営業日</string>
</dict>
</dict>
<key>year</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@year@</string>
<key>year</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>年</string>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,232 @@
{
"fixtures": {
"divisionOperators": [
"あたり"
],
"piAliases": [
],
"midnightAliases": [
"深夜零時"
],
"hereAliases": [
"ここ"
],
"amAliases": [
"午前"
],
"thisDateQualifiers": [
"今"
],
"midiTypes": [
"ミディ番号"
],
"numberTypes": [
"数値",
"数字",
"通常の数字",
"10進数"
],
"octalTypes": [
"8進数"
],
"lcmAliases": [
"最小公倍数"
],
"prepositionWordsAt": [
"時点"
],
"timestampTypes": [
"タイムスタンプ"
],
"conjunctionWordsOr": [
"または"
],
"powerOperators": [
],
"nowDateAliases": [
"現在"
],
"ordinalSuffixes": [
"番目"
],
"countAliases": [
"カウント"
],
"totalAliases": [
"合計",
"総和"
],
"fractionTypes": [
"分数"
],
"iso8601Types": [
],
"isNotEqualToOperators": [
],
"colons": [
""
],
"greaterThanOrEqualToOperators": [
],
"gcdAliases": [
"最大公約数"
],
"hexadecimalTypes": [
"16進数"
],
"greaterAliases": [
"より大きい",
"より大きな",
"最大"
],
"hoursAndMinutesTypes": [
"時間と分",
"時と分",
"時間分",
"時分"
],
"multiplicationOperators": [
],
"prepositionWordsWith": [
"と"
],
"reverseSubtractionOperators": [
],
"openBracketAliases": [
],
"medianAliases": [
"中央値"
],
"pitchTypes": [
"音程",
"音符"
],
"daysAndHoursTypes": [
"日と時間",
"日と時",
"時間と日",
"時と日"
],
"pmAliases": [
"午後"
],
"lesserAliases": [
"より小さい",
"より小さな",
"最小"
],
"scientificNotationTypes": [
"科学的記数法",
"科学表記",
"指数表記"
],
"percentWords": [
"パーセント",
"割合"
],
"feetAndInchesTypes": [
"フィートとインチ",
"フィートインチ",
"インチとフィート"
],
"standardDeviationAliases": [
"標準偏差"
],
"conjunctionWordsAnd": [
"と"
],
"additionOperators": [
"プラス"
],
"weeksAndDaysTypes": [
"週と日",
"週間と日",
"日と週"
],
"middayAliases": [
"正午",
"昼"
],
"lessThanOrEqualToOperators": [
],
"minutesAndSecondsTypes": [
"分と秒",
"分秒"
],
"monthsAndDaysTypes": [
"月と日",
"日と月"
],
"todayDateAliases": [
"今日"
],
"yearsAndMonthsTypes": [
"年と月",
"月と年"
],
"previousDateQualifiers": [
"前の",
"前回の"
],
"converterSymbols": [
"から",
"として"
],
"yesterdayDateAliases": [
"昨日"
],
"frequencyRateTypes": [
"毎秒"
],
"monthsAndWeeksTypes": [
"月と週",
"週と月"
],
"averageAliases": [
"平均",
"平均値"
],
"tomorrowDateAliases": [
"明日"
],
"nextDateQualifiers": [
"次の"
],
"dateTypes": [
"日付"
],
"subtractionOperators": [
"マイナス"
],
"closeBracketAliases": [
],
"binaryTypes": [
"2進数"
],
"multiplierTypes": [
"乗数",
"倍数"
],
"laptimeTypes": [
"ラップタイム"
],
"dmsTypes": [
"度分秒"
],
"poundsAndOuncesTypes": [
"ポンドとオンス",
"ポンドオンス"
],
"grammerWordsOf": [
"の"
],
"prepositionWordsUntil": [
"まで",
"までに"
],
"timespanWords": [
"期間",
"時間間隔"
]
}
}

View file

@ -0,0 +1,282 @@
{
"rounding": [
{
"prototypeExpressions": [
"rounded"
],
"identifier": "rounded"
},
{
"prototypeExpressions": [
"rounded up"
],
"identifier": "roundedUp"
},
{
"prototypeExpressions": [
"rounded down"
],
"identifier": "roundedDown"
},
{
"prototypeExpressions": [
"rounded to 3 dp",
"rounded 3 dp",
"rounded to 1 digit",
"rounded to 2 digits",
"rounded to 1 decimal",
"rounded to 2 decimals",
"to 3 dp",
"to 3 digit",
"to 3 digits",
"to 1 decimal point",
"to 1 decimal place",
"to 3 decimal points",
"to 3 decimal places",
"to 3 decimal",
"to 3 decimals"
],
"identifier": "roundedToDp"
},
{
"prototypeExpressions": [
"round up to nearest 10",
"rounded up to nearest 10",
"round up to next 10",
"rounded up to next 10"
],
"identifier": "roundedUpToNearestX"
},
{
"prototypeExpressions": [
"rounded down to nearest 10",
"rounded down to last 10",
"rounded down to 10"
],
"identifier": "roundedDownToNearestX"
},
{
"prototypeExpressions": [
"to nearest 10",
"round to nearest 10",
"rounded to nearest 10"
],
"identifier": "roundedToNearestX"
}
],
"compoundUnits": [
{
"prototypeExpressions": [
"__converter_symbol years and months",
"__converter_symbol years & months",
"__converter_symbol yrs & months",
"__converter_symbol months & years",
"__converter_symbol months and years"
],
"identifier": "yearsAndMonths"
},
{
"prototypeExpressions": [
"__converter_symbol months and weeks",
"__converter_symbol months & weeks",
"__converter_symbol months & wks",
"__converter_symbol weeks and months",
"__converter_symbol weeks & months"
],
"identifier": "monthsAndWeeks"
},
{
"prototypeExpressions": [
"__converter_symbol months and days",
"__converter_symbol months & days",
"__converter_symbol days and months",
"__converter_symbol days & months"
],
"identifier": "monthsAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol weeks and days",
"__converter_symbol weeks & days",
"__converter_symbol wks and days",
"__converter_symbol wks & days",
"__converter_symbol days and weeks",
"__converter_symbol days and wks",
"__converter_symbol days & weeks"
],
"identifier": "weeksAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol days and hours",
"__converter_symbol days and hrs",
"__converter_symbol hours and days",
"__converter_symbol hrs and days"
],
"identifier": "daysAndHours"
},
{
"prototypeExpressions": [
"__converter_symbol hours and minutes",
"__converter_symbol hours and min",
"__converter_symbol hrs and min",
"__converter_symbol hr and min"
],
"identifier": "hoursAndMinutes"
},
{
"prototypeExpressions": [
"__converter_symbol minutes and seconds",
"__converter_symbol min and sec",
"__converter_symbol min and s"
],
"identifier": "minutesAndSeconds"
},
{
"prototypeExpressions": [
"__converter_symbol pounds ounces",
"__converter_symbol pound ounce",
"__converter_symbol pounds and ounces",
"__converter_symbol pounds & ounces",
"__converter_symbol pound and ounce",
"__converter_symbol pound & ounce",
"__converter_symbol pounds and oz",
"__converter_symbol pounds & oz",
"__converter_symbol lb and oz",
"__converter_symbol lb & oz",
"__converter_symbol lb oz"
],
"identifier": "poundsAndOunces"
},
{
"prototypeExpressions": [
"__converter_symbol feet and inches",
"__converter_symbol feet and inch",
"__converter_symbol inches and feet",
"__converter_symbol feet inches",
"__converter_symbol foot inch",
"__converter_symbol feet inch",
"__converter_symbol ft inch"
],
"identifier": "feetAndInches"
}
],
"dateTime": [
{
"prototypeExpressions": [
"__converter_symbol date"
],
"identifier": "toDate"
},
{
"prototypeExpressions": [
"__converter_symbol timestamp",
"__converter_symbol time stamp"
],
"identifier": "toTimestamp"
},
{
"prototypeExpressions": [
"__converter_symbol timespan",
"__converter_symbol time span"
],
"identifier": "toTimespan"
},
{
"prototypeExpressions": [
"__converter_symbol laptime",
"__converter_symbol lap time"
],
"identifier": "toLaptime"
},
{
"prototypeExpressions": [
"__converter_symbol iso8601",
"__converter_symbol iso"
],
"identifier": "toISO8601"
}
],
"numberForms": [
{
"prototypeExpressions": [
"__converter_symbol num",
"__converter_symbol number",
"__converter_symbol decimal",
"__converter_symbol plain number",
"__converter_symbol dec"
],
"identifier": "toDecimal"
},
{
"prototypeExpressions": [
"__converter_symbol frac",
"__converter_symbol fraction",
"__converter_symbol a fraction"
],
"identifier": "toFraction"
},
{
"prototypeExpressions": [
"__converter_symbol scientific notation",
"__converter_symbol scientific",
"__converter_symbol sci not",
"__converter_symbol sci"
],
"identifier": "toScientificNotation"
},
{
"prototypeExpressions": [
"__converter_symbol multiplier",
"__converter_symbol multiple"
],
"identifier": "toMultiplier"
},
{
"prototypeExpressions": [
"__converter_symbol hexadecimal",
"__converter_symbol hex"
],
"identifier": "toHexadecimal"
},
{
"prototypeExpressions": [
"__converter_symbol binary",
"__converter_symbol bin"
],
"identifier": "toBinary"
},
{
"prototypeExpressions": [
"__converter_symbol octal",
"__converter_symbol oct"
],
"identifier": "toOctal"
}
],
"music": [
{
"prototypeExpressions": [
"__converter_symbol pitch",
"__converter_symbol musical note"
],
"identifier": "toPitch"
},
{
"prototypeExpressions": [
"__converter_symbol midi note number",
"__converter_symbol midi number",
"__converter_symbol midi"
],
"identifier": "toMIDI"
}
],
"unitRelated": [
{
"prototypeExpressions": [
"__converter_symbol dms"
],
"identifier": "toDMS"
}
]
}

View file

@ -0,0 +1,68 @@
/*
Localizable.strings
SoulverCore
Created by Zac Cohan on 29/9/19.
Copyright © 2019 Zac Cohan. All rights reserved.
*/
/* Line References */
"plain text line reference" = "줄";
"line above" = "윗줄";
"previous line" = "이전 줄";
"prev" = "이전";
/* Unit Categories */
"Time" = "시간";
"Acceleration" = "가속도";
"Length" = "길이";
"Mass" = "질량";
"Volume" = "부피";
"Frequency" = "주파수";
"Angle" = "각도";
"Temperature" = "온도";
"Energy" = "에너지";
"Power" = "전력";
"Pressure" = "압력";
"Currency" = "통화";
"Area" = "면적";
"Speed" = "속도";
"Data Transfer" = "데이터 전송";
"Data Storage" = "데이터 저장";
"Other Unit Kind" = "기타 단위";
/* Errors */
"Error: ∞" = "오류: ∞";
"Error: incompatible units" = "오류: 호환되지 않는 단위";
"Error: divide by zero" = "오류: 0으로 나누기";
"Error: imaginary number" = "오류: 허수";
"Error: unsupported multiplicative unit" = "오류: 지원되지 않는 승수 단위";
"Error: unsupported unit in rate" = "오류: 비율에서 지원되지 않는 단위";
"Error: division without divisor" = "오류: 제수가 없음";
"Error: try a smaller number" = "오류: 더 작은 숫자를 시도하세요";
"Error: unsupported exponent operation" = "오류: 지원되지 않는 지수 연산";
/* Positions of a custom currency symbol */
"Before" = "앞";
"Before (with space)" = "앞 (공백 포함)";
"After" = "뒤";
"After (with space)" = "뒤 (공백 포함)";
/* Answer Contextual Metadata */
"%@, a unit of %@" = "%@, %@의 단위";
"%@ per %@" = "%@ 당 %@";
"amount per %@" = "%@ 당 양";
"%@ was a %@" = "%@는 %@였습니다.";
"%@ will be a %@" = "%@는 %@일 것입니다.";
/* Quick Operators */
"plusQuickOperator" = "p";
"minusQuickOperator" = "m";
"timesQuickOperator" = "x";
"divideQuickOperator" = "d";
/* Weather Functions */
"on __datestamp" = "__datestamp에";
"in __datestamp" = "__datestamp에";

View file

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>day</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@day@</string>
<key>day</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>일</string>
</dict>
</dict>
<key>night</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@night@</string>
<key>night</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>밤</string>
</dict>
</dict>
<key>ft</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@ft@</string>
<key>ft</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>피트</string>
</dict>
</dict>
<key>hr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@hour@</string>
<key>hour</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>시간</string>
</dict>
</dict>
<key>in</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@in@</string>
<key>in</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>인치</string>
</dict>
</dict>
<key>month</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@month@</string>
<key>month</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>개월</string>
</dict>
</dict>
<key>week</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@week@</string>
<key>week</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>주</string>
</dict>
</dict>
<key>workday</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@workday@</string>
<key>workday</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>영업일</string>
</dict>
</dict>
<key>year</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@year@</string>
<key>year</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>년</string>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,219 @@
{
"fixtures": {
"divisionOperators": [
"당"
],
"piAliases": [
],
"midnightAliases": [
"자정"
],
"hereAliases": [
"여기"
],
"amAliases": [
"오전"
],
"thisDateQualifiers": [
"이번"
],
"midiTypes": [
"미디번호"
],
"numberTypes": [
"숫자",
"수",
"십진수"
],
"octalTypes": [
"8진수"
],
"lcmAliases": [
"최소공배수"
],
"prepositionWordsAt": [
"에"
],
"timestampTypes": [
"타임스탬프"
],
"conjunctionWordsOr": [
"또는"
],
"powerOperators": [
],
"nowDateAliases": [
"현재"
],
"ordinalSuffixes": [
"번째"
],
"countAliases": [
"개수"
],
"totalAliases": [
"총합",
"합계"
],
"fractionTypes": [
"분수"
],
"iso8601Types": [
],
"isNotEqualToOperators": [
],
"colons": [
""
],
"greaterThanOrEqualToOperators": [
],
"gcdAliases": [
"최대공약수"
],
"hexadecimalTypes": [
"16진수"
],
"greaterAliases": [
"더 큰",
"보다 큰",
"최대"
],
"hoursAndMinutesTypes": [
"시간과 분",
"시와 분",
"시분"
],
"multiplicationOperators": [
],
"prepositionWordsWith": [
"와",
"과"
],
"reverseSubtractionOperators": [
],
"openBracketAliases": [
],
"medianAliases": [
"중앙값"
],
"pitchTypes": [
"음높이",
"음표"
],
"daysAndHoursTypes": [
"일과 시간",
"일시"
],
"pmAliases": [
"오후"
],
"lesserAliases": [
"더 작은",
"보다 작은",
"최소"
],
"scientificNotationTypes": [
"과학적 표기법",
"지수 표기법"
],
"percentWords": [
"퍼센트",
"백분율"
],
"feetAndInchesTypes": [
"피트와 인치"
],
"standardDeviationAliases": [
"표준편차"
],
"conjunctionWordsAnd": [
"와",
"과"
],
"additionOperators": [
"더하기"
],
"weeksAndDaysTypes": [
"주와 일",
"주일"
],
"middayAliases": [
"정오"
],
"lessThanOrEqualToOperators": [
],
"minutesAndSecondsTypes": [
"분과 초",
"분초"
],
"monthsAndDaysTypes": [
"월과 일",
"월일"
],
"todayDateAliases": [
"오늘"
],
"yearsAndMonthsTypes": [
"년과 월",
"연월"
],
"previousDateQualifiers": [
"이전",
"지난"
],
"converterSymbols": [
],
"yesterdayDateAliases": [
"어제"
],
"frequencyRateTypes": [
"초당"
],
"monthsAndWeeksTypes": [
"월과 주",
"월주"
],
"averageAliases": [
"평균"
],
"tomorrowDateAliases": [
"내일"
],
"nextDateQualifiers": [
"다음"
],
"dateTypes": [
"날짜"
],
"subtractionOperators": [
"빼기"
],
"closeBracketAliases": [
],
"binaryTypes": [
"2진수"
],
"multiplierTypes": [
"배수"
],
"laptimeTypes": [
"랩타임"
],
"dmsTypes": [
"도분초"
],
"poundsAndOuncesTypes": [
"파운드와 온스"
],
"grammerWordsOf": [
"의"
],
"prepositionWordsUntil": [
"까지"
],
"timespanWords": [
"기간",
"시간간격"
]
}
}

View file

@ -0,0 +1,174 @@
{
"rounding": [
{
"prototypeExpressions": [
"округленное",
"округлено",
"округлить"
],
"identifier": "rounded"
},
{
"prototypeExpressions": [
"округленное вверх",
"округлено вверх",
"округлить вверх"
],
"identifier": "roundedUp"
},
{
"prototypeExpressions": [
"округленное вниз",
"округлено вниз",
"округлить вниз"
],
"identifier": "roundedDown"
},
{
"prototypeExpressions": [
"округлено до 3 знаков после запятой",
"округлено до 3 знаков",
"__converter_symbol 3 цифры",
"до 3 знака",
"до 3 знаков после запятой",
"до 3 знаков",
"до 3 цифра",
"до 3 цифров",
"до 3 цифры",
"до 3 цифр",
"до 1 десятичного знака",
"до 1 десятичного места",
"до 3 десятичных знаков"
],
"identifier": "roundedToDp"
},
{
"prototypeExpressions": [
"округлить вверх до ближайших 10",
"округлено вверх до ближайших 10",
"округлено вверх до ближайших 10",
"вверх до ближайших 10"
],
"identifier": "roundedUpToNearestX"
},
{
"prototypeExpressions": [
"округлить вниз до ближайших 10",
"округлено вниз до ближайших 10",
"вниз до ближайших 10"
],
"identifier": "roundedDownToNearestX"
},
{
"prototypeExpressions": [
"округлить до ближайших 10",
"округлено до ближайших 10",
"до ближайших 10"
],
"identifier": "roundedToNearestX"
}
],
"compoundUnits": [
{
"prototypeExpressions": [
"__converter_symbol годы и месяцы"
],
"identifier": "yearsAndMonths"
},
{
"prototypeExpressions": [
"__converter_symbol месяцы и недели"
],
"identifier": "monthsAndWeeks"
},
{
"prototypeExpressions": [
"__converter_symbol месяцы и дни"
],
"identifier": "monthsAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol недели и дни"
],
"identifier": "weeksAndDays"
},
{
"prototypeExpressions": [
"__converter_symbol дни и часы"
],
"identifier": "daysAndHours"
},
{
"prototypeExpressions": [
"__converter_symbol часы и минуты"
],
"identifier": "hoursAndMinutes"
},
{
"prototypeExpressions": [
"__converter_symbol минуты и секунды"
],
"identifier": "minutesAndSeconds"
}
],
"dateTime": [
{
"prototypeExpressions": [
"__converter_symbol дату",
"__converter_symbol дата"
],
"identifier": "toDate"
},
{
"prototypeExpressions": [
"__converter_symbol метку времени",
"__converter_symbol метка времени",
"__converter_symbol временной промежуток"
],
"identifier": "toTimestamp"
},
{
"prototypeExpressions": [
"__converter_symbol временной промежуток"
],
"identifier": "toTimespan"
},
{
"prototypeExpressions": [
"__converter_symbol время круга"
],
"identifier": "toLaptime"
}
],
"numberForms": [
{
"prototypeExpressions": [
"__converter_symbol число"
],
"identifier": "toDecimal"
},
{
"prototypeExpressions": [
"__converter_symbol дробь"
],
"identifier": "toFraction"
},
{
"prototypeExpressions": [
"__converter_symbol кратность"
],
"identifier": "toMultiplier"
}
],
"music": [
{
"prototypeExpressions": [
"__converter_symbol ноту",
"__converter_symbol нота"
],
"identifier": "toPitch"
}
]
}

View file

@ -0,0 +1,432 @@
{
"weatherRelated": [
{
"prototypeExpressions": [
"минимальная температура в __timezone",
"минимум в __timezone",
"низкая в __timezone",
"__timezone минимум"
],
"identifier": "lowTemperature"
},
{
"prototypeExpressions": [
"максимальная температура в __timezone",
"максимум в __timezone",
"высокая в __timezone",
"температура выше нормы в __timezone",
"__timezone максимум"
],
"identifier": "highTemperature"
},
{
"prototypeExpressions": [
"вероятность осадков в __timezone",
"вероятность дождя в __timezone",
"__timezone вероятность дождя"
],
"identifier": "precipitationChance"
},
{
"prototypeExpressions": [
"количество осадков в __timezone",
"дождь в __timezone",
"осадки в __timezone",
"__timezone осадки"
],
"identifier": "rainfallAmount"
},
{
"prototypeExpressions": [
"количество снега в __timezone",
"снег в __timezone",
"__timezone снег"
],
"identifier": "snowfallAmount"
},
{
"prototypeExpressions": [
"ощущаемая температура в __timezone",
"ощущается как в __timezone",
"__timezone ощущается"
],
"identifier": "apparentTemperature"
},
{
"prototypeExpressions": [
"текущая температура в __timezone",
"температура в __timezone"
],
"identifier": "currentTemperature"
},
{
"prototypeExpressions": [
"погода в __timezone",
"__timezone погода",
"погодные условия в __timezone",
"условия погоды в __timezone"
],
"identifier": "weatherConditions"
},
{
"prototypeExpressions": [
"влажность в __timezone",
"__timezone влажность"
],
"identifier": "humidity"
},
{
"prototypeExpressions": [
"облачность в __timezone",
"__timezone облачность"
],
"identifier": "cloudCover"
},
{
"prototypeExpressions": [
"видимость в __timezone",
"__timezone видимость"
],
"identifier": "visibility"
},
{
"prototypeExpressions": [
"скорость ветра в __timezone",
"ветер в __timezone",
"__timezone ветер"
],
"identifier": "windSpeed"
},
{
"prototypeExpressions": [
"направление ветра в __timezone",
"__timezone направление ветра"
],
"identifier": "windDirection"
},
{
"prototypeExpressions": [
"точка росы в __timezone",
"__timezone точка росы"
],
"identifier": "dewPoint"
},
{
"prototypeExpressions": [
"индекс уф в __timezone",
"__timezone индекс уф"
],
"identifier": "uvIndex"
},
{
"prototypeExpressions": [
"давление в __timezone",
"__timezone давление"
],
"identifier": "pressure"
},
{
"prototypeExpressions": [
"направление давления в __timezone",
"__timezone направление давления"
],
"identifier": "pressureDirection"
},
{
"prototypeExpressions": [
"восход солнца в __timezone",
"__timezone восход солнца"
],
"identifier": "sunrise"
},
{
"prototypeExpressions": [
"закат в __timezone",
"заход солнца в __timezone",
"__timezone заход солнца",
"__timezone закат"
],
"identifier": "sunset"
},
{
"prototypeExpressions": [
"восход луны в __timezone",
"луна в __timezone",
"__timezone восход луны"
],
"identifier": "moonrise"
},
{
"prototypeExpressions": [
"заход луны в __timezone",
"__timezone заход луны"
],
"identifier": "moonset"
},
{
"prototypeExpressions": [
"фаза луны в __timezone",
"луна в __timezone",
"__timezone фаза луны"
],
"identifier": "moonPhase"
}
],
"percentage": [
{
"prototypeExpressions": [
"__percentage от 100",
"__percentage из 100"
],
"identifier": "percentOf"
},
{
"prototypeExpressions": [
"__percentage к 100"
],
"identifier": "percentOn"
},
{
"prototypeExpressions": [
"30 это __percentage от чего",
"30 это __percentage от"
],
"identifier": "isPercentOfWhat"
},
{
"prototypeExpressions": [
"__percentage от чего равно 30"
],
"identifier": "isPercentOfWhatClassic"
},
{
"prototypeExpressions": [
"30 это __percentage отняли от чего",
"30 это __percentage отняли от"
],
"identifier": "isPercentOffWhat"
},
{
"prototypeExpressions": [
"__percentage из чего равно 30"
],
"identifier": "isPercentOffWhatClassic"
},
{
"prototypeExpressions": [
"30 это __percentage к чему",
"30 это __percentage к"
],
"identifier": "isPercentOnWhat"
},
{
"prototypeExpressions": [
"__percentage к чему равно 30"
],
"identifier": "isPercentOnWhatClassic"
},
{
"prototypeExpressions": [
"10 как % от 20",
"10 сколько % от 20",
"10 сколько процентов от 20"
],
"identifier": "isWhatPercentOf"
},
{
"prototypeExpressions": [
"10 сколько % отняли от 20",
"10 сколько процентов отняли от 20"
],
"identifier": "isWhatPercentOff"
},
{
"prototypeExpressions": [
"20 сколько % сверх 10",
"20 сколько процентов сверх 10"
],
"identifier": "isWhatPercentOn"
},
{
"prototypeExpressions": [
"50 до 70 как %"
],
"identifier": "xToYIsWhatPercentage"
}
],
"general": [
{
"prototypeExpressions": [
"остаток от 20 разделенного на 3"
],
"identifier": "remainder"
},
{
"prototypeExpressions": [
"56 до ближайших 10",
"16 округлить до ближайших 10",
"16 округлено до ближайших 10"
],
"identifier": "upToNearestX"
},
{
"prototypeExpressions": [
"56 вниз до ближайших 10",
"16 округлить вниз до ближайших 10",
"16 округлено вниз до ближайших 10"
],
"identifier": "downToNearestX"
},
{
"prototypeExpressions": [
"56 до ближайших 10",
"16 округлить до ближайших 10",
"16 округлено до ближайших 10"
],
"identifier": "toNearestX"
},
{
"prototypeExpressions": [
"половина 20"
],
"identifier": "halfOf"
},
{
"prototypeExpressions": [
"меньшее из 2 и 30"
],
"identifier": "lesserOf"
},
{
"prototypeExpressions": [
"большее из 2 и 30"
],
"identifier": "greaterOf"
},
{
"prototypeExpressions": [
"середина между 2 и 32"
],
"identifier": "midpoint"
},
{
"prototypeExpressions": [
"6 к 600 как что к 8",
"6 к 600 это как что к 8"
],
"identifier": "proportionsFindNumerator"
},
{
"prototypeExpressions": [
"6 к 600 как 8 к чему",
"6 к 600 это как 8 к чему"
],
"identifier": "proportionsFindDenominator"
},
{
"prototypeExpressions": [
"случайное число между 1 и 5",
"рандомное число между 1 и 5",
"число между 1 и 5"
],
"identifier": "makeRandomNumber"
}
],
"datetime": [
{
"prototypeExpressions": [
"__duration в __datespan"
],
"identifier": "calendarUnitInDatespan"
},
{
"prototypeExpressions": [
"__duration от __datestamp до __datestamp",
"__duration между __datestamp и __datestamp",
"__duration с __datestamp по __datestamp"
],
"identifier": "calendarUnitBetweenDates"
},
{
"prototypeExpressions": [
"__duration до __datestamp"
],
"identifier": "calendarUnitToDate"
},
{
"prototypeExpressions": [
"__datestamp до __datestamp",
"__datestamp по __datestamp"
],
"identifier": "intervalBetweenDates"
},
{
"prototypeExpressions": [
"__timestamp до __timestamp",
"__timestamp по __timestamp"
],
"identifier": "intervalBetweenTimestamps"
},
{
"prototypeExpressions": [
"__timespan назад",
"__timespan тому назад"
],
"identifier": "calendarUnitExpressionAgo"
},
{
"prototypeExpressions": [
"__duration с __datestamp"
],
"identifier": "calendarUnitSinceDate"
},
{
"prototypeExpressions": [
"новая метка времени"
],
"identifier": "generateTimestamp"
},
{
"prototypeExpressions": [
"__timespan после __datestamp"
],
"identifier": "calendarUnitExpressionAfterDate"
},
{
"prototypeExpressions": [
"__timespan до __datestamp"
],
"identifier": "calendarUnitExpressionBeforeDate"
},
{
"prototypeExpressions": [
"__timezone время",
"время __timezone",
"время в __timezone"
],
"identifier": "timeInTimezone"
},
{
"prototypeExpressions": [
"разница во времени между __timezone и __timezone",
"разница __timezone и __timezone"
],
"identifier": "differenceBetweenTimezones"
}
],
"unitRelated": [
{
"prototypeExpressions": [
"__unit в __unit_expression"
],
"identifier": "unitInUnitExpression"
},
{
"prototypeExpressions": [
"__unit в __timespan"
],
"identifier": "calendarUnitInTimespan"
}
]
}

View file

@ -0,0 +1,65 @@
/*
Localizable.strings
SoulverCore
Created by Zac Cohan on 29/9/19.
Copyright © 2019 Zac Cohan. All rights reserved.
*/
/* Line References */
//i.e line1 will be a reference to line 1
"plain text line reference" = "строка";
/* Unit Categories */
"Time" = "Время";
"Acceleration" = "Ускорение";
"Length" = "Длина";
"Mass" = "Масса";
"Volume" = "Объём";
"Frequency" = "Частота";
"Angle" = "Геометрия";
"Temperature" = "Температура";
"Energy" = "Энергия";
"Power" = "Мощность";
"Pressure" = "Давление";
"Currency" = "Валюта";
"Area" = "Площадь";
"Speed" = "Скорость";
"Data Transfer" = "Скорость передачи информации";
"Data Storage" = "Объём информации";
"Other Unit Kind" = "Другие виды единиц";
/* Errors */
"Error: ∞" = "Ошибка: ∞";
"Error: incompatible units" = "Ошибка: единицы из разных категорий";
"Error: divide by zero" = "Ошибка: деление на ноль";
"Error: imaginary number" = "Ошибка: комплексное число";
"Error: unsupported multiplicative unit" = "Ошибка: нереальная единица измерения";
"Error: unsupported unit in rate" = "Ошибка: нереальная единица измерения";
/* Positions of a custom currency symbol */
"Before" = "До";
"Before (with space)" = "До (с пробелом)";
"After" = "После";
"After (with space)" = "После (с пробелом)";
/* Answer Contextual Metadata */
/* Used in the contextual menu for an answer */
/* For instance, km, a unit of distance */
"%@, a unit of %@" = "%@, из группы единиц '%@'";
/* a rate, like km per day */
"%@ per %@" = "%@ per %@";
"amount per %@" = "amount per %@";
/* days of the week, like February 12 was a Saturday, March 8 will be a Tuesday */
"%@ was a %@" = "%@ был %@.";
"%@ will be a %@" = "%@ будет %@.";
/* Quick Operators */
"plusQuickOperator" = "п";
"minusQuickOperator" = "м";
"timesQuickOperator" = "х";
"divideQuickOperator" = "р";

View file

@ -0,0 +1,168 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>day</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@day@</string>
<key>day</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>день</string>
<key>many</key>
<string>дней</string>
<key>other</key>
<string>дня</string>
</dict>
</dict>
<key>min</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@min@</string>
<key>min</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>мин</string>
<key>many</key>
<string>мин</string>
<key>other</key>
<string>мин</string>
</dict>
</dict>
<key>s</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@s@</string>
<key>s</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>сек</string>
<key>many</key>
<string>сек</string>
<key>other</key>
<string>сек</string>
</dict>
</dict>
<key>workday</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@workday@</string>
<key>workday</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>рабочий день</string>
<key>many</key>
<string>рабочих дней</string>
<key>other</key>
<string>рабочих дня</string>
</dict>
</dict>
<key>hr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@hour@</string>
<key>hour</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>час</string>
<key>many</key>
<string>часов</string>
<key>other</key>
<string>часа</string>
</dict>
</dict>
<key>week</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@week@</string>
<key>week</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>неделя</string>
<key>many</key>
<string>недель</string>
<key>other</key>
<string>недели</string>
</dict>
</dict>
<key>month</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@month@</string>
<key>month</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>месяц</string>
<key>many</key>
<string>месяцев</string>
<key>other</key>
<string>месяца</string>
</dict>
</dict>
<key>year</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@year@</string>
<key>year</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>год</string>
<key>many</key>
<string>лет</string>
<key>other</key>
<string>года</string>
</dict>
</dict>
<key>inch</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@inch@</string>
<key>inch</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>one</key>
<string>дюйм</string>
<key>many</key>
<string>дюймов</string>
<key>other</key>
<string>дюйма</string>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,103 @@
{
"fixtures": {
"nextDateQualifiers": [
"след",
"следующий",
"следующая",
"следующем",
"следующего"
],
"converterSymbols": [
"в",
"как"
],
"upToWords": [
"до"
],
"percentWords": [
"процент"
],
"hereAliases": [
"здесь"
],
"nowDateAliases": [
"сейчас"
],
"piAliases": [
"π",
"пи"
],
"divisionOperators": [
"÷",
"за"
],
"previousDateQualifiers": [
"прош",
"прошлый",
"прошлая",
"прошлого",
"прошлом",
"прошлой"
],
"timespanWords": [
"временной промежуток"
],
"pmAliases": [
"вечера",
"вечером"
],
"lessThanOrEqualToOperators": [
"<=",
"=<"
],
"subtractionOperators": [
"",
""
],
"conjunctionWordsOr": [
"или"
],
"todayDateAliases": [
"сегодня"
],
"amAliases": [
"утра",
"утром"
],
"additionOperators": [
"плюс"
],
"isNotEqualToOperators": [
"!=",
"=!"
],
"totalAliases": [
"сумма"
],
"medianAliases": [
"медиана"
],
"multiplicationOperators": [
"×"
],
"greaterThanOrEqualToOperators": [
">=",
"=>"
],
"averageAliases": [
"среднее"
],
"countAliases": [
"подсчёт"
],
"yesterdayDateAliases": [
"вчера"
],
"conjunctionWordsAnd": [
"и"
],
"tomorrowDateAliases": [
"завтра"
]
}
}

View file

@ -0,0 +1,181 @@
{
"rounding": [
{
"prototypeExpressions": [
"四舍五入"
],
"identifier": "rounded"
},
{
"prototypeExpressions": [
"向上取整"
],
"identifier": "roundedUp"
},
{
"prototypeExpressions": [
"向下取整"
],
"identifier": "roundedDown"
},
{
"prototypeExpressions": [
"保留 3位小数",
"保留 3位",
"保留 1位小数",
"保留 1位",
"保留 3位小数点",
"四舍五入到 3位小数",
"四舍五入 3位小数",
"为 3小数"
],
"identifier": "roundedToDp"
},
{
"prototypeExpressions": [
"16 向上四舍五入到最近的 10",
"16 向上取整到最近的 10",
"56 向上到最近的 10"
],
"identifier": "roundedUpToNearestX"
},
{
"prototypeExpressions": [
"向下四舍五入到最近的 10",
"向下取整到最近的 10",
"向下到最近的 10"
],
"identifier": "roundedDownToNearestX"
},
{
"prototypeExpressions": [
"四舍五入到最近的 10",
"四舍五入到最近的 10",
"到最近的 10"
],
"identifier": "roundedToNearestX"
}
],
"compoundUnits": [
{
"prototypeExpressions": [
"到年和月",
"作为年和月"
],
"identifier": "yearsAndMonths"
},
{
"prototypeExpressions": [
"到月和周",
"作为月和周"
],
"identifier": "monthsAndWeeks"
},
{
"prototypeExpressions": [
"到月和日",
"作为月和日"
],
"identifier": "monthsAndDays"
},
{
"prototypeExpressions": [
"到周和日",
"作为周和日"
],
"identifier": "weeksAndDays"
},
{
"prototypeExpressions": [
"到日和小时",
"作为日和小时"
],
"identifier": "daysAndHours"
},
{
"prototypeExpressions": [
"到小时和分钟",
"作为小时和分钟"
],
"identifier": "hoursAndMinutes"
},
{
"prototypeExpressions": [
"到分钟和秒",
"作为分钟和秒"
],
"identifier": "minutesAndSeconds"
}
],
"dateTime": [
{
"prototypeExpressions": [
"作为日期",
"到日期"
],
"identifier": "toDate"
},
{
"prototypeExpressions": [
"作为时间戳",
"时间戳",
"__converter_symbol 日期"
],
"identifier": "toTimestamp"
}
],
"numberForms": [
{
"prototypeExpressions": [
"__converter_symbol 数字",
"作为数字",
"到数字"
],
"identifier": "toDecimal"
},
{
"prototypeExpressions": [
"__converter_symbol 乘数"
],
"identifier": "toMultiplier"
},
{
"prototypeExpressions": [
"__converter_symbol 时间戳"
],
"identifier": "toTimestamp"
},
{
"prototypeExpressions": [
"__converter_symbol 周期"
],
"identifier": "toTimespan"
},
{
"prototypeExpressions": [
"__converter_symbol 圈速",
"__converter_symbol 每圈耗时"
],
"identifier": "toLaptime"
},
{
"prototypeExpressions": [
"__converter_symbol 分之",
"__converter_symbol 分数",
"作为分数",
"到分数"
],
"identifier": "toFraction"
}
],
"music": [
{
"prototypeExpressions": [
"作为音调",
"到音调"
],
"identifier": "toPitch"
}
]
}

View file

@ -0,0 +1,948 @@
{
"HRK": {
"aliases": [
"克罗地亚库纳"
],
"symbol": "HRK"
},
"HUF": {
"aliases": [
"匈牙利福林"
],
"symbol": "HUF"
},
"CDF": {
"aliases": [
"刚果法郎"
],
"symbol": "CDF"
},
"ILS": {
"aliases": [
"新以色列镑"
],
"symbol": "ILS"
},
"NGN": {
"aliases": [
"尼日利亚奈拉"
],
"symbol": "NGN"
},
"GYD": {
"aliases": [
"圭亚那元"
],
"symbol": "GYD"
},
"BHD": {
"aliases": [
"巴林第纳尔"
],
"symbol": "BHD"
},
"SZL": {
"aliases": [
"史瓦济兰里兰吉尼"
],
"symbol": "SZL"
},
"INR": {
"aliases": [
"印度卢比"
],
"symbol": "INR"
},
"SDG": {
"aliases": [
"苏丹镑"
],
"symbol": "SDG"
},
"PEN": {
"aliases": [
"秘鲁索尔"
],
"symbol": "PEN"
},
"EUR": {
"aliases": [
"欧元"
],
"symbol": "EUR"
},
"QAR": {
"aliases": [
"卡塔尔利尔"
],
"symbol": "QAR"
},
"PGK": {
"aliases": [
"巴布亚新几内亚基那"
],
"symbol": "PGK"
},
"LRD": {
"aliases": [
"利比里亚元"
],
"symbol": "LRD"
},
"ISK": {
"aliases": [
"冰岛克朗"
],
"symbol": "ISK"
},
"SYP": {
"aliases": [
"叙利亚镑"
],
"symbol": "SYP"
},
"TRY": {
"aliases": [
"土耳其新里拉"
],
"symbol": "TRY"
},
"UAH": {
"aliases": [
"乌克兰格里夫纳"
],
"symbol": "UAH"
},
"SGD": {
"aliases": [
"新加坡元"
],
"symbol": "SGD"
},
"MMK": {
"aliases": [
"缅甸元"
],
"symbol": "MMK"
},
"NIO": {
"aliases": [
"尼加拉瓜科多巴"
],
"symbol": "NIO"
},
"BIF": {
"aliases": [
"布隆迪法郎"
],
"symbol": "BIF"
},
"AFN": {
"aliases": [
"阿富汗尼"
],
"symbol": "AFN"
},
"LKR": {
"aliases": [
"斯里兰卡卢比"
],
"symbol": "LKR"
},
"GTQ": {
"aliases": [
"危地马拉格查尔"
],
"symbol": "GTQ"
},
"LTC": {
"aliases": [
"莱特币",
"litecoins",
"litecoin"
],
"symbol": "LTC"
},
"CHF": {
"aliases": [
"瑞士法郎"
],
"symbol": "CHF"
},
"THB": {
"aliases": [
"泰国铢"
],
"symbol": "THB"
},
"AMD": {
"aliases": [
"亚美尼亚德拉姆"
],
"symbol": "AMD"
},
"AOA": {
"aliases": [
"安哥拉宽扎"
],
"symbol": "AOA"
},
"SEK": {
"aliases": [
"瑞典克朗"
],
"symbol": "SEK"
},
"SAR": {
"aliases": [
"沙特阿拉伯里亚尔"
],
"symbol": "SAR"
},
"KWD": {
"aliases": [
"科威特第纳尔"
],
"symbol": "KWD"
},
"IRR": {
"aliases": [
"伊朗里亚尔"
],
"symbol": "IRR"
},
"WST": {
"aliases": [
"萨摩亚塔拉"
],
"symbol": "WST"
},
"BMD": {
"aliases": [
"百慕大元"
],
"symbol": "BMD"
},
"BGN": {
"aliases": [
"保加利亚列瓦"
],
"symbol": "BGN"
},
"PHP": {
"aliases": [
"菲律宾比索"
],
"symbol": "PHP"
},
"ZMW": {
"aliases": [
"尚比亚克瓦查"
],
"symbol": "ZMW"
},
"XAF": {
"aliases": [
"刚果中非共同体法郎"
],
"symbol": "XAF"
},
"BDT": {
"aliases": [
"孟加拉塔卡"
],
"symbol": "BDT"
},
"NOK": {
"aliases": [
"挪威克朗"
],
"symbol": "NOK"
},
"BOB": {
"aliases": [
"玻利维亚诺"
],
"symbol": "BOB"
},
"TZS": {
"aliases": [
"坦桑尼亚先令"
],
"symbol": "TZS"
},
"VES": {
"aliases": [
"委内瑞拉玻利瓦尔"
],
"symbol": "VES"
},
"VUV": {
"aliases": [
"万那杜瓦图"
],
"symbol": "VUV"
},
"ANG": {
"aliases": [
"列斯荷兰盾"
],
"symbol": "ANG"
},
"BND": {
"aliases": [
"文莱元"
],
"symbol": "BND"
},
"XCD": {
"aliases": [
"东加勒比元"
],
"symbol": "XCD"
},
"SCR": {
"aliases": [
"赛舌尔法郎"
],
"symbol": "SCR"
},
"KYD": {
"aliases": [
"开曼群岛元"
],
"symbol": "KYD"
},
"DJF": {
"aliases": [
"吉布提法郎"
],
"symbol": "DJF"
},
"LSL": {
"aliases": [
"莱索托洛提"
],
"symbol": "LSL"
},
"MOP": {
"aliases": [
"澳门币"
],
"symbol": "MOP"
},
"ALL": {
"aliases": [
"阿尔巴尼亚列克"
],
"symbol": "ALL"
},
"UZS": {
"aliases": [
"乌兹别克斯坦苏母"
],
"symbol": "UZS"
},
"UYU": {
"aliases": [
"乌拉圭比索"
],
"symbol": "UYU"
},
"PLN": {
"aliases": [
"波兰兹罗提"
],
"symbol": "PLN"
},
"LTL": {
"aliases": [
"立陶宛里塔斯"
],
"symbol": "LTL"
},
"LYD": {
"aliases": [
"利比亚第纳尔"
],
"symbol": "LYD"
},
"JPY": {
"aliases": [
"日元"
],
"symbol": "JPY"
},
"MNT": {
"aliases": [
"图格里克"
],
"symbol": "MNT"
},
"FJD": {
"aliases": [
"斐济元"
],
"symbol": "FJD"
},
"PKR": {
"aliases": [
"巴基斯坦卢比"
],
"symbol": "PKR"
},
"MRU": {
"aliases": [
"毛里塔尼亚乌吉亚"
],
"symbol": "MRU"
},
"OMR": {
"aliases": [
"阿曼里亚尔"
],
"symbol": "OMR"
},
"GBP": {
"aliases": [
"英镑"
],
"symbol": "GBP"
},
"LVL": {
"aliases": [
"拉脱维亚拉图"
],
"symbol": "LVL"
},
"SHP": {
"aliases": [
"圣赫勒拿群岛镑"
],
"symbol": "SHP"
},
"GEL": {
"aliases": [
"格鲁吉亚拉里"
],
"symbol": "GEL"
},
"TND": {
"aliases": [
"突尼斯第纳尔"
],
"symbol": "TND"
},
"DKK": {
"aliases": [
"丹麦克朗"
],
"symbol": "DKK"
},
"NPR": {
"aliases": [
"尼泊尔卢比"
],
"symbol": "NPR"
},
"KRW": {
"aliases": [
"韩元"
],
"symbol": "KRW"
},
"BSD": {
"aliases": [
"巴哈马元"
],
"symbol": "BSD"
},
"CRC": {
"aliases": [
"哥斯达黎加科郎"
],
"symbol": "CRC"
},
"EGP": {
"aliases": [
"埃及镑"
],
"symbol": "EGP"
},
"MAD": {
"aliases": [
"摩洛哥道拉姆"
],
"symbol": "MAD"
},
"AUD": {
"aliases": [
"澳大利亚元"
],
"symbol": "AUD"
},
"BTC": {
"aliases": [
"比特币"
],
"symbol": "BTC"
},
"SLL": {
"aliases": [
"塞拉利昂利昂"
],
"symbol": "SLL"
},
"MWK": {
"aliases": [
"马拉维克瓦查"
],
"symbol": "MWK"
},
"RSD": {
"aliases": [
"塞尔维亚第纳尔"
],
"symbol": "RSD"
},
"NZD": {
"aliases": [
"新西兰元"
],
"symbol": "NZD"
},
"SRD": {
"aliases": [
"苏利南元"
],
"symbol": "SRD"
},
"CLP": {
"aliases": [
"智利比索"
],
"symbol": "CLP"
},
"RUB": {
"aliases": [
"俄罗斯卢布"
],
"symbol": "RUB"
},
"NAD": {
"aliases": [
"纳米比亚元"
],
"symbol": "NAD"
},
"HKD": {
"aliases": [
"港币"
],
"symbol": "HKD"
},
"GMD": {
"aliases": [
"冈比亚达拉西"
],
"symbol": "GMD"
},
"VND": {
"aliases": [
"越南盾"
],
"symbol": "VND"
},
"LAK": {
"aliases": [
"老挝基普"
],
"symbol": "LAK"
},
"RON": {
"aliases": [
"罗马尼亚列伊"
],
"symbol": "RON"
},
"MUR": {
"aliases": [
"毛里求斯卢比"
],
"symbol": "MUR"
},
"MXN": {
"aliases": [
"墨西哥比索"
],
"symbol": "MXN"
},
"BRL": {
"aliases": [
"巴西利亚伊"
],
"symbol": "BRL"
},
"STD": {
"aliases": [
"圣多美和普林西比多布拉"
],
"symbol": "STD"
},
"AWG": {
"aliases": [
"阿鲁巴弗罗林"
],
"symbol": "AWG"
},
"MVR": {
"aliases": [
"马尔代夫卢非亚"
],
"symbol": "MVR"
},
"PAB": {
"aliases": [
"巴拿马巴尔博亚"
],
"symbol": "PAB"
},
"TJS": {
"aliases": [
"塔吉克索莫尼"
],
"symbol": "TJS"
},
"GNF": {
"aliases": [
"几内亚法郎"
],
"symbol": "GNF"
},
"ETB": {
"aliases": [
"埃塞俄比亚比尔"
],
"symbol": "ETB"
},
"ZAR": {
"aliases": [
"南非兰特"
],
"symbol": "ZAR"
},
"COP": {
"aliases": [
"哥伦比亚比索"
],
"symbol": "COP"
},
"IDR": {
"aliases": [
"印度尼西亚卢比(盾)"
],
"symbol": "IDR"
},
"SVC": {
"aliases": [
"萨尔瓦多科郎"
],
"symbol": "SVC"
},
"CVE": {
"aliases": [
"佛得角埃斯库多"
],
"symbol": "CVE"
},
"TTD": {
"aliases": [
"特立尼达和多巴哥元"
],
"symbol": "TTD"
},
"GIP": {
"aliases": [
"直布罗陀镑"
],
"symbol": "GIP"
},
"PYG": {
"aliases": [
"巴拉圭瓜拉尼"
],
"symbol": "PYG"
},
"DOGE": {
"aliases": [
"多吉币",
"dogecoins",
"dogecoin"
],
"symbol": "DOGE"
},
"MZN": {
"aliases": [
"莫三比克梅蒂卡尔"
],
"symbol": "MZN"
},
"FKP": {
"aliases": [
"福克兰群岛镑"
],
"symbol": "FKP"
},
"KZT": {
"aliases": [
"哈萨克斯坦腾格"
],
"symbol": "KZT"
},
"USD": {
"aliases": [
"美元"
],
"symbol": "USD"
},
"UGX": {
"aliases": [
"乌干达先令"
],
"symbol": "UGX"
},
"RWF": {
"aliases": [
"卢旺达法郎"
],
"symbol": "RWF"
},
"GHS": {
"aliases": [
"迦纳塞地"
],
"symbol": "GHS"
},
"ARS": {
"aliases": [
"阿根廷比索"
],
"symbol": "ARS"
},
"DOP": {
"aliases": [
"多米尼加比索"
],
"symbol": "DOP"
},
"LBP": {
"aliases": [
"黎巴嫩镑"
],
"symbol": "LBP"
},
"BZD": {
"aliases": [
"伯利兹元"
],
"symbol": "BZD"
},
"BTN": {
"aliases": [
"不丹卢比"
],
"symbol": "BTN"
},
"MYR": {
"aliases": [
"马来西亚林吉特"
],
"symbol": "MYR"
},
"YER": {
"aliases": [
"也门里亚尔"
],
"symbol": "YER"
},
"JMD": {
"aliases": [
"牙买加元"
],
"symbol": "JMD"
},
"TOP": {
"aliases": [
"汤加潘加"
],
"symbol": "TOP"
},
"SOS": {
"aliases": [
"索马里先令"
],
"symbol": "SOS"
},
"TMT": {
"aliases": [
"土庫曼马纳特"
],
"symbol": "TMT"
},
"MDL": {
"aliases": [
"摩尔多瓦列伊"
],
"symbol": "MDL"
},
"XOF": {
"aliases": [
"中非法郎"
],
"symbol": "XOF"
},
"ETH": {
"aliases": [
"ethereum"
],
"symbol": "ETH"
},
"TWD": {
"aliases": [
"新台币"
],
"symbol": "TWD"
},
"BBD": {
"aliases": [
"巴巴多斯元"
],
"symbol": "BBD"
},
"CAD": {
"aliases": [
"加拿大元"
],
"symbol": "CAD"
},
"CNY": {
"aliases": [
"人民币"
],
"symbol": "CNY"
},
"JOD": {
"aliases": [
"约旦第纳尔"
],
"symbol": "JOD"
},
"XPF": {
"aliases": [
"洋法郎"
],
"symbol": "XPF"
},
"IQD": {
"aliases": [
"伊拉克第纳尔"
],
"symbol": "IQD"
},
"HNL": {
"aliases": [
"洪都拉斯伦皮拉"
],
"symbol": "HNL"
},
"AED": {
"aliases": [
"阿联酋迪拉姆"
],
"symbol": "AED"
},
"KES": {
"aliases": [
"肯尼亚先令"
],
"symbol": "KES"
},
"KMF": {
"aliases": [
"科摩罗法郎"
],
"symbol": "KMF"
},
"MKD": {
"aliases": [
"马其顿第纳尔"
],
"symbol": "MKD"
},
"DZD": {
"aliases": [
"阿尔及利亚第纳尔"
],
"symbol": "DZD"
},
"CUP": {
"aliases": [
"古巴比索"
],
"symbol": "CUP"
},
"BWP": {
"aliases": [
"博茨瓦纳普拉"
],
"symbol": "BWP"
},
"SBD": {
"aliases": [
"所罗门群岛元"
],
"symbol": "SBD"
},
"AZN": {
"aliases": [
"阿塞拜疆马纳特"
],
"symbol": "AZN"
},
"KGS": {
"aliases": [
"吉尔吉斯斯坦索姆"
],
"symbol": "KGS"
},
"BYN": {
"aliases": [
"白俄罗斯卢布"
],
"symbol": "BYN"
},
"KHR": {
"aliases": [
"柬埔寨利尔斯"
],
"symbol": "KHR"
},
"HTG": {
"aliases": [
"海地古德"
],
"symbol": "HTG"
},
"CZK": {
"aliases": [
"捷克克朗"
],
"symbol": "CZK"
},
"BAM": {
"aliases": [
" 波斯尼亚和黑塞哥维那"
],
"symbol": "BAM"
}
}

View file

@ -0,0 +1,400 @@
{
"weatherRelated": [
{
"identifier": "lowTemperature",
"prototypeExpressions": [
"__timezone 最低温度",
"__timezone 低温",
"__timezone 最低温",
"__timezone 低"
]
},
{
"identifier": "highTemperature",
"prototypeExpressions": [
"__timezone 最高温度",
"__timezone 高温",
"__timezone 最高温",
"__timezone 高"
]
},
{
"identifier": "precipitationChance",
"prototypeExpressions": [
"__timezone 降雨概率",
"__timezone 降水概率"
]
},
{
"identifier": "rainfallAmount",
"prototypeExpressions": [
"__timezone 降雨量",
"__timezone 雨量",
"__timezone 降水量",
"__timezone 雨"
]
},
{
"identifier": "snowfallAmount",
"prototypeExpressions": [
"__timezone 降雪量",
"__timezone 雪量",
"__timezone 降雪",
"__timezone 雪"
]
},
{
"identifier": "apparentTemperature",
"prototypeExpressions": [
"__timezone 体感温度",
"__timezone 明显温度",
"__timezone 体感温"
]
},
{
"identifier": "currentTemperature",
"prototypeExpressions": [
"__timezone 温度",
"__timezone 当前温度"
]
},
{
"identifier": "weatherConditions",
"prototypeExpressions": [
"__timezone 天气",
"__timezone 天气情况",
"__timezone 天气状况"
]
},
{
"identifier": "humidity",
"prototypeExpressions": [
"__timezone 湿度",
"__timezone 空气湿度"
]
},
{
"identifier": "cloudCover",
"prototypeExpressions": [
"__timezone 云量",
"__timezone 云覆盖"
]
},
{
"identifier": "visibility",
"prototypeExpressions": [
"__timezone 能见度",
"__timezone 可见度"
]
},
{
"identifier": "windSpeed",
"prototypeExpressions": [
"__timezone 风速",
"__timezone 风力",
"__timezone 风速"
]
},
{
"identifier": "windDirection",
"prototypeExpressions": [
"__timezone 风向"
]
},
{
"identifier": "dewPoint",
"prototypeExpressions": [
"__timezone 露点",
"__timezone 露点温度"
]
},
{
"identifier": "uvIndex",
"prototypeExpressions": [
"__timezone 紫外线指数",
"__timezone 紫外线强度"
]
},
{
"identifier": "pressure",
"prototypeExpressions": [
"__timezone 气压",
"__timezone 大气压力"
]
},
{
"identifier": "pressureDirection",
"prototypeExpressions": [
"__timezone 气压趋势",
"__timezone 气压变化",
"__timezone 气压方向"
]
},
{
"identifier": "sunrise",
"prototypeExpressions": [
"__timezone 日出时间",
"__timezone 日出",
"__timezone 早晨太阳升起"
]
},
{
"identifier": "sunset",
"prototypeExpressions": [
"__timezone 日落时间",
"__timezone 日落",
"__timezone 傍晚太阳落下"
]
},
{
"identifier": "moonrise",
"prototypeExpressions": [
"__timezone 月升时间",
"__timezone 月亮升起",
"__timezone 升起",
"__timezone 月升"
]
},
{
"identifier": "moonset",
"prototypeExpressions": [
"__timezone 月落时间",
"__timezone 月亮落下",
"__timezone 落下",
"__timezone 月落"
]
},
{
"identifier": "moonPhase",
"prototypeExpressions": [
"__timezone 月相",
"__timezone 月亮",
"__timezone 月亮阶段"
]
}
],
"percentage": [
{
"prototypeExpressions": [
"100 的 __percentage",
"100 之 __percentage"
],
"identifier": "reversedPercentOf"
},
{
"prototypeExpressions": [
"100 减 __percentage",
"100 去 __percentage"
],
"identifier": "reversedPercentOff"
},
{
"prototypeExpressions": [
"100 加 __percentage",
"100 加上 __percentage"
],
"identifier": "reversedPercentOn"
},
{
"prototypeExpressions": [
"30 是多少的 __percentage",
"30 是什么的 __percentage"
],
"identifier": "isPercentOfWhat"
},
{
"prototypeExpressions": [
"多少的 __percentage 是 30",
"多少的 __percentage 为 30",
"什么的 __percentage 为 30",
"什么的 __percentage 是 30"
],
"identifier": "isPercentOfWhatClassic"
},
{
"prototypeExpressions": [
"多少减去 __percentage 是 30",
"多少减 __percentage 是 30",
"什么减去 __percentage 是 30",
"什么减 __percentage 是 30"
],
"identifier": "isPercentOffWhatClassic"
},
{
"prototypeExpressions": [
"30 是多少加 __percentage",
"30 是多少加上 __percentage",
"30 是什么加 __percentage",
"30 是什么加上 __percentage"
],
"identifier": "isPercentOnWhat"
},
{
"prototypeExpressions": [
"多少加 __percentage 是 30",
"多少加 __percentage 为 30",
"多少加上 __percentage 是 30",
"多少加上 __percentage 为 30",
"什么加 __percentage 是 30",
"什么加 __percentage 为 30",
"什么加上 __percentage 是 30",
"什么加上 __percentage 为 30"
],
"identifier": "isPercentOnWhatClassic"
},
{
"prototypeExpressions": [
"10 是 20 里的百分比为",
"10 在 20 里的百分比为",
"10 是 20 里的占比为",
"10 在 20 里的占比为"
],
"identifier": "isWhatPercentOf"
},
{
"prototypeExpressions": [
"10 是 20 去掉百分之多少",
"10 是 20 减去百分之多少",
"10 是 20 减百分之多少",
"10 是 20 去掉百分之几",
"10 是 20 减去百分之几",
"10 是 20 减百分之几"
],
"identifier": "isWhatPercentOff"
},
{
"prototypeExpressions": [
"20 是 10 加百分之多少",
"20 是 10 加上百分之几"
],
"identifier": "isWhatPercentOn"
}
],
"general": [
{
"prototypeExpressions": [
"20 除以 3 的余数",
"20 除 3 之余"
],
"identifier": "remainder"
},
{
"prototypeExpressions": [
"20 的一半是"
],
"identifier": "halfOf"
},
{
"prototypeExpressions": [
"2 和 30 之间小的一个数",
"2 和 30 之间较小的一个数",
"2 和 30 之间最小的一个数"
],
"identifier": "lesserOf"
},
{
"prototypeExpressions": [
"2 和 30 之间大的一个数",
"2 和 30 之间较大的一个数",
"2 和 30 之间最大的一个数"
],
"identifier": "greaterOf"
},
{
"prototypeExpressions": [
"2 与 32 的中间点",
"2 与 32 的中间数",
"2 和 32 的中间点",
"2 和 32 的中间数",
"2 和 32 的中间值",
"2 与 32 的中间值"
],
"identifier": "midpoint"
},
{
"prototypeExpressions": [
"多少除以 8 相当于 6除以 600",
"多少除以 8 等于 6除以 600",
"什么除以 8 相当于 6除以 600",
"什么除以 8 等于 6除以 600"
],
"identifier": "proportionsFindNumerator"
},
{
"prototypeExpressions": [
"8 除以多少相当于 6除以 600",
"8 除以多少等于 6除以 600",
"8 除以什么相当于 6除以 600",
"8 除以什么等于 6除以 600"
],
"identifier": "proportionsFindDenominator"
},
{
"prototypeExpressions": [
"1 到 5 之间的任意数",
"1 与 5 之间的任意数",
"1 和 5 之间的任意数"
],
"identifier": "makeRandomNumber"
},
],
"datetime": [
{
"prototypeExpressions": [
"在 __datestamp 和 __datestamp 之间的 __duration 数",
"__datestamp 和 __datestamp 之间的 __duration",
"从 __datestamp 到 __datestamp 之间的 __duration 数",
"从 __datestamp 到 __datestamp 之间的 __duration"
],
"identifier": "calendarUnitBetweenDates"
},
{
"prototypeExpressions": [
"__duration 才到 __datestamp",
"多少 __duration 直到 __datestamp"
],
"identifier": "calendarUnitToDate"
},
{
"prototypeExpressions": [
"从 __datestamp 到 __datestamp",
"从 __datestamp 至 __datestamp",
"__datestamp 到 __datestamp",
"__datestamp 至 __datestamp",
"__datestamp 日到 __datestamp"
],
"identifier": "intervalBetweenDates"
},
{
"prototypeExpressions": [
"从 __timestamp 到 __timestamp",
"从 __timestamp 至 __timestamp",
"__timestamp 到 __timestamp",
"__timestamp 至 __timestamp"
],
"identifier": "intervalBetweenTimestamps"
},
{
"prototypeExpressions": [
"新的时间戳"
],
"identifier": "generateTimestamp"
},
{
"prototypeExpressions": [
"__timezone 时间",
"__timezone 的时间"
],
"identifier": "timeInTimezone"
},
{
"prototypeExpressions": [
"__timezone 以及 __timezone 之间的时间差"
],
"identifier": "differenceBetweenTimezones"
}
],
"unitRelated": [
]
}

View file

@ -0,0 +1,66 @@
/*
Localizable.strings
SoulverCore
Created by Zac Cohan on 29/9/19.
Copyright © 2019 Zac Cohan. All rights reserved.
*/
/* Line References */
//i.e line1 will be a reference to line 1
"plain text line reference" = "行";
/* Unit Categories */
"Time" = "时间";
"Acceleration" = "加速度";
"Length" = "长度";
"Mass" = "规模";
"Volume" = "容量";
"Frequency" = "频率";
"Angle" = "角度";
"Temperature" = "温度";
"Energy" = "能量";
"Power" = "力度";
"Pressure" = "压力";
"Currency" = "货币";
"Area" = "区域";
"Speed" = "速度";
"Data Transfer" = "数据传输";
"Data Storage" = "数据存储";
"Other Unit Kind" = "其他单位类型";
/* Errors */
"Error: ∞" = "错误:∞";
"Error: incompatible units" = "错误:不兼容单位";
"Error: divide by zero" = "错误不能以0为除数分母";
"Error: imaginary number" = "错误:虚数";
"Error: unsupported multiplicative unit" = "错误:不支持的汇率单位";
"Error: unsupported unit in rate" = "错误:不支持的汇率单位";
"Error: division without divisor" = "错误:缺少除数(分母)";
/* Positions of a custom currency symbol */
"Before" = "放在前端";
"Before (with space)" = "放在前端(包含括号)";
"After" = "放在后端(包含括号)";
"After (with space)" = "放在前端(包含括号)";
/* Answer Contextual Metadata */
/* Used in the contextual menu for an answer */
/* For instance, km, a unit of distance */
"%@, a unit of %@" = "%@,是 %@ 的单位";
/* a rate, like km per day */
"%@ per %@" = "%@ 每 %@";
"amount per %@" = "每 %@";
/* days of the week, like February 12 was a Saturday, March 8 will be a Tuesday */
"%@ was a %@" = "%@ 为 %@。";
"%@ will be a %@" = "%@ 将是 %@。";
/* Quick Operators */
"plusQuickOperator" = "p";
"minusQuickOperator" = "m";
"timesQuickOperator" = "x";
"divideQuickOperator" = "d";

View file

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>day</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@day@</string>
<key>day</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>天</string>
</dict>
</dict>
<key>min</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@min@</string>
<key>min</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>分钟</string>
</dict>
</dict>
<key>s</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@s@</string>
<key>s</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>秒</string>
</dict>
</dict>
<key>workday</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@workday@</string>
<key>workday</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>工作日</string>
</dict>
</dict>
<key>hr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@hour@</string>
<key>hour</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>小时</string>
</dict>
</dict>
<key>week</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@week@</string>
<key>week</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>周</string>
</dict>
</dict>
<key>month</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@month@</string>
<key>month</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>月</string>
</dict>
</dict>
<key>year</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@year@</string>
<key>year</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>年</string>
</dict>
</dict>
<key>in</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@in@</string>
<key>in</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>f</string>
<key>other</key>
<string>英寸</string>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,65 @@
{
"fixtures": {
"commas": [
"",
","
],
"divisionOperators": [
"除以",
"每"
],
"reverseDivisionOperators": [
"除"
],
"ordinalSuffixes": [
"日"
],
"multiplicationOperators": [
"乘",
"乘以"
],
"tomorrowDateAliases": [
"明天",
"明日"
],
"subtractionOperators": [
"减",
"减去"
],
"todayDateAliases": [
"今天",
"今日"
],
"yesterdayDateAliases": [
"昨天",
"昨日"
],
"additionOperators": [
"加",
"加上"
],
"piAliases": [
"π"
],
"nowDateAliases": [
"现在"
],
"converterSymbols": [
"到",
"为",
"作为"
],
"timespanWords": [
"周期"
],
"isNotEqualToOperators": [
"!=",
"=!"
],
"percentWords": [
"百分之",
"百分比",
"占比"
]
}
}

View file

@ -1,3 +1,23 @@
use std::process::Command;
fn main() {
tauri_build::build()
// dont touch this file - it works and i have no idea why
let status = Command::new("swift")
.arg("build")
.arg("-c")
.arg("release")
.arg("--package-path")
.arg("SoulverWrapper")
.status()
.expect("Failed to execute swift build command");
if !status.success() {
panic!("Swift build failed");
}
println!("cargo:rustc-link-search=native=SoulverWrapper/.build/release");
println!("cargo:rustc-link-lib=SoulverWrapper");
tauri_build::build();
}

View file

@ -13,6 +13,7 @@ mod frecency;
mod oauth;
mod quicklinks;
mod snippets;
mod soulver;
mod system;
use crate::snippets::input_manager::{EvdevInputManager, InputManager};
@ -281,7 +282,8 @@ pub fn run() {
ai::get_ai_usage_history,
ai::get_ai_settings,
ai::set_ai_settings,
ai::ai_can_access
ai::ai_can_access,
soulver::calculate_soulver
])
.setup(|app| {
let app_handle = app.handle().clone();
@ -312,6 +314,14 @@ pub fn run() {
setup_global_shortcut(app)?;
setup_input_listener(app.handle());
let soulver_core_path = app
.path()
.resource_dir()
.unwrap()
.join("SoulverWrapper/Vendor/SoulverCore-linux");
soulver::initialize(soulver_core_path.to_str().unwrap());
Ok(())
})
.build(tauri::generate_context!())

47
src-tauri/src/soulver.rs Normal file
View file

@ -0,0 +1,47 @@
use std::ffi::{CStr, CString};
use std::os::raw::c_char;
use std::sync::Once;
static INIT: Once = Once::new();
pub fn initialize(soulver_core_path: &str) {
INIT.call_once(|| {
let resources_path_str = format!("{}/SoulverCore_SoulverCore.resources", soulver_core_path);
let resources_path_cstr = CString::new(resources_path_str).expect("CString::new failed");
unsafe {
initialize_soulver(resources_path_cstr.as_ptr());
}
});
}
#[link(name = "SoulverWrapper", kind = "dylib")]
extern "C" {
fn initialize_soulver(resourcesPath: *const c_char);
fn evaluate(expression: *const c_char) -> *mut c_char;
fn free_string(ptr: *mut c_char);
}
#[tauri::command]
pub fn calculate_soulver(expression: String) -> Result<String, String> {
let c_expression = CString::new(expression).map_err(|e| e.to_string())?;
// we need to use unsafe because we are calling a foreign function
let result_ptr = unsafe { evaluate(c_expression.as_ptr()) };
if result_ptr.is_null() {
return Err("Evaluation failed, received null pointer from Swift.".to_string());
}
let result_string = unsafe {
// convert C string back to Rust String
let c_result = CStr::from_ptr(result_ptr);
let str_slice = c_result.to_str().map_err(|e| e.to_string())?;
str_slice.to_owned()
};
// free memory that was allocated by Swift's strdup()
unsafe { free_string(result_ptr) };
Ok(result_string)
}

View file

@ -58,7 +58,12 @@
"icons/icon.icns",
"icons/icon.ico"
],
"externalBin": ["binaries/app"]
"externalBin": ["binaries/app"],
"resources": [
"SoulverWrapper/Vendor/SoulverCore-linux/libSoulverCoreDynamic.so",
"SoulverWrapper/Vendor/SoulverCore-linux/SoulverCore_SoulverCore.resources",
"SoulverWrapper/.build/release/libSoulverWrapper.so"
]
},
"plugins": {
"deep-link": {

View file

@ -19,6 +19,7 @@
import FileSearchView from '$lib/components/FileSearchView.svelte';
import { getCurrentWindow } from '@tauri-apps/api/window';
import CommandDeeplinkConfirm from '$lib/components/CommandDeeplinkConfirm.svelte';
import { invoke } from '@tauri-apps/api/core';
const storePlugin: PluginInfo = {
title: 'Store',
@ -200,6 +201,10 @@
function onExtensionInstalled() {
sidecarService.requestPluginList();
}
invoke('calculate_soulver', {
expression: '1+1'
}).then(console.log);
</script>
<svelte:window onkeydown={handleKeydown} />