Add per-language thinking verbs; close major i18n translation gap
- ThinkingVerbs now picks from a hand-written verb list per active display language (en/nb/sv/da/de/fr) instead of always English, fixed to be nonisolated at the type level (this project defaults to MainActor isolation, which was breaking the static verb arrays). - SyncStatusIndicator.tooltipText was typed String instead of LocalizedStringKey, silently bypassing localization for .help() — fixed. - Translated ~150 strings (750 individual translations) into nb/sv/da/de/fr that had never been localized: the entire slash- command dropdown, sync status labels, reasoning-effort descriptions, model sort options, and settings rows added across recent features (Git Sync conflict recovery, crash recovery, notes, backup, external MCP servers). Most were invisible to xcodebuild -exportLocalizations because they're LocalizedStringKey- typed properties/helpers rather than literal Text() calls, per the same gap documented from the original Phase 7 audit. - AI-translated per the README's existing disclosure; verified live in nb and fr builds, and diffed the catalog to confirm zero pre-existing translations were altered, only additions.
This commit is contained in:
+4742
-92
File diff suppressed because it is too large
Load Diff
@@ -23,14 +23,44 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
struct ThinkingVerbs {
|
||||
/// Get a random thinking verb with ellipsis
|
||||
/// Marked `nonisolated` at the type level (not per-member) since this project builds with
|
||||
/// `-default-isolation=MainActor` — without it, every member (including the static `let` verb
|
||||
/// arrays) defaults to MainActor-isolated, which then conflicts with `nonisolated` funcs trying
|
||||
/// to reference them. See CLAUDE.md's Swift 6 Compatibility section / MEMORY.md's Common Gotchas.
|
||||
nonisolated struct ThinkingVerbs {
|
||||
/// Get a random thinking verb with ellipsis, in the app's active display language.
|
||||
/// Each language has its own hand-written set (not a translation of the English one) —
|
||||
/// literal translations of English wordplay ("Waking up the hamsters") often land flat
|
||||
/// or sound plain odd in another language, so every list was written to be funny/natural
|
||||
/// on its own terms while covering the same rough categories (classic, technical, mystical,
|
||||
/// quirky, etc).
|
||||
static func random() -> String {
|
||||
verbs.randomElement()! + "..."
|
||||
verbs(for: currentLanguageCode).randomElement()! + "..."
|
||||
}
|
||||
|
||||
/// Collection of fun thinking verbs and phrases
|
||||
private static let verbs = [
|
||||
/// Mirrors how Text()/String(localized:) resolve the active language: the first of the
|
||||
/// user's preferred languages that this bundle actually ships a localization for (falls
|
||||
/// back to English otherwise). See CLAUDE.md's supported-language list (en, nb, sv, da, de, fr).
|
||||
private static var currentLanguageCode: String {
|
||||
Bundle.main.preferredLocalizations.first ?? "en"
|
||||
}
|
||||
|
||||
/// Internal (not private) so tests can verify the language→list mapping without depending
|
||||
/// on Bundle.main's runtime localization state.
|
||||
static func verbs(for languageCode: String) -> [String] {
|
||||
switch languageCode {
|
||||
case "nb": return nbVerbs
|
||||
case "sv": return svVerbs
|
||||
case "da": return daVerbs
|
||||
case "de": return deVerbs
|
||||
case "fr": return frVerbs
|
||||
default: return enVerbs
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - English
|
||||
|
||||
private static let enVerbs = [
|
||||
// Classic thinking
|
||||
"Thinking",
|
||||
"Pondering",
|
||||
@@ -144,4 +174,589 @@ struct ThinkingVerbs {
|
||||
"Loading brilliance",
|
||||
"Unfurling wisdom"
|
||||
]
|
||||
|
||||
// MARK: - Norwegian Bokmål
|
||||
|
||||
private static let nbVerbs = [
|
||||
// Classic thinking
|
||||
"Tenker",
|
||||
"Grunner",
|
||||
"Fundere",
|
||||
"Reflekterer",
|
||||
"Mediterer",
|
||||
"Spekulerer",
|
||||
"Overveier",
|
||||
|
||||
// Fancy/sophisticated
|
||||
"Kontemplerer",
|
||||
"Filosoferer",
|
||||
"Resonnerer",
|
||||
"Analyserer dypt",
|
||||
"Bryner hjernen",
|
||||
|
||||
// Technical/AI themed
|
||||
"Beregner",
|
||||
"Prosesserer",
|
||||
"Analyserer",
|
||||
"Syntetiserer",
|
||||
"Kalkulerer",
|
||||
"Utleder",
|
||||
"Kompilerer tanker",
|
||||
"Kjører algoritmer",
|
||||
"Knuser data",
|
||||
"Parser nevroner",
|
||||
|
||||
// Creative/playful
|
||||
"Dagdrømmer",
|
||||
"Idémyldrer",
|
||||
"Koker sammen tanker",
|
||||
"Rører i tankegryta",
|
||||
"Lar det godgjøre seg",
|
||||
"Spinner nevroner",
|
||||
"Varmer opp knollen",
|
||||
"Klekker ut idéer",
|
||||
|
||||
// Mystical/fun
|
||||
"Rådfører orakelet",
|
||||
"Leser kaffegrut",
|
||||
"Maner frem visdom",
|
||||
"Trollbinder et svar",
|
||||
"Kaster nevrale garn",
|
||||
"Spår svaret",
|
||||
|
||||
// Quirky/silly
|
||||
"Gjør greia",
|
||||
"Trylle frem et svar",
|
||||
"Aktiverer hjerneceller",
|
||||
"Bøyer nevronene",
|
||||
"Varmer opp transistorene",
|
||||
"Rever opp synapsene",
|
||||
"Kiler hjernebarken",
|
||||
"Vekker hamsterne",
|
||||
"Rådfører tomrommet",
|
||||
"Spør den magiske 8-ballen",
|
||||
|
||||
// Self-aware/meta
|
||||
"Later som om jeg tenker",
|
||||
"Ser opptatt ut",
|
||||
"Trekker ut tiden",
|
||||
"Teller sauer",
|
||||
"Tvinner tomlene",
|
||||
"Ordner tankene",
|
||||
"Leter etter riktige ord",
|
||||
|
||||
// Speed variations
|
||||
"Tenker fort",
|
||||
"Lynraskt tankearbeid",
|
||||
"Dyptenkende",
|
||||
"Hypertenker",
|
||||
|
||||
// Action-oriented
|
||||
"Snekrer sammen et svar",
|
||||
"Vever ord",
|
||||
"Setter sammen tanker",
|
||||
"Konstruerer svar",
|
||||
"Formulerer idéer",
|
||||
"Dirigerer nevroner",
|
||||
"Koreograferer bits",
|
||||
|
||||
// Whimsical
|
||||
"Får en åpenbaring",
|
||||
"Kobler prikkene",
|
||||
"Følger tråden",
|
||||
"Jager tanker",
|
||||
"Gjeter idéer",
|
||||
"Reder ut nevronfloken",
|
||||
|
||||
// Time-based
|
||||
"Tar en tenkepause",
|
||||
"Puster rolig",
|
||||
"Tar fem",
|
||||
"Samler tankene",
|
||||
"Henter pusten",
|
||||
|
||||
// Just plain weird
|
||||
"Piper og beregner",
|
||||
"Aktiverer hjernemodus",
|
||||
"Slår på smartheten",
|
||||
"Laster ned tanker",
|
||||
"Bufrer intelligens",
|
||||
"Laster inn genialitet",
|
||||
"Folder ut visdom",
|
||||
"Roter i idébanken",
|
||||
"Sorterer tankene",
|
||||
"Venter på et lyn av genialitet",
|
||||
"Plager hjernen med det",
|
||||
"Kokende av idéer",
|
||||
"Grubler høyt",
|
||||
"Filosoferer over saken"
|
||||
]
|
||||
|
||||
// MARK: - Swedish
|
||||
|
||||
private static let svVerbs = [
|
||||
// Classic thinking
|
||||
"Tänker",
|
||||
"Funderar",
|
||||
"Grubblar",
|
||||
"Reflekterar",
|
||||
"Mediterar",
|
||||
"Spekulerar",
|
||||
"Överväger",
|
||||
|
||||
// Fancy/sophisticated
|
||||
"Kontemplerar",
|
||||
"Filosoferar",
|
||||
"Resonerar",
|
||||
"Djupanalyserar",
|
||||
"Vässar hjärnan",
|
||||
|
||||
// Technical/AI themed
|
||||
"Beräknar",
|
||||
"Processar",
|
||||
"Analyserar",
|
||||
"Syntetiserar",
|
||||
"Kalkylerar",
|
||||
"Härleder",
|
||||
"Kompilerar tankar",
|
||||
"Kör algoritmer",
|
||||
"Mosar data",
|
||||
"Parsar nervceller",
|
||||
|
||||
// Creative/playful
|
||||
"Dagdrömmer",
|
||||
"Idékläcker",
|
||||
"Kokar ihop tankar",
|
||||
"Rör i tankegrytan",
|
||||
"Låter det mogna",
|
||||
"Snurrar nervceller",
|
||||
"Värmer upp knoppen",
|
||||
"Ruvar på idéer",
|
||||
|
||||
// Mystical/fun
|
||||
"Rådfrågar oraklet",
|
||||
"Läser i kaffesumpen",
|
||||
"Frammanar visdom",
|
||||
"Trollbinder ett svar",
|
||||
"Kastar neurala nät",
|
||||
"Spår svaret",
|
||||
|
||||
// Quirky/silly
|
||||
"Gör grejen",
|
||||
"Trollar fram ett svar",
|
||||
"Aktiverar hjärnceller",
|
||||
"Böjer nervcellerna",
|
||||
"Värmer upp transistorerna",
|
||||
"Varvar upp synapserna",
|
||||
"Kittlar hjärnbarken",
|
||||
"Väcker hamstrarna",
|
||||
"Rådfrågar tomrummet",
|
||||
"Frågar magiska åttan",
|
||||
|
||||
// Self-aware/meta
|
||||
"Låtsas tänka",
|
||||
"Ser upptagen ut",
|
||||
"Drar ut på tiden",
|
||||
"Räknar får",
|
||||
"Tvinnar tummarna",
|
||||
"Ordnar tankarna",
|
||||
"Letar rätt ord",
|
||||
|
||||
// Speed variations
|
||||
"Tänker snabbt",
|
||||
"Blixtsnabb tankeverksamhet",
|
||||
"Djuptänkande",
|
||||
"Hypertänker",
|
||||
|
||||
// Action-oriented
|
||||
"Snickrar ihop ett svar",
|
||||
"Väver ord",
|
||||
"Sätter ihop tankar",
|
||||
"Konstruerar svar",
|
||||
"Formulerar idéer",
|
||||
"Dirigerar nervceller",
|
||||
"Koreograferar bitar",
|
||||
|
||||
// Whimsical
|
||||
"Får en aha-upplevelse",
|
||||
"Kopplar ihop punkterna",
|
||||
"Följer tråden",
|
||||
"Jagar tankar",
|
||||
"Vallar idéer",
|
||||
"Reder ut nervtrasslet",
|
||||
|
||||
// Time-based
|
||||
"Tar en tankepaus",
|
||||
"Andas lugnt",
|
||||
"Tar fem",
|
||||
"Samlar tankarna",
|
||||
"Hämtar andan",
|
||||
|
||||
// Just plain weird
|
||||
"Piper och beräknar",
|
||||
"Aktiverar hjärnläge",
|
||||
"Slår på smartheten",
|
||||
"Laddar ner tankar",
|
||||
"Buffrar intelligens",
|
||||
"Laddar in briljans",
|
||||
"Vecklar ut visdom",
|
||||
"Rotar i idébanken",
|
||||
"Sorterar tankarna",
|
||||
"Väntar på ett geniblixt",
|
||||
"Bryr hjärnan med det",
|
||||
"Kokar av idéer",
|
||||
"Grubblar högt",
|
||||
"Filosoferar över saken"
|
||||
]
|
||||
|
||||
// MARK: - Danish
|
||||
|
||||
private static let daVerbs = [
|
||||
// Classic thinking
|
||||
"Tænker",
|
||||
"Grunder",
|
||||
"Grubler",
|
||||
"Reflekterer",
|
||||
"Mediterer",
|
||||
"Spekulerer",
|
||||
"Overvejer",
|
||||
|
||||
// Fancy/sophisticated
|
||||
"Kontemplerer",
|
||||
"Filosoferer",
|
||||
"Ræsonnerer",
|
||||
"Dybdeanalyserer",
|
||||
"Skærper hjernen",
|
||||
|
||||
// Technical/AI themed
|
||||
"Beregner",
|
||||
"Processerer",
|
||||
"Analyserer",
|
||||
"Syntetiserer",
|
||||
"Kalkulerer",
|
||||
"Udleder",
|
||||
"Kompilerer tanker",
|
||||
"Kører algoritmer",
|
||||
"Knuser data",
|
||||
"Parser neuroner",
|
||||
|
||||
// Creative/playful
|
||||
"Dagdrømmer",
|
||||
"Idémylrer",
|
||||
"Koger tanker sammen",
|
||||
"Rører i tankegryden",
|
||||
"Lader det simre",
|
||||
"Snurrer neuroner",
|
||||
"Varmer knolden op",
|
||||
"Udruger idéer",
|
||||
|
||||
// Mystical/fun
|
||||
"Rådspørger orakelet",
|
||||
"Læser kaffegrums",
|
||||
"Fremmaner visdom",
|
||||
"Tryller et svar frem",
|
||||
"Kaster neurale net",
|
||||
"Spår svaret",
|
||||
|
||||
// Quirky/silly
|
||||
"Gør tingen",
|
||||
"Trylle-fremkalder et svar",
|
||||
"Aktiverer hjerneceller",
|
||||
"Bøjer neuronerne",
|
||||
"Varmer transistorerne op",
|
||||
"Ruller synapserne op",
|
||||
"Kilder hjernebarken",
|
||||
"Vækker hamsterne",
|
||||
"Rådspørger tomrummet",
|
||||
"Spørger den magiske 8-tal",
|
||||
|
||||
// Self-aware/meta
|
||||
"Lader som om jeg tænker",
|
||||
"Ser optaget ud",
|
||||
"Trækker tiden ud",
|
||||
"Tæller får",
|
||||
"Snor tommelfingrene",
|
||||
"Ordner tankerne",
|
||||
"Leder efter de rette ord",
|
||||
|
||||
// Speed variations
|
||||
"Tænker hurtigt",
|
||||
"Lynhurtig tænkning",
|
||||
"Dybttænkende",
|
||||
"Hypertænker",
|
||||
|
||||
// Action-oriented
|
||||
"Snedkererer et svar",
|
||||
"Væver ord",
|
||||
"Samler tanker",
|
||||
"Konstruerer svar",
|
||||
"Formulerer idéer",
|
||||
"Dirigerer neuroner",
|
||||
"Koreograferer bits",
|
||||
|
||||
// Whimsical
|
||||
"Får en åbenbaring",
|
||||
"Forbinder prikkerne",
|
||||
"Følger tråden",
|
||||
"Jagter tanker",
|
||||
"Vogter idéer",
|
||||
"Reder neurontrådene ud",
|
||||
|
||||
// Time-based
|
||||
"Tager en tænkepause",
|
||||
"Trækker vejret roligt",
|
||||
"Tager fem",
|
||||
"Samler tankerne",
|
||||
"Henter vejret",
|
||||
|
||||
// Just plain weird
|
||||
"Bipper og beregner",
|
||||
"Aktiverer hjernemodus",
|
||||
"Tænder for kløgt",
|
||||
"Downloader tanker",
|
||||
"Bufrer intelligens",
|
||||
"Indlæser genialitet",
|
||||
"Folder visdom ud",
|
||||
"Roder i idébanken",
|
||||
"Sorterer tankerne",
|
||||
"Venter på et lyn af genialitet",
|
||||
"Plager hjernen med det",
|
||||
"Kogende af idéer",
|
||||
"Grunder højt",
|
||||
"Filosoferer over sagen"
|
||||
]
|
||||
|
||||
// MARK: - German
|
||||
|
||||
private static let deVerbs = [
|
||||
// Classic thinking
|
||||
"Denkt nach",
|
||||
"Grübelt",
|
||||
"Sinniert",
|
||||
"Reflektiert",
|
||||
"Meditiert",
|
||||
"Spekuliert",
|
||||
"Überlegt",
|
||||
|
||||
// Fancy/sophisticated
|
||||
"Kontempliert",
|
||||
"Philosophiert",
|
||||
"Räsoniert",
|
||||
"Analysiert tiefgründig",
|
||||
"Schärft das Denkvermögen",
|
||||
|
||||
// Technical/AI themed
|
||||
"Berechnet",
|
||||
"Verarbeitet",
|
||||
"Analysiert",
|
||||
"Synthetisiert",
|
||||
"Kalkuliert",
|
||||
"Leitet ab",
|
||||
"Kompiliert Gedanken",
|
||||
"Lässt Algorithmen laufen",
|
||||
"Zermalmt Daten",
|
||||
"Parst Neuronen",
|
||||
|
||||
// Creative/playful
|
||||
"Tagträumt",
|
||||
"Brainstormt",
|
||||
"Braut Gedanken zusammen",
|
||||
"Rührt im Gedankentopf",
|
||||
"Lässt es köcheln",
|
||||
"Dreht Neuronen",
|
||||
"Wärmt die Denkerstube auf",
|
||||
"Brütet Ideen aus",
|
||||
|
||||
// Mystical/fun
|
||||
"Befragt das Orakel",
|
||||
"Liest im Kaffeesatz",
|
||||
"Beschwört Weisheit",
|
||||
"Zaubert eine Antwort",
|
||||
"Wirft neuronale Netze aus",
|
||||
"Weissagt die Antwort",
|
||||
|
||||
// Quirky/silly
|
||||
"Macht sein Ding",
|
||||
"Zaubert eine Antwort herbei",
|
||||
"Aktiviert Gehirnzellen",
|
||||
"Biegt Neuronen",
|
||||
"Wärmt die Transistoren auf",
|
||||
"Dreht die Synapsen hoch",
|
||||
"Kitzelt die Großhirnrinde",
|
||||
"Weckt die Hamster",
|
||||
"Befragt die Leere",
|
||||
"Fragt die magische Kugel",
|
||||
|
||||
// Self-aware/meta
|
||||
"Tut nur so, als würde es denken",
|
||||
"Sieht beschäftigt aus",
|
||||
"Zieht Zeit",
|
||||
"Zählt Schafe",
|
||||
"Dreht Däumchen",
|
||||
"Ordnet die Gedanken",
|
||||
"Sucht die richtigen Worte",
|
||||
|
||||
// Speed variations
|
||||
"Denkt schnell",
|
||||
"Blitzschnelles Denken",
|
||||
"Tiefes Nachdenken",
|
||||
"Hyperdenken",
|
||||
|
||||
// Action-oriented
|
||||
"Zimmert eine Antwort",
|
||||
"Webt Worte",
|
||||
"Fügt Gedanken zusammen",
|
||||
"Konstruiert Antworten",
|
||||
"Formuliert Ideen",
|
||||
"Dirigiert Neuronen",
|
||||
"Choreografiert Bits",
|
||||
|
||||
// Whimsical
|
||||
"Hat eine Eingebung",
|
||||
"Verbindet die Punkte",
|
||||
"Folgt dem roten Faden",
|
||||
"Jagt Gedanken",
|
||||
"Hütet Ideen",
|
||||
"Entwirrt die Neuronen",
|
||||
|
||||
// Time-based
|
||||
"Nimmt sich einen Moment",
|
||||
"Atmet tief durch",
|
||||
"Macht kurz Pause",
|
||||
"Sammelt die Gedanken",
|
||||
"Holt Luft",
|
||||
|
||||
// Just plain weird
|
||||
"Piept und rechnet",
|
||||
"Aktiviert den Gehirnmodus",
|
||||
"Schaltet auf Schlaumodus",
|
||||
"Lädt Gedanken herunter",
|
||||
"Puffert Intelligenz",
|
||||
"Lädt Genialität",
|
||||
"Entfaltet Weisheit",
|
||||
"Wühlt in der Ideenkiste",
|
||||
"Sortiert die Gedanken",
|
||||
"Wartet auf einen Geistesblitz",
|
||||
"Quält das Gehirn damit",
|
||||
"Kocht vor Ideen",
|
||||
"Grübelt laut",
|
||||
"Philosophiert über die Sache"
|
||||
]
|
||||
|
||||
// MARK: - French
|
||||
|
||||
private static let frVerbs = [
|
||||
// Classic thinking
|
||||
"Réfléchit",
|
||||
"Songe",
|
||||
"Médite",
|
||||
"Contemple",
|
||||
"Spécule",
|
||||
"Délibère",
|
||||
"Rumine",
|
||||
|
||||
// Fancy/sophisticated
|
||||
"Philosophise",
|
||||
"Raisonne",
|
||||
"Cogite",
|
||||
"Analyse en profondeur",
|
||||
"Aiguise ses neurones",
|
||||
|
||||
// Technical/AI themed
|
||||
"Calcule",
|
||||
"Traite",
|
||||
"Analyse",
|
||||
"Synthétise",
|
||||
"Déduit",
|
||||
"Compile des pensées",
|
||||
"Fait tourner des algorithmes",
|
||||
"Broie des données",
|
||||
"Parse des neurones",
|
||||
"Chiffre les possibilités",
|
||||
|
||||
// Creative/playful
|
||||
"Rêvasse",
|
||||
"Brainstorme",
|
||||
"Mijote des idées",
|
||||
"Remue la marmite à idées",
|
||||
"Laisse mijoter",
|
||||
"Fait tourner ses neurones",
|
||||
"Chauffe la matière grise",
|
||||
"Couve une idée",
|
||||
|
||||
// Mystical/fun
|
||||
"Consulte l'oracle",
|
||||
"Lit dans le marc de café",
|
||||
"Invoque la sagesse",
|
||||
"Conjure une réponse",
|
||||
"Lance des filets neuronaux",
|
||||
"Prédit la réponse",
|
||||
|
||||
// Quirky/silly
|
||||
"Fait son truc",
|
||||
"Fait apparaître une réponse par magie",
|
||||
"Active ses neurones",
|
||||
"Étire ses neurones",
|
||||
"Chauffe les transistors",
|
||||
"Emballe les synapses",
|
||||
"Chatouille le cortex",
|
||||
"Réveille les hamsters",
|
||||
"Consulte le vide",
|
||||
"Interroge la boule magique",
|
||||
|
||||
// Self-aware/meta
|
||||
"Fait semblant de réfléchir",
|
||||
"A l'air occupé",
|
||||
"Fait durer le suspense",
|
||||
"Compte les moutons",
|
||||
"Se tourne les pouces",
|
||||
"Met de l'ordre dans ses pensées",
|
||||
"Cherche les mots justes",
|
||||
|
||||
// Speed variations
|
||||
"Réfléchit vite",
|
||||
"Pensée éclair",
|
||||
"Réflexion profonde",
|
||||
"Hyper-réflexion",
|
||||
|
||||
// Action-oriented
|
||||
"Bricole une réponse",
|
||||
"Tisse des mots",
|
||||
"Assemble des idées",
|
||||
"Construit une réponse",
|
||||
"Formule des idées",
|
||||
"Dirige ses neurones",
|
||||
"Chorégraphie des bits",
|
||||
|
||||
// Whimsical
|
||||
"A une révélation",
|
||||
"Relie les points",
|
||||
"Suit le fil",
|
||||
"Traque une pensée",
|
||||
"Rassemble ses idées",
|
||||
"Démêle ses neurones",
|
||||
|
||||
// Time-based
|
||||
"Prend un instant",
|
||||
"Respire un grand coup",
|
||||
"Fait une pause",
|
||||
"Rassemble ses pensées",
|
||||
"Reprend son souffle",
|
||||
|
||||
// Just plain weird
|
||||
"Bip bip, ça calcule",
|
||||
"Active le mode cerveau",
|
||||
"Passe en mode intelligent",
|
||||
"Télécharge des pensées",
|
||||
"Met l'intelligence en cache",
|
||||
"Charge du génie",
|
||||
"Déploie sa sagesse",
|
||||
"Fouille sa boîte à idées",
|
||||
"Trie ses pensées",
|
||||
"Attend un éclair de génie",
|
||||
"Torture son cerveau",
|
||||
"Bouillonne d'idées",
|
||||
"Rumine à voix haute",
|
||||
"Philosophise sur la question"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ enum SyncState {
|
||||
}
|
||||
}
|
||||
|
||||
var tooltipText: String {
|
||||
var tooltipText: LocalizedStringKey {
|
||||
switch self {
|
||||
case .disabled:
|
||||
return "Auto-sync disabled"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"strings" : {
|
||||
"CFBundleName" : {
|
||||
"comment" : "Bundle name",
|
||||
"extractionState" : "extracted_with_value",
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
"da" : {
|
||||
"stringUnit" : {
|
||||
@@ -36,54 +36,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"NSCalendarsFullAccessUsageDescription" : {
|
||||
"comment" : "Privacy - Calendars Full Access Usage Description",
|
||||
"extractionState" : "extracted_with_value",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "new",
|
||||
"value" : "Confab can read and create calendar events when you ask it to, if you enable Calendar access in Settings."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"NSContactsUsageDescription" : {
|
||||
"comment" : "Privacy - Contacts Usage Description",
|
||||
"extractionState" : "extracted_with_value",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "new",
|
||||
"value" : "Confab can search your contacts when you ask it to, if you enable Contacts access in Settings."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"NSLocationWhenInUseUsageDescription" : {
|
||||
"comment" : "Privacy - Location When In Use Usage Description",
|
||||
"extractionState" : "extracted_with_value",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "new",
|
||||
"value" : "Confab can use your current location to answer questions, if you enable Location & Maps access in Settings."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"NSRemindersFullAccessUsageDescription" : {
|
||||
"comment" : "Privacy - Reminders Full Access Usage Description",
|
||||
"extractionState" : "extracted_with_value",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "new",
|
||||
"value" : "Confab can read and create reminders when you ask it to, if you enable Reminders access in Settings."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"version" : "1.1"
|
||||
|
||||
Reference in New Issue
Block a user