From 5f7ad88e0d1f9cd2bffd28d86ee2ecef1e88e7f8 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Fri, 19 Jun 2026 21:49:07 +0800
Subject: [PATCH] Fix Apple default note localization migration
---
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ar-Najdi.json | 5
src/Apptag/Localization/ar.json | 16
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nl.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.th.json | 5
src/Apptag/Localization/sv.json | 16
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.cs.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.it.json | 5
src/Apptag/AppleDefaultAppCatalog.swift | 126 +++++
src/Research/AppleDefaultApps/AppleDefaultApps.translations.json | 174 +++++--
src/Apptag/Localization/th.json | 16
src/Docs/Requirements/2026-06-19-apple-default-note-localization-worklog.md | 67 +++
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ms.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.de.json | 5
src/Apptag/Localization/nn.json | 16
src/CHANGELOG.md | 9
src/Apptag/Info.plist | 4
src/Scripts/apple_default_note_migration_qa.sh | 169 +++++++
src/Apptag/Localization/cs.json | 16
src/Apptag/Localization/da.json | 16
src/Apptag/Localization/id.json | 16
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.tr.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.vi.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.da.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.fr.json | 5
src/Apptag/Localization/pt-BR.json | 16
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nb.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.uk.json | 5
src/Apptag/Localization/ko.json | 16
src/Apptag/Localization/no.json | 16
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.pl.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.en.json | 5
src/Scripts/apple_default_note_policy_qa.sh | 10
src/Apptag/Localization/nl.json | 16
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ja.json | 5
src/Apptag/Localization/fr.json | 16
src/Apptag/Localization/ru.json | 16
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.no.json | 5
src/Apptag/AppGridCollectionView.swift | 4
src/Scripts/usage_tips_qa.sh | 16
src/Apptag/Localization/ro.json | 16
src/Apptag/Localization/en.json | 16
src/Research/AppleDefaultApps/AppleDefaultApps.source.csv | 1
src/Apptag/Localization/zh-Hant.json | 16
src/Research/AppleDefaultApps/AppleDefaultApps.base.json | 15
src/Apptag/Localization/pl.json | 16
src/Apptag/Localization/es.json | 16
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.es.json | 5
src/Apptag/Localization/ms.json | 16
src/Apptag/Localization/it.json | 16
src/Apptag/Localization/tr.json | 16
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.sr-Cyrl.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.zh-Hans.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nn.json | 5
src/Apptag/Localization/ja.json | 16
src/Apptag/Localization/de.json | 16
src/Docs/Requirements/2026-06-19-apple-default-note-localization-qa.md | 34 +
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.id.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ro.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ar.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ko.json | 5
src/Apptag/Localization/ar-Najdi.json | 16
src/Apptag/Localization/nb.json | 16
src/Docs/Requirements/2026-06-19-apple-default-note-localization-todo.md | 34 +
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.zh-Hant.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ru.json | 5
src/Apptag/Localization/sr-Cyrl.json | 16
src/Apptag/Localization/zh-Hans.json | 16
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.pt-BR.json | 5
src/Research/AppleDefaultApps/AppleDefaultApps.localizations.sv.json | 5
src/Apptag/Localization/uk.json | 16
src/Apptag/Localization/vi.json | 16
71 files changed, 964 insertions(+), 308 deletions(-)
diff --git a/src/Apptag/AppGridCollectionView.swift b/src/Apptag/AppGridCollectionView.swift
index 2d41fc4..eda51f0 100644
--- a/src/Apptag/AppGridCollectionView.swift
+++ b/src/Apptag/AppGridCollectionView.swift
@@ -949,14 +949,13 @@
let buttonDotsGap: CGFloat = 6
let dotsHeight: CGFloat = 10
let dotsWidth = dotsView.preferredWidth
- let fullTitleWidth = ceil(titleLabel.attributedStringValue.size().width)
let titleX = visualFrame.minX + paddingLeft + iconSize + iconTextGap
let buttonsWidth = buttonSize * 2 + buttonGap
let buttonsGroupMinX = visualFrame.maxX - paddingRight - buttonsWidth
let textRight = visualFrame.maxX - controlZoneWidth
let availableTextWidth = max(1, textRight - titleX)
- let titleWidth = min(fullTitleWidth, availableTextWidth)
+ let titleWidth = availableTextWidth
let titleHeight: CGFloat = 32
let detailHeight: CGFloat = 68
let lineGap: CGFloat = 8
@@ -1109,6 +1108,7 @@
label.isBordered = false
label.lineBreakMode = lineBreakMode
label.maximumNumberOfLines = 1
+ label.alignment = .center
label.font = font
}
diff --git a/src/Apptag/AppleDefaultAppCatalog.swift b/src/Apptag/AppleDefaultAppCatalog.swift
index 120c2a4..9ef452c 100644
--- a/src/Apptag/AppleDefaultAppCatalog.swift
+++ b/src/Apptag/AppleDefaultAppCatalog.swift
@@ -108,33 +108,78 @@
@discardableResult
static func relocalizeDefaultNotesForCurrentLanguage(apps: [AppInfo]) -> Bool {
+ guard let base = loadBaseSnapshot() else { return false }
+
var store = TagDatabase.load()
+ let originalStore = store
var changed = false
+ var adoptedLegacyDefaultNote = false
for app in apps where app.isAppleApp {
let path = app.path.path
- guard let currentNote = normalizedNote(store.appNotes[path]) else { continue }
- guard let metadata = store.appNoteMetadata[path],
- metadata.origin == .appleDefault
+ guard let bundleIdentifier = normalizedBundleIdentifier(app.bundleIdentifier),
+ base.byBundleIdentifier[bundleIdentifier] != nil,
+ let currentNote = normalizedNote(store.appNotes[path], limit: base.noteLimit),
+ let localizedNote = localizedNote(forBundleIdentifier: bundleIdentifier)
else { continue }
+
+ let metadata = store.appNoteMetadata[path]
+ if metadata?.origin == .manual {
+ continue
+ }
let currentFingerprint = TagDatabase.noteFingerprint(currentNote)
- let expectedFingerprint = metadata.apple?.noteFingerprint ?? metadata.noteFingerprint
- guard expectedFingerprint == currentFingerprint else { continue }
- guard let defaultNote = Self.defaultNote(for: app),
- defaultNote.note != currentNote
- else { continue }
+ let matchesKnownAppleDefault = noteMatchesKnownDefault(
+ currentNote,
+ forBundleIdentifier: bundleIdentifier,
+ base: base
+ )
- store.appNotes[path] = defaultNote.note
+ let canRelocalize: Bool
+ switch metadata?.origin {
+ case .some(.manual):
+ canRelocalize = false
+ case .some(.appleDefault):
+ let expectedFingerprint = metadata?.apple?.noteFingerprint ?? metadata?.noteFingerprint
+ canRelocalize = expectedFingerprint == currentFingerprint || matchesKnownAppleDefault
+ if expectedFingerprint != currentFingerprint && matchesKnownAppleDefault {
+ adoptedLegacyDefaultNote = true
+ }
+ case .some(.catalogDefault):
+ canRelocalize = matchesKnownAppleDefault
+ if canRelocalize {
+ adoptedLegacyDefaultNote = true
+ }
+ case .none:
+ canRelocalize = matchesKnownAppleDefault
+ if canRelocalize {
+ adoptedLegacyDefaultNote = true
+ }
+ }
+
+ guard canRelocalize else { continue }
+
+ let metadataMatchesLocalizedNote = metadata?.origin == .appleDefault
+ && metadata?.apple?.entryID == localizedNote.provenance.entryID
+ && metadata?.apple?.languageCode == localizedNote.provenance.languageCode
+ && metadata?.apple?.notesVersion == localizedNote.provenance.notesVersion
+ && metadata?.apple?.noteFingerprint == localizedNote.provenance.noteFingerprint
+ && metadata?.noteFingerprint == localizedNote.provenance.noteFingerprint
+ guard localizedNote.note != currentNote || !metadataMatchesLocalizedNote else { continue }
+
+ store.appNotes[path] = localizedNote.note
store.appNoteMetadata[path] = TagDatabase.AppNoteMetadata(
origin: .appleDefault,
- apple: defaultNote.provenance,
- noteFingerprint: defaultNote.provenance.noteFingerprint
+ apple: localizedNote.provenance,
+ noteFingerprint: localizedNote.provenance.noteFingerprint
)
changed = true
}
if changed {
+ if adoptedLegacyDefaultNote {
+ _ = TagDatabase.backup(originalStore, reason: "apple-default-note-migration")
+ }
TagDatabase.save(store)
}
return changed
@@ -168,6 +213,65 @@
return nil
}
+ private static func noteMatchesKnownDefault(
+ _ note: String,
+ forBundleIdentifier bundleIdentifier: String,
+ base: BaseSnapshot
+ ) -> Bool {
+ let fingerprint = TagDatabase.noteFingerprint(note)
+ return knownDefaultNoteFingerprints(
+ forBundleIdentifier: bundleIdentifier,
+ base: base
+ ).contains(fingerprint)
+ }
+
+ private static func knownDefaultNoteFingerprints(
+ forBundleIdentifier bundleIdentifier: String,
+ base: BaseSnapshot
+ ) -> Set<String> {
+ var result = Set<String>()
+ for languageCode in base.supportedLanguages {
+ guard let snapshot = loadLocalizationSnapshot(languageCode: languageCode),
+ let note = normalizedNote(snapshot.notes[bundleIdentifier], limit: base.noteLimit)
+ else { continue }
+ for variant in legacyDefaultNoteVariants(note, limit: base.noteLimit) {
+ result.insert(TagDatabase.noteFingerprint(variant))
+ }
+ }
+ return result
+ }
+
+ private static func legacyDefaultNoteVariants(_ note: String, limit: Int) -> [String] {
+ let trimmed = String(note.trimmingCharacters(in: .whitespacesAndNewlines).prefix(limit))
+ guard !trimmed.isEmpty else { return [] }
+
+ var variants = [trimmed]
+ let stripped = noteByRemovingTrailingSentencePunctuation(trimmed)
+ if stripped != trimmed {
+ variants.append(stripped)
+ }
+
+ for suffix in [".", "。"] {
+ let punctuated = String((stripped + suffix).prefix(limit))
+ if !punctuated.isEmpty {
+ variants.append(punctuated)
+ }
+ }
+
+ var seen = Set<String>()
+ return variants.filter { seen.insert($0).inserted }
+ }
+
+ private static func noteByRemovingTrailingSentencePunctuation(_ value: String) -> String {
+ var result = value.trimmingCharacters(in: .whitespacesAndNewlines)
+ let punctuation = CharacterSet(charactersIn: ".。.!!??")
+ while let scalar = result.unicodeScalars.last,
+ punctuation.contains(scalar) {
+ result.removeLast()
+ }
+ return result
+ }
+
private static func loadBaseSnapshot() -> BaseSnapshot? {
cacheLock.lock()
if let snapshot = cachedBaseSnapshot {
diff --git a/src/Apptag/Info.plist b/src/Apptag/Info.plist
index 8faf870..d11db52 100644
--- a/src/Apptag/Info.plist
+++ b/src/Apptag/Info.plist
@@ -19,9 +19,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>7.9.2</string>
+ <string>7.9.3</string>
<key>CFBundleVersion</key>
- <string>20260617.2028</string>
+ <string>20260619.2142</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key>
diff --git a/src/Apptag/Localization/ar-Najdi.json b/src/Apptag/Localization/ar-Najdi.json
index 8034baa..2ed1344 100644
--- a/src/Apptag/Localization/ar-Najdi.json
+++ b/src/Apptag/Localization/ar-Najdi.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "إذا شغّلته، تختفي التلميحات العايمة أسفل شبكة التطبيقات.",
"usageTips.previous": "التلميحة السابقة",
"usageTips.next": "التلميحة التالية",
- "usageTips.tip1.title": "تلميحة 1 - إضافة وسوم:",
+ "usageTips.tip1.title": "تلميحة 1 - إضافة وسوم",
"usageTips.tip1.detail": "افتح الإعدادات, عدّل الوسوم.",
- "usageTips.tip2.title": "تلميحة 2 - وسم التطبيقات:",
+ "usageTips.tip2.title": "تلميحة 2 - وسم التطبيقات",
"usageTips.tip2.detail": "اضغط مطوّل على التطبيق, اسحبه على وسم.",
- "usageTips.tip3.title": "تلميحة 3 - نقل التطبيقات:",
+ "usageTips.tip3.title": "تلميحة 3 - نقل التطبيقات",
"usageTips.tip3.detail": "اضغط مطوّل على التطبيق, اسحبه للحاوية.",
- "usageTips.tip4.title": "تلميحة 4 - نسخ التطبيقات:",
+ "usageTips.tip4.title": "تلميحة 4 - نسخ التطبيقات",
"usageTips.tip4.detail": "اضغط مطوّل على التطبيق, اضغط Alt/Option واسحبه للحاوية.",
- "usageTips.tip5.title": "تلميحة 5 - إزالة الوسوم:",
+ "usageTips.tip5.title": "تلميحة 5 - إزالة الوسوم",
"usageTips.tip5.detail": "اضغط مطوّل على التطبيق, اسحبه بين الحاويات.",
- "usageTips.tip6.title": "تلميحة 6 - ترتيب الوسوم:",
+ "usageTips.tip6.title": "تلميحة 6 - ترتيب الوسوم",
"usageTips.tip6.detail": "اضغط مطوّل على وسم, اسحبه للمكان المطلوب.",
- "usageTips.tip7.title": "تلميحة 7 - ترتيب التطبيقات:",
+ "usageTips.tip7.title": "تلميحة 7 - ترتيب التطبيقات",
"usageTips.tip7.detail": "اضغط مطوّل على التطبيق, اسحبه لمكان داخل الحاوية.",
- "usageTips.tip8.title": "تلميحة 8 - تعديل الملاحظات:",
+ "usageTips.tip8.title": "تلميحة 8 - تعديل الملاحظات",
"usageTips.tip8.detail": "انقر يمين على التطبيق, اكتب ملاحظة."
}
diff --git a/src/Apptag/Localization/ar.json b/src/Apptag/Localization/ar.json
index edc4f31..edc76cd 100644
--- a/src/Apptag/Localization/ar.json
+++ b/src/Apptag/Localization/ar.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "عند التفعيل، يتم إخفاء النصائح العائمة أسفل شبكة التطبيقات.",
"usageTips.previous": "النصيحة السابقة",
"usageTips.next": "النصيحة التالية",
- "usageTips.tip1.title": "النصيحة 1 - إضافة وسوم:",
+ "usageTips.tip1.title": "النصيحة 1 - إضافة وسوم",
"usageTips.tip1.detail": "افتح الإعدادات, حرر الوسوم.",
- "usageTips.tip2.title": "النصيحة 2 - وسم التطبيقات:",
+ "usageTips.tip2.title": "النصيحة 2 - وسم التطبيقات",
"usageTips.tip2.detail": "اضغط مطولاً على تطبيق, اسحبه إلى وسم.",
- "usageTips.tip3.title": "النصيحة 3 - نقل التطبيقات:",
+ "usageTips.tip3.title": "النصيحة 3 - نقل التطبيقات",
"usageTips.tip3.detail": "اضغط مطولاً على تطبيق, اسحبه إلى حاوية.",
- "usageTips.tip4.title": "النصيحة 4 - نسخ التطبيقات:",
+ "usageTips.tip4.title": "النصيحة 4 - نسخ التطبيقات",
"usageTips.tip4.detail": "اضغط مطولاً على تطبيق, اضغط Alt/Option واسحبه إلى حاوية.",
- "usageTips.tip5.title": "النصيحة 5 - إزالة الوسوم:",
+ "usageTips.tip5.title": "النصيحة 5 - إزالة الوسوم",
"usageTips.tip5.detail": "اضغط مطولاً على تطبيق, اسحبه بين الحاويات.",
- "usageTips.tip6.title": "النصيحة 6 - ترتيب الوسوم:",
+ "usageTips.tip6.title": "النصيحة 6 - ترتيب الوسوم",
"usageTips.tip6.detail": "اضغط مطولاً على وسم, اسحبه إلى الموضع المطلوب.",
- "usageTips.tip7.title": "النصيحة 7 - ترتيب التطبيقات:",
+ "usageTips.tip7.title": "النصيحة 7 - ترتيب التطبيقات",
"usageTips.tip7.detail": "اضغط مطولاً على تطبيق, اسحبه إلى موضع داخل الحاوية.",
- "usageTips.tip8.title": "النصيحة 8 - تحرير الملاحظات:",
+ "usageTips.tip8.title": "النصيحة 8 - تحرير الملاحظات",
"usageTips.tip8.detail": "انقر بزر الماوس الأيمن على تطبيق, أدخل ملاحظة."
}
diff --git a/src/Apptag/Localization/cs.json b/src/Apptag/Localization/cs.json
index 949822b..b7020a1 100644
--- a/src/Apptag/Localization/cs.json
+++ b/src/Apptag/Localization/cs.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Když je zapnuto, plovoucí tipy dole v mřížce aplikací se skryjí.",
"usageTips.previous": "Předchozí tip",
"usageTips.next": "Další tip",
- "usageTips.tip1.title": "Tip 1 - Přidat tagy:",
+ "usageTips.tip1.title": "Tip 1 - Přidat tagy",
"usageTips.tip1.detail": "Otevřete Nastavení, upravte tagy.",
- "usageTips.tip2.title": "Tip 2 - Označit aplikace:",
+ "usageTips.tip2.title": "Tip 2 - Označit aplikace",
"usageTips.tip2.detail": "Podržte aplikaci, přetáhněte ji na tag.",
- "usageTips.tip3.title": "Tip 3 - Přesunout aplikace:",
+ "usageTips.tip3.title": "Tip 3 - Přesunout aplikace",
"usageTips.tip3.detail": "Podržte aplikaci, přetáhněte ji do kontejneru.",
- "usageTips.tip4.title": "Tip 4 - Kopírovat aplikace:",
+ "usageTips.tip4.title": "Tip 4 - Kopírovat aplikace",
"usageTips.tip4.detail": "Podržte aplikaci, táhněte s Alt/Option do kontejneru.",
- "usageTips.tip5.title": "Tip 5 - Odebrat tagy:",
+ "usageTips.tip5.title": "Tip 5 - Odebrat tagy",
"usageTips.tip5.detail": "Podržte aplikaci, přetáhněte ji mezi kontejnery.",
- "usageTips.tip6.title": "Tip 6 - Seřadit tagy:",
+ "usageTips.tip6.title": "Tip 6 - Seřadit tagy",
"usageTips.tip6.detail": "Podržte tag, přetáhněte ho na cílové místo.",
- "usageTips.tip7.title": "Tip 7 - Seřadit aplikace:",
+ "usageTips.tip7.title": "Tip 7 - Seřadit aplikace",
"usageTips.tip7.detail": "Podržte aplikaci, přetáhněte ji na místo v kontejneru.",
- "usageTips.tip8.title": "Tip 8 - Upravit poznámky:",
+ "usageTips.tip8.title": "Tip 8 - Upravit poznámky",
"usageTips.tip8.detail": "Klikněte na aplikaci pravým tlačítkem, zadejte poznámku."
}
diff --git a/src/Apptag/Localization/da.json b/src/Apptag/Localization/da.json
index fe816d6..1f8c744 100644
--- a/src/Apptag/Localization/da.json
+++ b/src/Apptag/Localization/da.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Når det er slået til, skjules de flydende tips nederst i appgitteret.",
"usageTips.previous": "Forrige tip",
"usageTips.next": "Næste tip",
- "usageTips.tip1.title": "Tip 1 - Tilføj tags:",
+ "usageTips.tip1.title": "Tip 1 - Tilføj tags",
"usageTips.tip1.detail": "Åbn Indstillinger, rediger tags.",
- "usageTips.tip2.title": "Tip 2 - Tag apps:",
+ "usageTips.tip2.title": "Tip 2 - Tag apps",
"usageTips.tip2.detail": "Hold en app nede, slip den på et tag.",
- "usageTips.tip3.title": "Tip 3 - Flyt apps:",
+ "usageTips.tip3.title": "Tip 3 - Flyt apps",
"usageTips.tip3.detail": "Hold en app nede, slip den i en container.",
- "usageTips.tip4.title": "Tip 4 - Kopiér apps:",
+ "usageTips.tip4.title": "Tip 4 - Kopiér apps",
"usageTips.tip4.detail": "Hold en app nede, Alt/Option-træk den til en container.",
- "usageTips.tip5.title": "Tip 5 - Fjern tags:",
+ "usageTips.tip5.title": "Tip 5 - Fjern tags",
"usageTips.tip5.detail": "Hold en app nede, slip den mellem containere.",
- "usageTips.tip6.title": "Tip 6 - Sortér tags:",
+ "usageTips.tip6.title": "Tip 6 - Sortér tags",
"usageTips.tip6.detail": "Hold et tag nede, flyt det til målpositionen.",
- "usageTips.tip7.title": "Tip 7 - Sortér apps:",
+ "usageTips.tip7.title": "Tip 7 - Sortér apps",
"usageTips.tip7.detail": "Hold en app nede, flyt den i containeren.",
- "usageTips.tip8.title": "Tip 8 - Rediger noter:",
+ "usageTips.tip8.title": "Tip 8 - Rediger noter",
"usageTips.tip8.detail": "Højreklik på en app, indtast en note."
}
diff --git a/src/Apptag/Localization/de.json b/src/Apptag/Localization/de.json
index b5401dc..833f2c7 100644
--- a/src/Apptag/Localization/de.json
+++ b/src/Apptag/Localization/de.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Wenn aktiviert, werden die schwebenden Tipps unten im App-Raster ausgeblendet.",
"usageTips.previous": "Vorheriger Tipp",
"usageTips.next": "Nächster Tipp",
- "usageTips.tip1.title": "Tipp 1 - Tags hinzufügen:",
+ "usageTips.tip1.title": "Tipp 1 - Tags hinzufügen",
"usageTips.tip1.detail": "Einstellungen öffnen, Tags bearbeiten.",
- "usageTips.tip2.title": "Tipp 2 - Apps taggen:",
+ "usageTips.tip2.title": "Tipp 2 - Apps taggen",
"usageTips.tip2.detail": "App gedrückt halten, auf einen Tag ziehen.",
- "usageTips.tip3.title": "Tipp 3 - Apps verschieben:",
+ "usageTips.tip3.title": "Tipp 3 - Apps verschieben",
"usageTips.tip3.detail": "App gedrückt halten, in einen Container ziehen.",
- "usageTips.tip4.title": "Tipp 4 - Apps kopieren:",
+ "usageTips.tip4.title": "Tipp 4 - Apps kopieren",
"usageTips.tip4.detail": "App gedrückt halten, mit Alt/Option in einen Container ziehen.",
- "usageTips.tip5.title": "Tipp 5 - Tags entfernen:",
+ "usageTips.tip5.title": "Tipp 5 - Tags entfernen",
"usageTips.tip5.detail": "App gedrückt halten, zwischen Container ziehen.",
- "usageTips.tip6.title": "Tipp 6 - Tags sortieren:",
+ "usageTips.tip6.title": "Tipp 6 - Tags sortieren",
"usageTips.tip6.detail": "Tag gedrückt halten, an die Zielposition ziehen.",
- "usageTips.tip7.title": "Tipp 7 - Apps sortieren:",
+ "usageTips.tip7.title": "Tipp 7 - Apps sortieren",
"usageTips.tip7.detail": "App gedrückt halten, zur Position im Container ziehen.",
- "usageTips.tip8.title": "Tipp 8 - Notizen bearbeiten:",
+ "usageTips.tip8.title": "Tipp 8 - Notizen bearbeiten",
"usageTips.tip8.detail": "Rechtsklick auf App, Notiz eingeben."
}
diff --git a/src/Apptag/Localization/en.json b/src/Apptag/Localization/en.json
index 5822cda..3ae2c46 100644
--- a/src/Apptag/Localization/en.json
+++ b/src/Apptag/Localization/en.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "When enabled, the floating tips at the bottom of the app grid are hidden.",
"usageTips.previous": "Previous tip",
"usageTips.next": "Next tip",
- "usageTips.tip1.title": "Tip 1 - Add tags:",
+ "usageTips.tip1.title": "Tip 1 - Add tags",
"usageTips.tip1.detail": "Open Settings, edit tags.",
- "usageTips.tip2.title": "Tip 2 - Tag apps:",
+ "usageTips.tip2.title": "Tip 2 - Tag apps",
"usageTips.tip2.detail": "Long-press an app, then drag it onto a tag.",
- "usageTips.tip3.title": "Tip 3 - Move apps:",
+ "usageTips.tip3.title": "Tip 3 - Move apps",
"usageTips.tip3.detail": "Long-press an app, then drag it into a container.",
- "usageTips.tip4.title": "Tip 4 - Copy apps:",
+ "usageTips.tip4.title": "Tip 4 - Copy apps",
"usageTips.tip4.detail": "Long-press an app, Alt/Option-drag it into a container.",
- "usageTips.tip5.title": "Tip 5 - Remove tags:",
+ "usageTips.tip5.title": "Tip 5 - Remove tags",
"usageTips.tip5.detail": "Long-press an app, then drag it between containers.",
- "usageTips.tip6.title": "Tip 6 - Reorder tags:",
+ "usageTips.tip6.title": "Tip 6 - Reorder tags",
"usageTips.tip6.detail": "Long-press a tag, then drag it to the target position.",
- "usageTips.tip7.title": "Tip 7 - Reorder apps:",
+ "usageTips.tip7.title": "Tip 7 - Reorder apps",
"usageTips.tip7.detail": "Long-press an app, then drag it to a spot in the container.",
- "usageTips.tip8.title": "Tip 8 - Edit notes:",
+ "usageTips.tip8.title": "Tip 8 - Edit notes",
"usageTips.tip8.detail": "Right-click an app, enter a note."
}
diff --git a/src/Apptag/Localization/es.json b/src/Apptag/Localization/es.json
index d68c68f..391a94d 100644
--- a/src/Apptag/Localization/es.json
+++ b/src/Apptag/Localization/es.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Si está activado, se ocultan los consejos flotantes de la parte inferior de la cuadrícula de apps.",
"usageTips.previous": "Consejo anterior",
"usageTips.next": "Consejo siguiente",
- "usageTips.tip1.title": "Consejo 1 - Añadir etiquetas:",
+ "usageTips.tip1.title": "Consejo 1 - Añadir etiquetas",
"usageTips.tip1.detail": "Abra Ajustes, edite etiquetas.",
- "usageTips.tip2.title": "Consejo 2 - Etiquetar apps:",
+ "usageTips.tip2.title": "Consejo 2 - Etiquetar apps",
"usageTips.tip2.detail": "Mantén pulsada una app, arrástrala a una etiqueta.",
- "usageTips.tip3.title": "Consejo 3 - Mover apps:",
+ "usageTips.tip3.title": "Consejo 3 - Mover apps",
"usageTips.tip3.detail": "Mantén pulsada una app, arrástrala a un contenedor.",
- "usageTips.tip4.title": "Consejo 4 - Copiar apps:",
+ "usageTips.tip4.title": "Consejo 4 - Copiar apps",
"usageTips.tip4.detail": "Mantén pulsada una app, arrástrala con Alt/Opción a un contenedor.",
- "usageTips.tip5.title": "Consejo 5 - Quitar etiquetas:",
+ "usageTips.tip5.title": "Consejo 5 - Quitar etiquetas",
"usageTips.tip5.detail": "Mantén pulsada una app, arrástrala entre contenedores.",
- "usageTips.tip6.title": "Consejo 6 - Ordenar etiquetas:",
+ "usageTips.tip6.title": "Consejo 6 - Ordenar etiquetas",
"usageTips.tip6.detail": "Mantén pulsada una etiqueta, arrástrala a la posición deseada.",
- "usageTips.tip7.title": "Consejo 7 - Ordenar apps:",
+ "usageTips.tip7.title": "Consejo 7 - Ordenar apps",
"usageTips.tip7.detail": "Mantén pulsada una app, arrástrala a una posición del contenedor.",
- "usageTips.tip8.title": "Consejo 8 - Editar notas:",
+ "usageTips.tip8.title": "Consejo 8 - Editar notas",
"usageTips.tip8.detail": "Clic derecho en una app, escriba una nota."
}
diff --git a/src/Apptag/Localization/fr.json b/src/Apptag/Localization/fr.json
index 194522a..104da9d 100644
--- a/src/Apptag/Localization/fr.json
+++ b/src/Apptag/Localization/fr.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Si cette option est activée, les astuces flottantes en bas de la grille des apps sont masquées.",
"usageTips.previous": "Astuce précédente",
"usageTips.next": "Astuce suivante",
- "usageTips.tip1.title": "Astuce 1 - Ajouter des tags :",
+ "usageTips.tip1.title": "Astuce 1 - Ajouter des tags",
"usageTips.tip1.detail": "Ouvrez Réglages, modifiez les tags.",
- "usageTips.tip2.title": "Astuce 2 - Taguer des apps :",
+ "usageTips.tip2.title": "Astuce 2 - Taguer des apps",
"usageTips.tip2.detail": "Appuyez longuement sur une app, déposez-la sur un tag.",
- "usageTips.tip3.title": "Astuce 3 - Déplacer des apps :",
+ "usageTips.tip3.title": "Astuce 3 - Déplacer des apps",
"usageTips.tip3.detail": "Appuyez longuement sur une app, déposez-la dans un conteneur.",
- "usageTips.tip4.title": "Astuce 4 - Copier des apps :",
+ "usageTips.tip4.title": "Astuce 4 - Copier des apps",
"usageTips.tip4.detail": "Appuyez longuement sur une app, déposez-la avec Alt/Option dans un conteneur.",
- "usageTips.tip5.title": "Astuce 5 - Retirer des tags :",
+ "usageTips.tip5.title": "Astuce 5 - Retirer des tags",
"usageTips.tip5.detail": "Appuyez longuement sur une app, déposez-la entre deux conteneurs.",
- "usageTips.tip6.title": "Astuce 6 - Trier les tags :",
+ "usageTips.tip6.title": "Astuce 6 - Trier les tags",
"usageTips.tip6.detail": "Appuyez longuement sur un tag, déposez-le à la position voulue.",
- "usageTips.tip7.title": "Astuce 7 - Trier les apps :",
+ "usageTips.tip7.title": "Astuce 7 - Trier les apps",
"usageTips.tip7.detail": "Appuyez longuement sur une app, déposez-la dans le conteneur.",
- "usageTips.tip8.title": "Astuce 8 - Modifier les notes :",
+ "usageTips.tip8.title": "Astuce 8 - Modifier les notes",
"usageTips.tip8.detail": "Clic droit sur une app, saisissez une note."
}
diff --git a/src/Apptag/Localization/id.json b/src/Apptag/Localization/id.json
index 48a1901..e41628e 100644
--- a/src/Apptag/Localization/id.json
+++ b/src/Apptag/Localization/id.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Jika aktif, tips mengambang di bagian bawah grid app akan disembunyikan.",
"usageTips.previous": "Tips sebelumnya",
"usageTips.next": "Tips berikutnya",
- "usageTips.tip1.title": "Tips 1 - Tambah tag:",
+ "usageTips.tip1.title": "Tips 1 - Tambah tag",
"usageTips.tip1.detail": "Buka Pengaturan, edit tag.",
- "usageTips.tip2.title": "Tips 2 - Beri tag app:",
+ "usageTips.tip2.title": "Tips 2 - Beri tag app",
"usageTips.tip2.detail": "Tekan lama app, jatuhkan ke tag.",
- "usageTips.tip3.title": "Tips 3 - Pindahkan app:",
+ "usageTips.tip3.title": "Tips 3 - Pindahkan app",
"usageTips.tip3.detail": "Tekan lama app, jatuhkan ke kontainer.",
- "usageTips.tip4.title": "Tips 4 - Salin app:",
+ "usageTips.tip4.title": "Tips 4 - Salin app",
"usageTips.tip4.detail": "Tekan lama app, Alt/Option-jatuhkan ke kontainer.",
- "usageTips.tip5.title": "Tips 5 - Hapus tag:",
+ "usageTips.tip5.title": "Tips 5 - Hapus tag",
"usageTips.tip5.detail": "Tekan lama app, jatuhkan di antara kontainer.",
- "usageTips.tip6.title": "Tips 6 - Urutkan tag:",
+ "usageTips.tip6.title": "Tips 6 - Urutkan tag",
"usageTips.tip6.detail": "Tekan lama tag, pindahkan ke posisi target.",
- "usageTips.tip7.title": "Tips 7 - Urutkan app:",
+ "usageTips.tip7.title": "Tips 7 - Urutkan app",
"usageTips.tip7.detail": "Tekan lama app, pindahkan di dalam kontainer.",
- "usageTips.tip8.title": "Tips 8 - Edit catatan:",
+ "usageTips.tip8.title": "Tips 8 - Edit catatan",
"usageTips.tip8.detail": "Klik kanan app, masukkan catatan."
}
diff --git a/src/Apptag/Localization/it.json b/src/Apptag/Localization/it.json
index 2646c93..cf415da 100644
--- a/src/Apptag/Localization/it.json
+++ b/src/Apptag/Localization/it.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Se attivo, i suggerimenti flottanti in basso nella griglia delle app vengono nascosti.",
"usageTips.previous": "Suggerimento precedente",
"usageTips.next": "Suggerimento successivo",
- "usageTips.tip1.title": "Suggerimento 1 - Aggiungere tag:",
+ "usageTips.tip1.title": "Suggerimento 1 - Aggiungere tag",
"usageTips.tip1.detail": "Apri Impostazioni, modifica i tag.",
- "usageTips.tip2.title": "Suggerimento 2 - Taggare app:",
+ "usageTips.tip2.title": "Suggerimento 2 - Taggare app",
"usageTips.tip2.detail": "Tieni premuta un’app, rilasciala su un tag.",
- "usageTips.tip3.title": "Suggerimento 3 - Spostare app:",
+ "usageTips.tip3.title": "Suggerimento 3 - Spostare app",
"usageTips.tip3.detail": "Tieni premuta un’app, rilasciala in un contenitore.",
- "usageTips.tip4.title": "Suggerimento 4 - Copiare app:",
+ "usageTips.tip4.title": "Suggerimento 4 - Copiare app",
"usageTips.tip4.detail": "Tieni premuta un’app, rilasciala con Alt/Opzione in un contenitore.",
- "usageTips.tip5.title": "Suggerimento 5 - Rimuovere tag:",
+ "usageTips.tip5.title": "Suggerimento 5 - Rimuovere tag",
"usageTips.tip5.detail": "Tieni premuta un’app, rilasciala tra i contenitori.",
- "usageTips.tip6.title": "Suggerimento 6 - Riordinare tag:",
+ "usageTips.tip6.title": "Suggerimento 6 - Riordinare tag",
"usageTips.tip6.detail": "Tieni premuto un tag, spostalo nella posizione desiderata.",
- "usageTips.tip7.title": "Suggerimento 7 - Riordinare app:",
+ "usageTips.tip7.title": "Suggerimento 7 - Riordinare app",
"usageTips.tip7.detail": "Tieni premuta un’app, spostala nel contenitore.",
- "usageTips.tip8.title": "Suggerimento 8 - Modificare note:",
+ "usageTips.tip8.title": "Suggerimento 8 - Modificare note",
"usageTips.tip8.detail": "Fai clic destro su un’app, inserisci una nota."
}
diff --git a/src/Apptag/Localization/ja.json b/src/Apptag/Localization/ja.json
index 2e76a0a..77d9f78 100644
--- a/src/Apptag/Localization/ja.json
+++ b/src/Apptag/Localization/ja.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "オンにすると、アプリグリッド下部のフローティングヒントを表示しません。",
"usageTips.previous": "前のヒント",
"usageTips.next": "次のヒント",
- "usageTips.tip1.title": "ヒント1 - タグを追加:",
+ "usageTips.tip1.title": "ヒント1 - タグを追加",
"usageTips.tip1.detail": "設定を開く, タグを編集します。",
- "usageTips.tip2.title": "ヒント2 - アプリにタグ付け:",
+ "usageTips.tip2.title": "ヒント2 - アプリにタグ付け",
"usageTips.tip2.detail": "アプリを長押し, タグ上にドロップします。",
- "usageTips.tip3.title": "ヒント3 - アプリを移動:",
+ "usageTips.tip3.title": "ヒント3 - アプリを移動",
"usageTips.tip3.detail": "アプリを長押し, コンテナへドロップします。",
- "usageTips.tip4.title": "ヒント4 - アプリをコピー:",
+ "usageTips.tip4.title": "ヒント4 - アプリをコピー",
"usageTips.tip4.detail": "アプリを長押し, Alt/Optionでコンテナへドロップします。",
- "usageTips.tip5.title": "ヒント5 - タグを解除:",
+ "usageTips.tip5.title": "ヒント5 - タグを解除",
"usageTips.tip5.detail": "アプリを長押し, コンテナ間の空白へドロップします。",
- "usageTips.tip6.title": "ヒント6 - タグを並べ替え:",
+ "usageTips.tip6.title": "ヒント6 - タグを並べ替え",
"usageTips.tip6.detail": "タグを長押し, 目的の位置へ移動します。",
- "usageTips.tip7.title": "ヒント7 - アプリを並べ替え:",
+ "usageTips.tip7.title": "ヒント7 - アプリを並べ替え",
"usageTips.tip7.detail": "アプリを長押し, コンテナ内の目的位置へ移動します。",
- "usageTips.tip8.title": "ヒント8 - メモを編集:",
+ "usageTips.tip8.title": "ヒント8 - メモを編集",
"usageTips.tip8.detail": "アプリを右クリック, メモを入力します。"
}
diff --git a/src/Apptag/Localization/ko.json b/src/Apptag/Localization/ko.json
index f5a1fcb..2c0cf4d 100644
--- a/src/Apptag/Localization/ko.json
+++ b/src/Apptag/Localization/ko.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "켜면 앱 그리드 하단의 플로팅 사용 팁이 표시되지 않습니다.",
"usageTips.previous": "이전 팁",
"usageTips.next": "다음 팁",
- "usageTips.tip1.title": "팁 1 - 태그 추가:",
+ "usageTips.tip1.title": "팁 1 - 태그 추가",
"usageTips.tip1.detail": "설정 열기, 태그 편집.",
- "usageTips.tip2.title": "팁 2 - 앱에 태그 지정:",
+ "usageTips.tip2.title": "팁 2 - 앱에 태그 지정",
"usageTips.tip2.detail": "앱을 길게 누르기, 태그 위에 놓기.",
- "usageTips.tip3.title": "팁 3 - 앱 이동:",
+ "usageTips.tip3.title": "팁 3 - 앱 이동",
"usageTips.tip3.detail": "앱을 길게 누르기, 컨테이너에 놓기.",
- "usageTips.tip4.title": "팁 4 - 앱 복사:",
+ "usageTips.tip4.title": "팁 4 - 앱 복사",
"usageTips.tip4.detail": "앱을 길게 누르기, Alt/Option으로 컨테이너에 놓기.",
- "usageTips.tip5.title": "팁 5 - 태그 제거:",
+ "usageTips.tip5.title": "팁 5 - 태그 제거",
"usageTips.tip5.detail": "앱을 길게 누르기, 컨테이너 사이에 놓기.",
- "usageTips.tip6.title": "팁 6 - 태그 정렬:",
+ "usageTips.tip6.title": "팁 6 - 태그 정렬",
"usageTips.tip6.detail": "태그를 길게 누르기, 원하는 위치로 이동.",
- "usageTips.tip7.title": "팁 7 - 앱 정렬:",
+ "usageTips.tip7.title": "팁 7 - 앱 정렬",
"usageTips.tip7.detail": "앱을 길게 누르기, 컨테이너 안에서 이동.",
- "usageTips.tip8.title": "팁 8 - 메모 편집:",
+ "usageTips.tip8.title": "팁 8 - 메모 편집",
"usageTips.tip8.detail": "앱을 오른쪽 클릭, 메모 입력."
}
diff --git a/src/Apptag/Localization/ms.json b/src/Apptag/Localization/ms.json
index e4f1b77..51c453a 100644
--- a/src/Apptag/Localization/ms.json
+++ b/src/Apptag/Localization/ms.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Apabila dihidupkan, petua terapung di bahagian bawah grid app akan disembunyikan.",
"usageTips.previous": "Petua sebelumnya",
"usageTips.next": "Petua seterusnya",
- "usageTips.tip1.title": "Petua 1 - Tambah tag:",
+ "usageTips.tip1.title": "Petua 1 - Tambah tag",
"usageTips.tip1.detail": "Buka Tetapan, edit tag.",
- "usageTips.tip2.title": "Petua 2 - Tag app:",
+ "usageTips.tip2.title": "Petua 2 - Tag app",
"usageTips.tip2.detail": "Tekan lama app, lepaskan pada tag.",
- "usageTips.tip3.title": "Petua 3 - Alih app:",
+ "usageTips.tip3.title": "Petua 3 - Alih app",
"usageTips.tip3.detail": "Tekan lama app, lepaskan ke dalam bekas.",
- "usageTips.tip4.title": "Petua 4 - Salin app:",
+ "usageTips.tip4.title": "Petua 4 - Salin app",
"usageTips.tip4.detail": "Tekan lama app, Alt/Option-lepaskan ke dalam bekas.",
- "usageTips.tip5.title": "Petua 5 - Buang tag:",
+ "usageTips.tip5.title": "Petua 5 - Buang tag",
"usageTips.tip5.detail": "Tekan lama app, lepaskan antara bekas.",
- "usageTips.tip6.title": "Petua 6 - Susun tag:",
+ "usageTips.tip6.title": "Petua 6 - Susun tag",
"usageTips.tip6.detail": "Tekan lama tag, alih ke posisi sasaran.",
- "usageTips.tip7.title": "Petua 7 - Susun app:",
+ "usageTips.tip7.title": "Petua 7 - Susun app",
"usageTips.tip7.detail": "Tekan lama app, alih dalam bekas.",
- "usageTips.tip8.title": "Petua 8 - Edit nota:",
+ "usageTips.tip8.title": "Petua 8 - Edit nota",
"usageTips.tip8.detail": "Klik kanan app, masukkan nota."
}
diff --git a/src/Apptag/Localization/nb.json b/src/Apptag/Localization/nb.json
index 9ca5e73..d6b9a6a 100644
--- a/src/Apptag/Localization/nb.json
+++ b/src/Apptag/Localization/nb.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Når dette er slått på, skjules de flytende tipsene nederst i app-rutenettet.",
"usageTips.previous": "Forrige tips",
"usageTips.next": "Neste tips",
- "usageTips.tip1.title": "Tips 1 - Legg til tagger:",
+ "usageTips.tip1.title": "Tips 1 - Legg til tagger",
"usageTips.tip1.detail": "Åpne Innstillinger, rediger tagger.",
- "usageTips.tip2.title": "Tips 2 - Tagg apper:",
+ "usageTips.tip2.title": "Tips 2 - Tagg apper",
"usageTips.tip2.detail": "Hold en app inne, slipp den på en tagg.",
- "usageTips.tip3.title": "Tips 3 - Flytt apper:",
+ "usageTips.tip3.title": "Tips 3 - Flytt apper",
"usageTips.tip3.detail": "Hold en app inne, slipp den i en beholder.",
- "usageTips.tip4.title": "Tips 4 - Kopier apper:",
+ "usageTips.tip4.title": "Tips 4 - Kopier apper",
"usageTips.tip4.detail": "Hold en app inne, Alt/Option-slipp den i en beholder.",
- "usageTips.tip5.title": "Tips 5 - Fjern tagger:",
+ "usageTips.tip5.title": "Tips 5 - Fjern tagger",
"usageTips.tip5.detail": "Hold en app inne, slipp den mellom beholdere.",
- "usageTips.tip6.title": "Tips 6 - Sorter tagger:",
+ "usageTips.tip6.title": "Tips 6 - Sorter tagger",
"usageTips.tip6.detail": "Hold en tagg inne, flytt den til målposisjonen.",
- "usageTips.tip7.title": "Tips 7 - Sorter apper:",
+ "usageTips.tip7.title": "Tips 7 - Sorter apper",
"usageTips.tip7.detail": "Hold en app inne, flytt den i beholderen.",
- "usageTips.tip8.title": "Tips 8 - Rediger notater:",
+ "usageTips.tip8.title": "Tips 8 - Rediger notater",
"usageTips.tip8.detail": "Høyreklikk på en app, skriv inn et notat."
}
diff --git a/src/Apptag/Localization/nl.json b/src/Apptag/Localization/nl.json
index b3af318..ef1fd58 100644
--- a/src/Apptag/Localization/nl.json
+++ b/src/Apptag/Localization/nl.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Als dit is ingeschakeld, worden de zwevende tips onderaan het app-raster verborgen.",
"usageTips.previous": "Vorige tip",
"usageTips.next": "Volgende tip",
- "usageTips.tip1.title": "Tip 1 - Tags toevoegen:",
+ "usageTips.tip1.title": "Tip 1 - Tags toevoegen",
"usageTips.tip1.detail": "Open Instellingen, bewerk tags.",
- "usageTips.tip2.title": "Tip 2 - Apps taggen:",
+ "usageTips.tip2.title": "Tip 2 - Apps taggen",
"usageTips.tip2.detail": "Houd een app ingedrukt, sleep naar een tag.",
- "usageTips.tip3.title": "Tip 3 - Apps verplaatsen:",
+ "usageTips.tip3.title": "Tip 3 - Apps verplaatsen",
"usageTips.tip3.detail": "Houd een app ingedrukt, sleep naar een container.",
- "usageTips.tip4.title": "Tip 4 - Apps kopiëren:",
+ "usageTips.tip4.title": "Tip 4 - Apps kopiëren",
"usageTips.tip4.detail": "Houd een app ingedrukt, Alt/Option-sleep naar een container.",
- "usageTips.tip5.title": "Tip 5 - Tags verwijderen:",
+ "usageTips.tip5.title": "Tip 5 - Tags verwijderen",
"usageTips.tip5.detail": "Houd een app ingedrukt, sleep tussen containers.",
- "usageTips.tip6.title": "Tip 6 - Tags sorteren:",
+ "usageTips.tip6.title": "Tip 6 - Tags sorteren",
"usageTips.tip6.detail": "Houd een tag ingedrukt, sleep naar de doelpositie.",
- "usageTips.tip7.title": "Tip 7 - Apps sorteren:",
+ "usageTips.tip7.title": "Tip 7 - Apps sorteren",
"usageTips.tip7.detail": "Houd een app ingedrukt, sleep binnen de container.",
- "usageTips.tip8.title": "Tip 8 - Notities bewerken:",
+ "usageTips.tip8.title": "Tip 8 - Notities bewerken",
"usageTips.tip8.detail": "Klik met rechts op een app, voer een notitie in."
}
diff --git a/src/Apptag/Localization/nn.json b/src/Apptag/Localization/nn.json
index 82e449b..475e481 100644
--- a/src/Apptag/Localization/nn.json
+++ b/src/Apptag/Localization/nn.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Når dette er slått på, vert dei flytande tipsa nedst i apprutenettet gøymde.",
"usageTips.previous": "Forrige tips",
"usageTips.next": "Neste tips",
- "usageTips.tip1.title": "Tips 1 - Legg til tagger:",
+ "usageTips.tip1.title": "Tips 1 - Legg til tagger",
"usageTips.tip1.detail": "Opna Innstillingar, rediger taggar.",
- "usageTips.tip2.title": "Tips 2 - Tagg apper:",
+ "usageTips.tip2.title": "Tips 2 - Tagg apper",
"usageTips.tip2.detail": "Hold ein app inne, slepp han på ein tagg.",
- "usageTips.tip3.title": "Tips 3 - Flytt apper:",
+ "usageTips.tip3.title": "Tips 3 - Flytt apper",
"usageTips.tip3.detail": "Hold ein app inne, slepp han i ein behaldar.",
- "usageTips.tip4.title": "Tips 4 - Kopier apper:",
+ "usageTips.tip4.title": "Tips 4 - Kopier apper",
"usageTips.tip4.detail": "Hold ein app inne, Alt/Option-slepp han i ein behaldar.",
- "usageTips.tip5.title": "Tips 5 - Fjern tagger:",
+ "usageTips.tip5.title": "Tips 5 - Fjern tagger",
"usageTips.tip5.detail": "Hold ein app inne, slepp han mellom behaldarar.",
- "usageTips.tip6.title": "Tips 6 - Sorter tagger:",
+ "usageTips.tip6.title": "Tips 6 - Sorter tagger",
"usageTips.tip6.detail": "Hold ein tagg inne, flytt han til målposisjonen.",
- "usageTips.tip7.title": "Tips 7 - Sorter apper:",
+ "usageTips.tip7.title": "Tips 7 - Sorter apper",
"usageTips.tip7.detail": "Hold ein app inne, flytt han i behaldaren.",
- "usageTips.tip8.title": "Tips 8 - Rediger notater:",
+ "usageTips.tip8.title": "Tips 8 - Rediger notater",
"usageTips.tip8.detail": "Høgreklikk på ein app, skriv inn eit notat."
}
diff --git a/src/Apptag/Localization/no.json b/src/Apptag/Localization/no.json
index 9ca5e73..d6b9a6a 100644
--- a/src/Apptag/Localization/no.json
+++ b/src/Apptag/Localization/no.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Når dette er slått på, skjules de flytende tipsene nederst i app-rutenettet.",
"usageTips.previous": "Forrige tips",
"usageTips.next": "Neste tips",
- "usageTips.tip1.title": "Tips 1 - Legg til tagger:",
+ "usageTips.tip1.title": "Tips 1 - Legg til tagger",
"usageTips.tip1.detail": "Åpne Innstillinger, rediger tagger.",
- "usageTips.tip2.title": "Tips 2 - Tagg apper:",
+ "usageTips.tip2.title": "Tips 2 - Tagg apper",
"usageTips.tip2.detail": "Hold en app inne, slipp den på en tagg.",
- "usageTips.tip3.title": "Tips 3 - Flytt apper:",
+ "usageTips.tip3.title": "Tips 3 - Flytt apper",
"usageTips.tip3.detail": "Hold en app inne, slipp den i en beholder.",
- "usageTips.tip4.title": "Tips 4 - Kopier apper:",
+ "usageTips.tip4.title": "Tips 4 - Kopier apper",
"usageTips.tip4.detail": "Hold en app inne, Alt/Option-slipp den i en beholder.",
- "usageTips.tip5.title": "Tips 5 - Fjern tagger:",
+ "usageTips.tip5.title": "Tips 5 - Fjern tagger",
"usageTips.tip5.detail": "Hold en app inne, slipp den mellom beholdere.",
- "usageTips.tip6.title": "Tips 6 - Sorter tagger:",
+ "usageTips.tip6.title": "Tips 6 - Sorter tagger",
"usageTips.tip6.detail": "Hold en tagg inne, flytt den til målposisjonen.",
- "usageTips.tip7.title": "Tips 7 - Sorter apper:",
+ "usageTips.tip7.title": "Tips 7 - Sorter apper",
"usageTips.tip7.detail": "Hold en app inne, flytt den i beholderen.",
- "usageTips.tip8.title": "Tips 8 - Rediger notater:",
+ "usageTips.tip8.title": "Tips 8 - Rediger notater",
"usageTips.tip8.detail": "Høyreklikk på en app, skriv inn et notat."
}
diff --git a/src/Apptag/Localization/pl.json b/src/Apptag/Localization/pl.json
index 9846772..4be8cb7 100644
--- a/src/Apptag/Localization/pl.json
+++ b/src/Apptag/Localization/pl.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Po włączeniu pływające wskazówki u dołu siatki aplikacji będą ukryte.",
"usageTips.previous": "Poprzednia wskazówka",
"usageTips.next": "Następna wskazówka",
- "usageTips.tip1.title": "Wskazówka 1 - Dodaj tagi:",
+ "usageTips.tip1.title": "Wskazówka 1 - Dodaj tagi",
"usageTips.tip1.detail": "Otwórz Ustawienia, edytuj tagi.",
- "usageTips.tip2.title": "Wskazówka 2 - Otaguj aplikacje:",
+ "usageTips.tip2.title": "Wskazówka 2 - Otaguj aplikacje",
"usageTips.tip2.detail": "Przytrzymaj aplikację, przeciągnij ją na tag.",
- "usageTips.tip3.title": "Wskazówka 3 - Przenieś aplikacje:",
+ "usageTips.tip3.title": "Wskazówka 3 - Przenieś aplikacje",
"usageTips.tip3.detail": "Przytrzymaj aplikację, przeciągnij ją do kontenera.",
- "usageTips.tip4.title": "Wskazówka 4 - Skopiuj aplikacje:",
+ "usageTips.tip4.title": "Wskazówka 4 - Skopiuj aplikacje",
"usageTips.tip4.detail": "Przytrzymaj aplikację, przeciągnij z Alt/Option do kontenera.",
- "usageTips.tip5.title": "Wskazówka 5 - Usuń tagi:",
+ "usageTips.tip5.title": "Wskazówka 5 - Usuń tagi",
"usageTips.tip5.detail": "Przytrzymaj aplikację, przeciągnij między kontenery.",
- "usageTips.tip6.title": "Wskazówka 6 - Sortuj tagi:",
+ "usageTips.tip6.title": "Wskazówka 6 - Sortuj tagi",
"usageTips.tip6.detail": "Przytrzymaj tag, przeciągnij go na docelowe miejsce.",
- "usageTips.tip7.title": "Wskazówka 7 - Sortuj aplikacje:",
+ "usageTips.tip7.title": "Wskazówka 7 - Sortuj aplikacje",
"usageTips.tip7.detail": "Przytrzymaj aplikację, przeciągnij ją w kontenerze.",
- "usageTips.tip8.title": "Wskazówka 8 - Edytuj notatki:",
+ "usageTips.tip8.title": "Wskazówka 8 - Edytuj notatki",
"usageTips.tip8.detail": "Kliknij aplikację prawym przyciskiem, wpisz notatkę."
}
diff --git a/src/Apptag/Localization/pt-BR.json b/src/Apptag/Localization/pt-BR.json
index f82a7ea..e348a39 100644
--- a/src/Apptag/Localization/pt-BR.json
+++ b/src/Apptag/Localization/pt-BR.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Quando ativado, as dicas flutuantes na parte inferior da grade de apps ficam ocultas.",
"usageTips.previous": "Dica anterior",
"usageTips.next": "Próxima dica",
- "usageTips.tip1.title": "Dica 1 - Adicionar tags:",
+ "usageTips.tip1.title": "Dica 1 - Adicionar tags",
"usageTips.tip1.detail": "Abra Ajustes, edite tags.",
- "usageTips.tip2.title": "Dica 2 - Marcar apps:",
+ "usageTips.tip2.title": "Dica 2 - Marcar apps",
"usageTips.tip2.detail": "Pressione e segure um app, solte sobre uma tag.",
- "usageTips.tip3.title": "Dica 3 - Mover apps:",
+ "usageTips.tip3.title": "Dica 3 - Mover apps",
"usageTips.tip3.detail": "Pressione e segure um app, solte em um contêiner.",
- "usageTips.tip4.title": "Dica 4 - Copiar apps:",
+ "usageTips.tip4.title": "Dica 4 - Copiar apps",
"usageTips.tip4.detail": "Pressione e segure um app, solte com Alt/Option em um contêiner.",
- "usageTips.tip5.title": "Dica 5 - Remover tags:",
+ "usageTips.tip5.title": "Dica 5 - Remover tags",
"usageTips.tip5.detail": "Pressione e segure um app, solte entre contêineres.",
- "usageTips.tip6.title": "Dica 6 - Reordenar tags:",
+ "usageTips.tip6.title": "Dica 6 - Reordenar tags",
"usageTips.tip6.detail": "Pressione e segure uma tag, mova até a posição desejada.",
- "usageTips.tip7.title": "Dica 7 - Reordenar apps:",
+ "usageTips.tip7.title": "Dica 7 - Reordenar apps",
"usageTips.tip7.detail": "Pressione e segure um app, mova dentro do contêiner.",
- "usageTips.tip8.title": "Dica 8 - Editar notas:",
+ "usageTips.tip8.title": "Dica 8 - Editar notas",
"usageTips.tip8.detail": "Clique com o botão direito em um app, digite uma nota."
}
diff --git a/src/Apptag/Localization/ro.json b/src/Apptag/Localization/ro.json
index b93398d..aa3a5cf 100644
--- a/src/Apptag/Localization/ro.json
+++ b/src/Apptag/Localization/ro.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Când este activat, sfaturile plutitoare din partea de jos a grilei de aplicații sunt ascunse.",
"usageTips.previous": "Sfatul anterior",
"usageTips.next": "Sfatul următor",
- "usageTips.tip1.title": "Sfat 1 - Adaugă etichete:",
+ "usageTips.tip1.title": "Sfat 1 - Adaugă etichete",
"usageTips.tip1.detail": "Deschide Setări, editează etichetele.",
- "usageTips.tip2.title": "Sfat 2 - Etichetează aplicații:",
+ "usageTips.tip2.title": "Sfat 2 - Etichetează aplicații",
"usageTips.tip2.detail": "Ține apăsată o aplicație, plaseaz-o pe o etichetă.",
- "usageTips.tip3.title": "Sfat 3 - Mută aplicații:",
+ "usageTips.tip3.title": "Sfat 3 - Mută aplicații",
"usageTips.tip3.detail": "Ține apăsată o aplicație, plaseaz-o într-un container.",
- "usageTips.tip4.title": "Sfat 4 - Copiază aplicații:",
+ "usageTips.tip4.title": "Sfat 4 - Copiază aplicații",
"usageTips.tip4.detail": "Ține apăsată o aplicație, plaseaz-o cu Alt/Option într-un container.",
- "usageTips.tip5.title": "Sfat 5 - Elimină etichete:",
+ "usageTips.tip5.title": "Sfat 5 - Elimină etichete",
"usageTips.tip5.detail": "Ține apăsată o aplicație, plaseaz-o între containere.",
- "usageTips.tip6.title": "Sfat 6 - Reordonează etichete:",
+ "usageTips.tip6.title": "Sfat 6 - Reordonează etichete",
"usageTips.tip6.detail": "Ține apăsată o etichetă, mut-o în poziția dorită.",
- "usageTips.tip7.title": "Sfat 7 - Reordonează aplicații:",
+ "usageTips.tip7.title": "Sfat 7 - Reordonează aplicații",
"usageTips.tip7.detail": "Ține apăsată o aplicație, mut-o în container.",
- "usageTips.tip8.title": "Sfat 8 - Editează notițe:",
+ "usageTips.tip8.title": "Sfat 8 - Editează notițe",
"usageTips.tip8.detail": "Click dreapta pe o aplicație, introdu o notiță."
}
diff --git a/src/Apptag/Localization/ru.json b/src/Apptag/Localization/ru.json
index a98c5ac..4f493d1 100644
--- a/src/Apptag/Localization/ru.json
+++ b/src/Apptag/Localization/ru.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Если включено, плавающие советы внизу сетки приложений будут скрыты.",
"usageTips.previous": "Предыдущий совет",
"usageTips.next": "Следующий совет",
- "usageTips.tip1.title": "Совет 1 — Добавить теги:",
+ "usageTips.tip1.title": "Совет 1 — Добавить теги",
"usageTips.tip1.detail": "Откройте Настройки, редактируйте теги.",
- "usageTips.tip2.title": "Совет 2 — Назначить теги:",
+ "usageTips.tip2.title": "Совет 2 — Назначить теги",
"usageTips.tip2.detail": "Удерживайте приложение, перетащите на тег.",
- "usageTips.tip3.title": "Совет 3 — Переместить приложения:",
+ "usageTips.tip3.title": "Совет 3 — Переместить приложения",
"usageTips.tip3.detail": "Удерживайте приложение, перетащите в контейнер.",
- "usageTips.tip4.title": "Совет 4 — Скопировать приложения:",
+ "usageTips.tip4.title": "Совет 4 — Скопировать приложения",
"usageTips.tip4.detail": "Удерживайте приложение, перетащите с Alt/Option в контейнер.",
- "usageTips.tip5.title": "Совет 5 — Удалить теги:",
+ "usageTips.tip5.title": "Совет 5 — Удалить теги",
"usageTips.tip5.detail": "Удерживайте приложение, перетащите между контейнерами.",
- "usageTips.tip6.title": "Совет 6 — Упорядочить теги:",
+ "usageTips.tip6.title": "Совет 6 — Упорядочить теги",
"usageTips.tip6.detail": "Удерживайте тег, перетащите в нужное место.",
- "usageTips.tip7.title": "Совет 7 — Упорядочить приложения:",
+ "usageTips.tip7.title": "Совет 7 — Упорядочить приложения",
"usageTips.tip7.detail": "Удерживайте приложение, перетащите внутри контейнера.",
- "usageTips.tip8.title": "Совет 8 — Редактировать заметки:",
+ "usageTips.tip8.title": "Совет 8 — Редактировать заметки",
"usageTips.tip8.detail": "Щелкните приложение правой кнопкой, введите заметку."
}
diff --git a/src/Apptag/Localization/sr-Cyrl.json b/src/Apptag/Localization/sr-Cyrl.json
index 6b1b114..71d4260 100644
--- a/src/Apptag/Localization/sr-Cyrl.json
+++ b/src/Apptag/Localization/sr-Cyrl.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Када је укључено, плутајући савети на дну мреже апликација су сакривени.",
"usageTips.previous": "Претходни савет",
"usageTips.next": "Следећи савет",
- "usageTips.tip1.title": "Савет 1 - Додај ознаке:",
+ "usageTips.tip1.title": "Савет 1 - Додај ознаке",
"usageTips.tip1.detail": "Отворите Подешавања, уредите ознаке.",
- "usageTips.tip2.title": "Савет 2 - Означи апликације:",
+ "usageTips.tip2.title": "Савет 2 - Означи апликације",
"usageTips.tip2.detail": "Држите апликацију, превуците је на ознаку.",
- "usageTips.tip3.title": "Савет 3 - Премести апликације:",
+ "usageTips.tip3.title": "Савет 3 - Премести апликације",
"usageTips.tip3.detail": "Држите апликацију, превуците је у контејнер.",
- "usageTips.tip4.title": "Савет 4 - Копирај апликације:",
+ "usageTips.tip4.title": "Савет 4 - Копирај апликације",
"usageTips.tip4.detail": "Држите апликацију, превуците је уз Alt/Option у контејнер.",
- "usageTips.tip5.title": "Савет 5 - Уклони ознаке:",
+ "usageTips.tip5.title": "Савет 5 - Уклони ознаке",
"usageTips.tip5.detail": "Држите апликацију, превуците је између контејнера.",
- "usageTips.tip6.title": "Савет 6 - Поређај ознаке:",
+ "usageTips.tip6.title": "Савет 6 - Поређај ознаке",
"usageTips.tip6.detail": "Држите ознаку, превуците је на жељено место.",
- "usageTips.tip7.title": "Савет 7 - Поређај апликације:",
+ "usageTips.tip7.title": "Савет 7 - Поређај апликације",
"usageTips.tip7.detail": "Држите апликацију, превуците је унутар контејнера.",
- "usageTips.tip8.title": "Савет 8 - Уреди белешке:",
+ "usageTips.tip8.title": "Савет 8 - Уреди белешке",
"usageTips.tip8.detail": "Кликните десним тастером на апликацију, унесите белешку."
}
diff --git a/src/Apptag/Localization/sv.json b/src/Apptag/Localization/sv.json
index 7bbda6f..80c79d5 100644
--- a/src/Apptag/Localization/sv.json
+++ b/src/Apptag/Localization/sv.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "När detta är aktiverat döljs de flytande tipsen längst ned i apprutnätet.",
"usageTips.previous": "Föregående tips",
"usageTips.next": "Nästa tips",
- "usageTips.tip1.title": "Tips 1 - Lägg till taggar:",
+ "usageTips.tip1.title": "Tips 1 - Lägg till taggar",
"usageTips.tip1.detail": "Öppna Inställningar, redigera taggar.",
- "usageTips.tip2.title": "Tips 2 - Tagga appar:",
+ "usageTips.tip2.title": "Tips 2 - Tagga appar",
"usageTips.tip2.detail": "Håll ned en app, släpp den på en tagg.",
- "usageTips.tip3.title": "Tips 3 - Flytta appar:",
+ "usageTips.tip3.title": "Tips 3 - Flytta appar",
"usageTips.tip3.detail": "Håll ned en app, släpp den i en container.",
- "usageTips.tip4.title": "Tips 4 - Kopiera appar:",
+ "usageTips.tip4.title": "Tips 4 - Kopiera appar",
"usageTips.tip4.detail": "Håll ned en app, Alt/Option-släpp den i en container.",
- "usageTips.tip5.title": "Tips 5 - Ta bort taggar:",
+ "usageTips.tip5.title": "Tips 5 - Ta bort taggar",
"usageTips.tip5.detail": "Håll ned en app, släpp den mellan containrar.",
- "usageTips.tip6.title": "Tips 6 - Sortera taggar:",
+ "usageTips.tip6.title": "Tips 6 - Sortera taggar",
"usageTips.tip6.detail": "Håll ned en tagg, flytta den till målpositionen.",
- "usageTips.tip7.title": "Tips 7 - Sortera appar:",
+ "usageTips.tip7.title": "Tips 7 - Sortera appar",
"usageTips.tip7.detail": "Håll ned en app, flytta den i containern.",
- "usageTips.tip8.title": "Tips 8 - Redigera anteckningar:",
+ "usageTips.tip8.title": "Tips 8 - Redigera anteckningar",
"usageTips.tip8.detail": "Högerklicka på en app, skriv en anteckning."
}
diff --git a/src/Apptag/Localization/th.json b/src/Apptag/Localization/th.json
index c16f04d..162f18c 100644
--- a/src/Apptag/Localization/th.json
+++ b/src/Apptag/Localization/th.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "เมื่อเปิดใช้ เคล็ดลับแบบลอยที่ด้านล่างของกริดแอปจะถูกซ่อน",
"usageTips.previous": "เคล็ดลับก่อนหน้า",
"usageTips.next": "เคล็ดลับถัดไป",
- "usageTips.tip1.title": "เคล็ดลับ 1 - เพิ่มแท็ก:",
+ "usageTips.tip1.title": "เคล็ดลับ 1 - เพิ่มแท็ก",
"usageTips.tip1.detail": "เปิดการตั้งค่า, แก้ไขแท็ก",
- "usageTips.tip2.title": "เคล็ดลับ 2 - ติดแท็กแอป:",
+ "usageTips.tip2.title": "เคล็ดลับ 2 - ติดแท็กแอป",
"usageTips.tip2.detail": "กดแอปค้างไว้, วางบนแท็ก",
- "usageTips.tip3.title": "เคล็ดลับ 3 - ย้ายแอป:",
+ "usageTips.tip3.title": "เคล็ดลับ 3 - ย้ายแอป",
"usageTips.tip3.detail": "กดแอปค้างไว้, วางในคอนเทนเนอร์",
- "usageTips.tip4.title": "เคล็ดลับ 4 - คัดลอกแอป:",
+ "usageTips.tip4.title": "เคล็ดลับ 4 - คัดลอกแอป",
"usageTips.tip4.detail": "กดแอปค้างไว้, กด Alt/Option แล้ววางในคอนเทนเนอร์",
- "usageTips.tip5.title": "เคล็ดลับ 5 - ลบแท็ก:",
+ "usageTips.tip5.title": "เคล็ดลับ 5 - ลบแท็ก",
"usageTips.tip5.detail": "กดแอปค้างไว้, วางระหว่างคอนเทนเนอร์",
- "usageTips.tip6.title": "เคล็ดลับ 6 - จัดลำดับแท็ก:",
+ "usageTips.tip6.title": "เคล็ดลับ 6 - จัดลำดับแท็ก",
"usageTips.tip6.detail": "กดแท็กค้างไว้, ลากไปยังตำแหน่งเป้าหมาย",
- "usageTips.tip7.title": "เคล็ดลับ 7 - จัดลำดับแอป:",
+ "usageTips.tip7.title": "เคล็ดลับ 7 - จัดลำดับแอป",
"usageTips.tip7.detail": "กดแอปค้างไว้, ลากภายในคอนเทนเนอร์",
- "usageTips.tip8.title": "เคล็ดลับ 8 - แก้ไขโน้ต:",
+ "usageTips.tip8.title": "เคล็ดลับ 8 - แก้ไขโน้ต",
"usageTips.tip8.detail": "คลิกขวาที่แอป, ป้อนโน้ต"
}
diff --git a/src/Apptag/Localization/tr.json b/src/Apptag/Localization/tr.json
index be25492..0fda9fb 100644
--- a/src/Apptag/Localization/tr.json
+++ b/src/Apptag/Localization/tr.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Etkinleştirildiğinde uygulama ızgarasının altındaki yüzen ipuçları gizlenir.",
"usageTips.previous": "Önceki ipucu",
"usageTips.next": "Sonraki ipucu",
- "usageTips.tip1.title": "İpucu 1 - Etiket ekle:",
+ "usageTips.tip1.title": "İpucu 1 - Etiket ekle",
"usageTips.tip1.detail": "Ayarları açın, etiketleri düzenleyin.",
- "usageTips.tip2.title": "İpucu 2 - Uygulamaları etiketle:",
+ "usageTips.tip2.title": "İpucu 2 - Uygulamaları etiketle",
"usageTips.tip2.detail": "Bir uygulamaya uzun basın, etikete bırakın.",
- "usageTips.tip3.title": "İpucu 3 - Uygulamaları taşı:",
+ "usageTips.tip3.title": "İpucu 3 - Uygulamaları taşı",
"usageTips.tip3.detail": "Bir uygulamaya uzun basın, kapsayıcıya bırakın.",
- "usageTips.tip4.title": "İpucu 4 - Uygulamaları kopyala:",
+ "usageTips.tip4.title": "İpucu 4 - Uygulamaları kopyala",
"usageTips.tip4.detail": "Bir uygulamaya uzun basın, Alt/Option ile kapsayıcıya bırakın.",
- "usageTips.tip5.title": "İpucu 5 - Etiketleri kaldır:",
+ "usageTips.tip5.title": "İpucu 5 - Etiketleri kaldır",
"usageTips.tip5.detail": "Bir uygulamaya uzun basın, kapsayıcılar arasına bırakın.",
- "usageTips.tip6.title": "İpucu 6 - Etiketleri sırala:",
+ "usageTips.tip6.title": "İpucu 6 - Etiketleri sırala",
"usageTips.tip6.detail": "Bir etikete uzun basın, hedef konuma taşıyın.",
- "usageTips.tip7.title": "İpucu 7 - Uygulamaları sırala:",
+ "usageTips.tip7.title": "İpucu 7 - Uygulamaları sırala",
"usageTips.tip7.detail": "Bir uygulamaya uzun basın, kapsayıcı içinde taşıyın.",
- "usageTips.tip8.title": "İpucu 8 - Notları düzenle:",
+ "usageTips.tip8.title": "İpucu 8 - Notları düzenle",
"usageTips.tip8.detail": "Bir uygulamaya sağ tıklayın, not girin."
}
diff --git a/src/Apptag/Localization/uk.json b/src/Apptag/Localization/uk.json
index a3efa13..fa6cd0a 100644
--- a/src/Apptag/Localization/uk.json
+++ b/src/Apptag/Localization/uk.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Якщо ввімкнено, плаваючі поради внизу сітки програм буде приховано.",
"usageTips.previous": "Попередня порада",
"usageTips.next": "Наступна порада",
- "usageTips.tip1.title": "Порада 1 — Додати теги:",
+ "usageTips.tip1.title": "Порада 1 — Додати теги",
"usageTips.tip1.detail": "Відкрийте Параметри, редагуйте теги.",
- "usageTips.tip2.title": "Порада 2 — Позначити програми:",
+ "usageTips.tip2.title": "Порада 2 — Позначити програми",
"usageTips.tip2.detail": "Утримуйте програму, перетягніть її на тег.",
- "usageTips.tip3.title": "Порада 3 — Перемістити програми:",
+ "usageTips.tip3.title": "Порада 3 — Перемістити програми",
"usageTips.tip3.detail": "Утримуйте програму, перетягніть її в контейнер.",
- "usageTips.tip4.title": "Порада 4 — Скопіювати програми:",
+ "usageTips.tip4.title": "Порада 4 — Скопіювати програми",
"usageTips.tip4.detail": "Утримуйте програму, перетягніть з Alt/Option у контейнер.",
- "usageTips.tip5.title": "Порада 5 — Видалити теги:",
+ "usageTips.tip5.title": "Порада 5 — Видалити теги",
"usageTips.tip5.detail": "Утримуйте програму, перетягніть між контейнерами.",
- "usageTips.tip6.title": "Порада 6 — Упорядкувати теги:",
+ "usageTips.tip6.title": "Порада 6 — Упорядкувати теги",
"usageTips.tip6.detail": "Утримуйте тег, перетягніть його в потрібне місце.",
- "usageTips.tip7.title": "Порада 7 — Упорядкувати програми:",
+ "usageTips.tip7.title": "Порада 7 — Упорядкувати програми",
"usageTips.tip7.detail": "Утримуйте програму, перетягніть її всередині контейнера.",
- "usageTips.tip8.title": "Порада 8 — Редагувати нотатки:",
+ "usageTips.tip8.title": "Порада 8 — Редагувати нотатки",
"usageTips.tip8.detail": "Клацніть програму правою кнопкою, введіть нотатку."
}
diff --git a/src/Apptag/Localization/vi.json b/src/Apptag/Localization/vi.json
index adfb563..4c32132 100644
--- a/src/Apptag/Localization/vi.json
+++ b/src/Apptag/Localization/vi.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "Khi bật, các mẹo nổi ở cuối lưới ứng dụng sẽ bị ẩn.",
"usageTips.previous": "Mẹo trước",
"usageTips.next": "Mẹo tiếp theo",
- "usageTips.tip1.title": "Mẹo 1 - Thêm thẻ:",
+ "usageTips.tip1.title": "Mẹo 1 - Thêm thẻ",
"usageTips.tip1.detail": "Mở Cài đặt, chỉnh sửa thẻ.",
- "usageTips.tip2.title": "Mẹo 2 - Gắn thẻ ứng dụng:",
+ "usageTips.tip2.title": "Mẹo 2 - Gắn thẻ ứng dụng",
"usageTips.tip2.detail": "Nhấn giữ ứng dụng, thả lên thẻ.",
- "usageTips.tip3.title": "Mẹo 3 - Di chuyển ứng dụng:",
+ "usageTips.tip3.title": "Mẹo 3 - Di chuyển ứng dụng",
"usageTips.tip3.detail": "Nhấn giữ ứng dụng, thả vào vùng chứa.",
- "usageTips.tip4.title": "Mẹo 4 - Sao chép ứng dụng:",
+ "usageTips.tip4.title": "Mẹo 4 - Sao chép ứng dụng",
"usageTips.tip4.detail": "Nhấn giữ ứng dụng, giữ Alt/Option rồi thả vào vùng chứa.",
- "usageTips.tip5.title": "Mẹo 5 - Gỡ thẻ:",
+ "usageTips.tip5.title": "Mẹo 5 - Gỡ thẻ",
"usageTips.tip5.detail": "Nhấn giữ ứng dụng, thả giữa các vùng chứa.",
- "usageTips.tip6.title": "Mẹo 6 - Sắp xếp thẻ:",
+ "usageTips.tip6.title": "Mẹo 6 - Sắp xếp thẻ",
"usageTips.tip6.detail": "Nhấn giữ thẻ, kéo đến vị trí đích.",
- "usageTips.tip7.title": "Mẹo 7 - Sắp xếp ứng dụng:",
+ "usageTips.tip7.title": "Mẹo 7 - Sắp xếp ứng dụng",
"usageTips.tip7.detail": "Nhấn giữ ứng dụng, kéo trong vùng chứa.",
- "usageTips.tip8.title": "Mẹo 8 - Chỉnh sửa ghi chú:",
+ "usageTips.tip8.title": "Mẹo 8 - Chỉnh sửa ghi chú",
"usageTips.tip8.detail": "Nhấp chuột phải vào ứng dụng, nhập ghi chú."
}
diff --git a/src/Apptag/Localization/zh-Hans.json b/src/Apptag/Localization/zh-Hans.json
index 22ddaee..ea2cb2b 100644
--- a/src/Apptag/Localization/zh-Hans.json
+++ b/src/Apptag/Localization/zh-Hans.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "开启后,应用网格底部的悬浮使用技巧将不再显示。",
"usageTips.previous": "上一条技巧",
"usageTips.next": "下一条技巧",
- "usageTips.tip1.title": "技巧1-添加标签:",
+ "usageTips.tip1.title": "技巧1-添加标签",
"usageTips.tip1.detail": "在设置 > 切换到“标签”即可编辑",
- "usageTips.tip2.title": "技巧2-打标签:",
+ "usageTips.tip2.title": "技巧2-打标签",
"usageTips.tip2.detail": "长按应用图标启动拖动 > 拖动到标签上是打标签",
- "usageTips.tip3.title": "技巧3-移动应用:",
+ "usageTips.tip3.title": "技巧3-移动应用",
"usageTips.tip3.detail": "长按应用图标启动拖动 > 直接拖动到容器是移动",
- "usageTips.tip4.title": "技巧4-复制应用:",
+ "usageTips.tip4.title": "技巧4-复制应用",
"usageTips.tip4.detail": "长按应用图标启动拖动 > 按住 Alt/Option 拖动到容器是复制",
- "usageTips.tip5.title": "技巧5-解除标签:",
+ "usageTips.tip5.title": "技巧5-解除标签",
"usageTips.tip5.detail": "长按应用图标启动拖动 > 拖动到容器间的空白处",
- "usageTips.tip6.title": "技巧6-标签排序:",
+ "usageTips.tip6.title": "技巧6-标签排序",
"usageTips.tip6.detail": "长按标签启动拖动 > 拖动到目标位置,放手即可",
- "usageTips.tip7.title": "技巧7-应用排序:",
+ "usageTips.tip7.title": "技巧7-应用排序",
"usageTips.tip7.detail": "长按应用图标启动拖动 > 拖动到容器内的目标位置,放手即可",
- "usageTips.tip8.title": "技巧8-编辑备注:",
+ "usageTips.tip8.title": "技巧8-编辑备注",
"usageTips.tip8.detail": "在应用上点击右键 > 输入内容"
}
diff --git a/src/Apptag/Localization/zh-Hant.json b/src/Apptag/Localization/zh-Hant.json
index 6ac7032..a3684d9 100644
--- a/src/Apptag/Localization/zh-Hant.json
+++ b/src/Apptag/Localization/zh-Hant.json
@@ -212,20 +212,20 @@
"settings.hideUsageTipsDesc": "開啟後,應用程式網格底部的浮動使用技巧將不再顯示。",
"usageTips.previous": "上一則技巧",
"usageTips.next": "下一則技巧",
- "usageTips.tip1.title": "技巧1-新增標籤:",
+ "usageTips.tip1.title": "技巧1-新增標籤",
"usageTips.tip1.detail": "在設定 > 切換到「標籤」即可編輯",
- "usageTips.tip2.title": "技巧2-套用標籤:",
+ "usageTips.tip2.title": "技巧2-套用標籤",
"usageTips.tip2.detail": "長按應用程式圖示開始拖曳 > 拖到標籤上即可套用標籤",
- "usageTips.tip3.title": "技巧3-移動應用:",
+ "usageTips.tip3.title": "技巧3-移動應用",
"usageTips.tip3.detail": "長按應用程式圖示開始拖曳 > 直接拖到容器即可移動",
- "usageTips.tip4.title": "技巧4-複製應用:",
+ "usageTips.tip4.title": "技巧4-複製應用",
"usageTips.tip4.detail": "長按應用程式圖示開始拖曳 > 按住 Alt/Option 拖到容器即可複製",
- "usageTips.tip5.title": "技巧5-解除標籤:",
+ "usageTips.tip5.title": "技巧5-解除標籤",
"usageTips.tip5.detail": "長按應用程式圖示開始拖曳 > 拖到容器之間的空白處",
- "usageTips.tip6.title": "技巧6-標籤排序:",
+ "usageTips.tip6.title": "技巧6-標籤排序",
"usageTips.tip6.detail": "長按標籤開始拖曳 > 拖到目標位置後放開",
- "usageTips.tip7.title": "技巧7-應用排序:",
+ "usageTips.tip7.title": "技巧7-應用排序",
"usageTips.tip7.detail": "長按應用程式圖示開始拖曳 > 拖到容器內目標位置後放開",
- "usageTips.tip8.title": "技巧8-編輯備註:",
+ "usageTips.tip8.title": "技巧8-編輯備註",
"usageTips.tip8.detail": "在應用程式上按右鍵 > 輸入內容"
}
diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md
index c8782d5..5d9c1c6 100644
--- a/src/CHANGELOG.md
+++ b/src/CHANGELOG.md
@@ -1,5 +1,14 @@
# TagLauncher Changelog
+## [7.9.3] — 2026-06-19
+
+- 修复 Apple 自带应用默认备注在切换语言后仍显示旧中文的问题;旧版本写入但缺少来源 metadata 的默认备注现在会按 bundle 精确匹配默认备注 fingerprint 后迁移为当前语言
+- 保护用户手写备注和手动清空备注:只有匹配 Apple 默认备注集合的旧数据才会被迁移,manual 备注不覆盖
+- 补齐当前系统内置 `com.apple.campo` / Siri 入口的 Apple 默认应用目录和 29 语种备注资源
+- 优化 App Grid 使用技巧标题:标题居中显示并删除 29 个语种标题末尾冒号
+- 增加 Apple 默认备注迁移 QA,覆盖旧中文默认备注、历史句号变体、Campo 资源完整性和手写备注保护
+- 版本号更新为 `7.9.3`,Build 更新为 `20260619.2142`
+
## [7.9.2] — 2026-06-17
- 恢复 App Grid 标签列表 hover 自动滚动:鼠标停到某个标签时会自动滚动到对应容器,点击标签仍保持立即滚动
diff --git a/src/Docs/Requirements/2026-06-19-apple-default-note-localization-qa.md b/src/Docs/Requirements/2026-06-19-apple-default-note-localization-qa.md
new file mode 100644
index 0000000..355c5a1
--- /dev/null
+++ b/src/Docs/Requirements/2026-06-19-apple-default-note-localization-qa.md
@@ -0,0 +1,34 @@
+# Apple 默认备注多语种迁移 QA 自查
+
+## 测试目标
+
+- 验证旧版本写入、但没有 metadata 的 Apple 默认备注可以迁移到当前语言。
+- 验证用户手写备注和手动清空备注不被覆盖。
+- 验证 Apple 默认应用资源在 29 个语种中完整,尤其补齐 `com.apple.campo`。
+- 验证本轮源码可以通过 macOS 14 typecheck、构建和签名检查。
+
+## 自动化结果
+
+| 检查项 | 命令 | 结果 |
+| --- | --- | --- |
+| 旧默认备注迁移 fixture | `bash Scripts/apple_default_note_migration_qa.sh` | PASS |
+| Apple 默认备注策略边界 | `bash Scripts/apple_default_note_policy_qa.sh` | PASS |
+| Apple 默认应用资源完整性 | `bash Scripts/apple_default_apps_resource_qa.sh` | PASS |
+| SmartStart 资源边界 | `bash Scripts/smartstart_catalog_resource_qa.sh` | PASS |
+| 使用技巧回归 | `bash Scripts/usage_tips_qa.sh` | PASS |
+| macOS 14 typecheck | `bash Scripts/macos14_availability_typecheck_qa.sh` | PASS |
+| 构建 | `APP_BUILD=20260619.2142 bash build.sh` | PASS |
+| 构建 metadata | `bash Scripts/macos14_build_metadata_qa.sh` | PASS |
+| 签名验证 | `codesign --verify --deep --strict --verbose=2 build/TagLauncher.app` | PASS |
+
+## 覆盖的关键场景
+
+- `com.apple.colorsyncutility` 的旧中文默认备注带历史句号 `。`,无 metadata,能被识别为 Apple 默认备注。
+- 同样的备注 fingerprint 只在同 bundle 范围内生效,不能跨 bundle 误匹配。
+- 用户追加内容后的中文备注不匹配 Apple 默认备注集合,不会被迁移。
+- `com.apple.campo` 在 base、translations 和每个 localization 文件中都存在。
+- 产物版本与源码版本一致:`7.9.3 / 20260619.2142`。
+
+## 结论
+
+本轮修复满足发布前自查要求。自动化未发现 Apple 默认备注迁移、资源完整性、macOS 14 构建 metadata 或签名问题。
diff --git a/src/Docs/Requirements/2026-06-19-apple-default-note-localization-todo.md b/src/Docs/Requirements/2026-06-19-apple-default-note-localization-todo.md
new file mode 100644
index 0000000..4695bd2
--- /dev/null
+++ b/src/Docs/Requirements/2026-06-19-apple-default-note-localization-todo.md
@@ -0,0 +1,34 @@
+# Apple 默认备注多语种迁移修复 TODO
+
+## 目标
+
+- 修复切换到非中文语言后,Apple 自带应用默认备注仍显示中文的问题。
+- 保护用户手写备注和手动清空备注,不因语言切换被覆盖。
+- 补齐当前系统扫描到但 Apple catalog 缺失的 `com.apple.campo`。
+- 补充自动化 QA,覆盖旧中文默认备注迁移、手动备注保护、资源完整性。
+
+## 范围
+
+- 修改 Apple 默认备注 catalog / 迁移 / 重本地化逻辑。
+- 修改 Apple 默认备注相关 QA。
+- 更新版本号与 changelog。
+- 不修改 App Grid 视觉、使用技巧交互、标签拖拽、SmartStart 分类策略。
+
+## TODO
+
+- [x] 读取现有 Apple 默认备注链路与用户库复现证据
+- [x] 补齐 `com.apple.campo` Apple catalog base/translations/29 语种 localizations
+- [x] 增加旧 Apple 默认备注识别与迁移逻辑
+- [x] 补充动态 QA:旧中文默认备注无 metadata 时能迁移到当前语言
+- [x] 补充 QA:手写备注与手动清空备注不被覆盖
+- [x] 跑资源 QA、Apple 默认备注策略 QA、SmartStart 边界 QA
+- [x] 跑 macOS 14 typecheck 与构建验证
+- [x] 更新 `CHANGELOG.md`、`Info.plist`
+- [x] 保存工作日志与最终 QA 证据
+
+## 完成标准
+
+- 旧版本持久化的 Apple 默认备注,即使没有 metadata,也能在语言切换或启动重本地化时迁移到当前语言。
+- 用户手写备注、手动清空备注和非 Apple 默认备注不被覆盖。
+- `com.apple.campo` 在 Apple 默认应用目录、translations 和 29 个语种 localizations 中完整存在。
+- `7.9.3 / 20260619.2142` 构建产物通过 macOS 14 metadata 和签名检查。
diff --git a/src/Docs/Requirements/2026-06-19-apple-default-note-localization-worklog.md b/src/Docs/Requirements/2026-06-19-apple-default-note-localization-worklog.md
new file mode 100644
index 0000000..69b0a50
--- /dev/null
+++ b/src/Docs/Requirements/2026-06-19-apple-default-note-localization-worklog.md
@@ -0,0 +1,67 @@
+# Apple 默认备注多语种迁移修复工作日志
+
+## 2026-06-19 21:30
+
+### 起点
+
+- 当前分支:`codex/appgrid-usage-tips`
+- 当前 HEAD:`50e354e Revert "Refine app grid material background"`
+- 当前源码版本:`7.9.2 / 20260617.2028`
+- 工作区存在历史脏文件与上一轮 usage tips 未提交改动;本轮只处理 Apple 默认备注相关文件、QA、版本和 changelog。
+
+### 根因结论
+
+- Apple 默认备注资源本身已有多语种,ColorSync 的阿拉伯语备注是阿拉伯语。
+- 气泡展示的是持久化 `TagDatabase.Store.appNotes[path]`,不是运行时 `tr()` 文案。
+- 旧版本写入了中文 Apple 默认备注,但没有 `appNoteMetadata.origin = appleDefault`。
+- 当前重本地化逻辑只覆盖 `.appleDefault` 且 fingerprint 匹配的记录,因此无 metadata 的旧中文默认备注会被当作可能的用户手写备注保留。
+
+### 本机复现证据
+
+- `/Users/ar/Library/Application Support/TagLauncher/tags.json`
+- `/System/Applications/Utilities/ColorSync Utility.app`
+ - note:`查看和修复色彩配置文件,处理显示和打印色差。`
+ - metadata:`None`
+
+### 设计原则
+
+- 不用“是否包含中文”判断旧默认备注,避免误伤用户手写中文。
+- 仅当当前备注 fingerprint 精确匹配同 bundle 的已知 Apple 默认备注集合时,才迁移为 `.appleDefault`。
+- `origin == manual` 和手动清空备注必须保留。
+- 迁移后写入当前语言的 Apple 默认备注,并更新 Apple provenance/fingerprint。
+
+## 2026-06-19 21:42
+
+### 已完成实现
+
+- `AppleDefaultAppCatalog.relocalizeDefaultNotesForCurrentLanguage` 增加旧默认备注识别:
+ - `.appleDefault` 继续要求当前 fingerprint 匹配 metadata,或匹配同 bundle 已知 Apple 默认备注集合。
+ - `.catalogDefault` / 无 metadata 只有在当前备注匹配同 bundle Apple 默认备注集合时才迁移。
+ - `.manual` 和手动清空备注保持跳过,不覆盖。
+- 迁移旧默认备注前调用 `TagDatabase.backup(originalStore, reason: "apple-default-note-migration")`。
+- 已知 Apple 默认备注集合包含 29 语种资源,并兼容历史句末 `.` / `。` 变体。
+- 补齐 `com.apple.campo`:
+ - `AppleDefaultApps.base.json`
+ - `AppleDefaultApps.translations.json`
+ - 29 个 `AppleDefaultApps.localizations.<lang>.json`
+ - `AppleDefaultApps.source.csv`
+- 新增 `Scripts/apple_default_note_migration_qa.sh`,并加固 `Scripts/apple_default_note_policy_qa.sh`。
+- 更新 `CHANGELOG.md` 与 `Apptag/Info.plist` 到 `7.9.3 / 20260619.2142`。
+
+### QA 自查
+
+- `bash Scripts/apple_default_note_migration_qa.sh`:PASS
+- `bash Scripts/apple_default_note_policy_qa.sh`:PASS
+- `bash Scripts/apple_default_apps_resource_qa.sh`:PASS
+- `bash Scripts/smartstart_catalog_resource_qa.sh`:PASS
+- `bash Scripts/usage_tips_qa.sh`:PASS
+- `bash Scripts/macos14_availability_typecheck_qa.sh`:PASS
+- `APP_BUILD=20260619.2142 bash build.sh`:PASS,生成 `/Users/ar/Projects/Taglauncher/src/build/TagLauncher.app`
+- `bash Scripts/macos14_build_metadata_qa.sh`:PASS
+- `codesign --verify --deep --strict --verbose=2 build/TagLauncher.app`:PASS
+
+### QA 结论
+
+- 本轮修复只按同 bundle 的 Apple 默认备注 fingerprint 迁移旧数据,不按中文字符判断。
+- Arabic 等非中文语言资源中 Apple 默认备注保持本地语言;旧中文默认备注会迁移到当前语言。
+- 用户手写备注和手动清空备注仍由 `.manual` metadata 保护,不会被本轮迁移覆盖。
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.base.json b/src/Research/AppleDefaultApps/AppleDefaultApps.base.json
index d2212a0..d1f7c51 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.base.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.base.json
@@ -1004,6 +1004,21 @@
]
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "normalizedName": "siri-campo",
+ "canonicalName": "Siri",
+ "defaultTag": [
+ "system"
+ ],
+ "familiar": false,
+ "aliases": [
+ "campo",
+ "Campo",
+ "siri",
+ "Siri"
+ ]
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"normalizedName": "stickies",
"canonicalName": "Stickies",
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ar-Najdi.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ar-Najdi.json
index 6be2432..3a6532c 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ar-Najdi.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ar-Najdi.json
@@ -370,6 +370,11 @@
"note": "مدخل مساعد صوتي، يمكنه التحقق من المعلومات، وفتح التطبيقات، والتحكم في النظام"
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "مدخل مساعد صوتي، يمكنه التحقق من المعلومات، وفتح التطبيقات، والتحكم في النظام"
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "الملصقات",
"note": "يتم نشر الملاحظات اللاصقة لسطح المكتب والملاحظات المؤقتة أمامك مباشرةً"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ar.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ar.json
index b4cc13a..de384f2 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ar.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ar.json
@@ -370,6 +370,11 @@
"note": "مدخل مساعد صوتي، يمكنه التحقق من المعلومات، وفتح التطبيقات، والتحكم في النظام"
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "مدخل مساعد صوتي، يمكنه التحقق من المعلومات، وفتح التطبيقات، والتحكم في النظام"
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "الملصقات",
"note": "يتم نشر الملاحظات اللاصقة لسطح المكتب والملاحظات المؤقتة أمامك مباشرةً"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.cs.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.cs.json
index b9404b5..2707428 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.cs.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.cs.json
@@ -370,6 +370,11 @@
"note": "Vstup hlasového asistenta, může kontrolovat informace."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Vstup hlasového asistenta, může kontrolovat informace."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Lístečky",
"note": "Lepicí poznámky na plochu, dočasné poznámky jsou zveřejněny přímo před vámi"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.da.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.da.json
index a6efad2..84af744 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.da.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.da.json
@@ -370,6 +370,11 @@
"note": "Stemmeassistent indgang, kan tjekke oplysninger, åbne apps og styre systemet"
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Stemmeassistent indgang, kan tjekke oplysninger, åbne apps og styre systemet"
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Huskesedler",
"note": "Sticky notes på skrivebordet, midlertidige noter er lagt op lige foran dig"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.de.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.de.json
index 412e1f2..44a987e 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.de.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.de.json
@@ -370,6 +370,11 @@
"note": "Sprachassistent-Eingang, kann Informationen überprüfen."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Sprachassistent-Eingang, kann Informationen überprüfen."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Notizzettel",
"note": "Haftnotizen für den Desktop und temporäre Notizen werden direkt vor."
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.en.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.en.json
index 67ab94a..6c8bc56 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.en.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.en.json
@@ -370,6 +370,11 @@
"note": "Voice assistant for search, app launch, and system control"
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Voice assistant for search, app launch, and system control"
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Stickies",
"note": "Desktop sticky notes for temporary reminders"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.es.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.es.json
index cab5600..871c1f3 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.es.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.es.json
@@ -370,6 +370,11 @@
"note": "Entrada de asistente de voz, puede verificar información."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Entrada de asistente de voz, puede verificar información."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Notas Adhesivas",
"note": "Notas adhesivas de escritorio."
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.fr.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.fr.json
index b6d346d..905ae71 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.fr.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.fr.json
@@ -370,6 +370,11 @@
"note": "Assistant vocal pour recherche, ouverture d'apps et réglages"
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Assistant vocal pour recherche, ouverture d'apps et réglages"
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Aide-mémoire",
"note": "Post-it de bureau pour rappels temporaires"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.id.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.id.json
index 82c6a5d..754e8df 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.id.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.id.json
@@ -370,6 +370,11 @@
"note": "Pintu masuk asisten suara, dapat memeriksa informasi, membuka aplikasi."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Pintu masuk asisten suara, dapat memeriksa informasi, membuka aplikasi."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Sticky",
"note": "Catatan tempel desktop, catatan sementara diposting tepat di depan Anda"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.it.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.it.json
index 6adb822..7a38453 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.it.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.it.json
@@ -370,6 +370,11 @@
"note": "Ingresso con assistente vocale, può verificare informazioni."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Ingresso con assistente vocale, può verificare informazioni."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Memo",
"note": "Note adesive sul desktop."
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ja.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ja.json
index 09a950b..f0de78b 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ja.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ja.json
@@ -370,6 +370,11 @@
"note": "検索、アプリ起動、システム操作に使う音声アシスタント"
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "検索、アプリ起動、システム操作に使う音声アシスタント"
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "スティッキーズ",
"note": "一時的なメモをデスクトップに貼れる付箋"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ko.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ko.json
index 6fca4c0..ea3c9df 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ko.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ko.json
@@ -370,6 +370,11 @@
"note": "음성비서 출입, 정보 확인, 앱 실행, 시스템 제어 가능"
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "음성비서 출입, 정보 확인, 앱 실행, 시스템 제어 가능"
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "스티커",
"note": "데스크탑 스티커 메모, 임시 메모가 바로 앞에 게시됩니다"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ms.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ms.json
index 1aa64ad..74af7ae 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ms.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ms.json
@@ -370,6 +370,11 @@
"note": "Pintu masuk pembantu suara, boleh menyemak maklumat."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Pintu masuk pembantu suara, boleh menyemak maklumat."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Nota Lekat",
"note": "Nota melekit desktop, nota sementara disiarkan betul-betul di hadapan anda"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nb.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nb.json
index 1b6cbbb..372acd6 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nb.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nb.json
@@ -370,6 +370,11 @@
"note": "Stemmeassistent inngang, kan sjekke informasjon."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Stemmeassistent inngang, kan sjekke informasjon."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Huskelapper",
"note": "Klistrelapper på skrivebordet, midlertidige notater er lagt ut rett foran deg"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nl.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nl.json
index 1005a10..f5afc25 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nl.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nl.json
@@ -370,6 +370,11 @@
"note": "Toegang met stemassistent, kan informatie controleren."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Toegang met stemassistent, kan informatie controleren."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Plaknotities",
"note": "Desktop sticky notes, temporary notes are posted right in front of you"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nn.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nn.json
index 5f28e3e..9ac8f19 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nn.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.nn.json
@@ -370,6 +370,11 @@
"note": "Stemmeassistent inngang, kan sjekke informasjon."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Stemmeassistent inngang, kan sjekke informasjon."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Huskelapper",
"note": "Klistrelapper på skrivebordet, midlertidige notater er lagt ut rett foran deg"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.no.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.no.json
index 86a5bc8..bbbb8f7 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.no.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.no.json
@@ -370,6 +370,11 @@
"note": "Stemmeassistent inngang, kan sjekke informasjon."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Stemmeassistent inngang, kan sjekke informasjon."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Huskelapper",
"note": "Klistrelapper på skrivebordet, midlertidige notater er lagt ut rett foran deg"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.pl.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.pl.json
index 70a153d..0d45241 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.pl.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.pl.json
@@ -370,6 +370,11 @@
"note": "Wejście asystenta głosowego, może sprawdzać informacje."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Wejście asystenta głosowego, może sprawdzać informacje."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Nalepki",
"note": "Notatki samoprzylepne na pulpicie."
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.pt-BR.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.pt-BR.json
index 3c26008..5f26d0c 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.pt-BR.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.pt-BR.json
@@ -370,6 +370,11 @@
"note": "Entrada do assistente de voz, pode verificar informaçõe."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Entrada do assistente de voz, pode verificar informaçõe."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Anotações",
"note": "Notas adesivas na área de trabalho."
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ro.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ro.json
index e6e5835..fe13e69 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ro.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ro.json
@@ -370,6 +370,11 @@
"note": "Intrarea asistentului vocal, poate verifica informații."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Intrarea asistentului vocal, poate verifica informații."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Note adezive",
"note": "Notele lipicioase de pe desktop."
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ru.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ru.json
index 5baa2ca..d89697c 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ru.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.ru.json
@@ -370,6 +370,11 @@
"note": "Вход с голосовым помощником, позволяющий проверять информацию."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Вход с голосовым помощником, позволяющий проверять информацию."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Записки",
"note": "Заметки на рабочем столе, временные заметки размещаются прямо перед вами"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.sr-Cyrl.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.sr-Cyrl.json
index 8c8321a..2897108 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.sr-Cyrl.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.sr-Cyrl.json
@@ -370,6 +370,11 @@
"note": "Улаз гласовног помоћника, може да проверава информације."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Улаз гласовног помоћника, може да проверава информације."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Stickies",
"note": "Лепљиве белешке за радну површину."
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.sv.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.sv.json
index ba4c37d..d34ce01 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.sv.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.sv.json
@@ -370,6 +370,11 @@
"note": "Röstassistent ingång, kan kontrollera information."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Röstassistent ingång, kan kontrollera information."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Kom-ihåg-lappar",
"note": "Skrivbordslappar, tillfälliga anteckningar läggs upp precis framför dig"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.th.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.th.json
index aeb3d16..41294b2 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.th.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.th.json
@@ -370,6 +370,11 @@
"note": "ทางเข้าระบบสั่งงานด้วยเสียง สามารถตรวจสอบข้อมูล เปิดแอพ และควบคุมระบบได้"
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "ทางเข้าระบบสั่งงานด้วยเสียง สามารถตรวจสอบข้อมูล เปิดแอพ และควบคุมระบบได้"
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "โน้ตแปะ",
"note": "กระดาษโน้ตบนเดสก์ท็อป กระดาษโน้ตชั่วคราวจะติดไว้ตรงหน้าคุณ"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.tr.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.tr.json
index e2c6bb8..2e87aaf 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.tr.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.tr.json
@@ -370,6 +370,11 @@
"note": "Sesli asistan girişi, bilgileri kontrol edebilir."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Sesli asistan girişi, bilgileri kontrol edebilir."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Yapışkan Notlar",
"note": "Masaüstü yapışkan notlar, geçici notlar hemen önünüze gönderilir"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.uk.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.uk.json
index 7e86efe..054bc2e 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.uk.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.uk.json
@@ -370,6 +370,11 @@
"note": "Вхід голосового помічника, який може перевіряти інформацію."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Вхід голосового помічника, який може перевіряти інформацію."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Наліпки",
"note": "Настільні наліпки, тимчасові замітки розклеєні прямо перед вами"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.vi.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.vi.json
index 0162cc8..cd6d104 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.vi.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.vi.json
@@ -370,6 +370,11 @@
"note": "Lối vào trợ lý giọng nói, có thể kiểm tra thông tin."
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "Lối vào trợ lý giọng nói, có thể kiểm tra thông tin."
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "Giấy ghi chú",
"note": "Ghi chú dán trên màn hình, ghi chú tạm thời được dán ngay trước mặt bạn"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.zh-Hans.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.zh-Hans.json
index 3aab62c..03f2b31 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.zh-Hans.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.zh-Hans.json
@@ -370,6 +370,11 @@
"note": "语音助手入口,能查信息、开 App、控制系统"
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "语音助手入口,能查信息、开 App、控制系统"
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "便笺",
"note": "桌面便利贴,临时记事就贴在眼前"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.zh-Hant.json b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.zh-Hant.json
index 3f8ffcb..449f7a9 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.zh-Hant.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.localizations.zh-Hant.json
@@ -370,6 +370,11 @@
"note": "語音助手入口,能查信息、開 App、控制系統"
},
{
+ "bundleIdentifier": "com.apple.campo",
+ "displayName": "Siri",
+ "note": "語音助手入口,能查信息、開 App、控制系統"
+ },
+ {
"bundleIdentifier": "com.apple.stickies",
"displayName": "便條紙",
"note": "桌面便利貼,臨時記事就貼在眼前"
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.source.csv b/src/Research/AppleDefaultApps/AppleDefaultApps.source.csv
index 8e0018d..e394b57 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.source.csv
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.source.csv
@@ -72,6 +72,7 @@
sf-symbols,ui-prototyping,com.apple.sfsymbols,Apple 官方符号库,做原生界面必备
shortcuts,Automation,com.apple.shortcuts,把多个动作串成一键流程,是现代版 Automator
siri,system,com.apple.siri.launcher,语音助手入口,能查信息、开 App、控制系统
+siri-campo,system,com.apple.campo,语音助手入口,能查信息、开 App、控制系统
stickies,Notes,com.apple.stickies,桌面便利贴,临时记事就贴在眼前
stocks,finance,com.apple.stocks,看股票和市场动态的小面板
system-information,device-management,com.apple.systemprofiler,查看硬件、软件和设备详情,查配置最准确
diff --git a/src/Research/AppleDefaultApps/AppleDefaultApps.translations.json b/src/Research/AppleDefaultApps/AppleDefaultApps.translations.json
index 4fd971e..5962a55 100644
--- a/src/Research/AppleDefaultApps/AppleDefaultApps.translations.json
+++ b/src/Research/AppleDefaultApps/AppleDefaultApps.translations.json
@@ -125,7 +125,8 @@
"ios-app-installer": "iOS App安装器",
"keychain-access": "钥匙串访问",
"ticket-viewer": "票据显示程序",
- "wireless-diagnostics": "无线诊断"
+ "wireless-diagnostics": "无线诊断",
+ "siri-campo": "Siri"
},
"zh-Hant": {
"finder": "Finder",
@@ -216,7 +217,8 @@
"ios-app-installer": "iOS App安裝程式",
"keychain-access": "鑰匙圈存取",
"ticket-viewer": "票券檢視程式",
- "wireless-diagnostics": "無線診斷"
+ "wireless-diagnostics": "無線診斷",
+ "siri-campo": "Siri"
},
"en": {
"finder": "Finder",
@@ -307,7 +309,8 @@
"ios-app-installer": "iOS App Installer",
"keychain-access": "Keychain Access",
"ticket-viewer": "Ticket Viewer",
- "wireless-diagnostics": "Wireless Diagnostics"
+ "wireless-diagnostics": "Wireless Diagnostics",
+ "siri-campo": "Siri"
},
"fr": {
"finder": "Finder",
@@ -398,7 +401,8 @@
"ios-app-installer": "Programme d’installation d’apps iOS",
"keychain-access": "Trousseaux d’accès",
"ticket-viewer": "Visualiseur de ticket",
- "wireless-diagnostics": "Diagnostics sans fil"
+ "wireless-diagnostics": "Diagnostics sans fil",
+ "siri-campo": "Siri"
},
"it": {
"finder": "Finder",
@@ -489,7 +493,8 @@
"ios-app-installer": "Installer App iOS",
"keychain-access": "Accesso Portachiavi",
"ticket-viewer": "Visore Ticket",
- "wireless-diagnostics": "Diagnosi Wireless"
+ "wireless-diagnostics": "Diagnosi Wireless",
+ "siri-campo": "Siri"
},
"de": {
"finder": "Finder",
@@ -580,7 +585,8 @@
"ios-app-installer": "iOS-App-Installationsprogramm",
"keychain-access": "Schlüsselbundverwaltung",
"ticket-viewer": "Ticket-Viewer",
- "wireless-diagnostics": "Diagnose für drahtlose Umgebungen"
+ "wireless-diagnostics": "Diagnose für drahtlose Umgebungen",
+ "siri-campo": "Siri"
},
"es": {
"finder": "Finder",
@@ -671,7 +677,8 @@
"ios-app-installer": "Instalador de Apps de iOS",
"keychain-access": "Acceso a Llaveros",
"ticket-viewer": "Visor de Tiques",
- "wireless-diagnostics": "Diagnóstico Inalámbrico"
+ "wireless-diagnostics": "Diagnóstico Inalámbrico",
+ "siri-campo": "Siri"
},
"pt-BR": {
"finder": "Finder",
@@ -762,7 +769,8 @@
"ios-app-installer": "Instalador de Apps para iOS",
"keychain-access": "Acesso às Chaves",
"ticket-viewer": "Visualizador de Tíquetes",
- "wireless-diagnostics": "Diagnóstico da Rede Sem Fio"
+ "wireless-diagnostics": "Diagnóstico da Rede Sem Fio",
+ "siri-campo": "Siri"
},
"ko": {
"finder": "Finder",
@@ -853,7 +861,8 @@
"ios-app-installer": "iOS 앱 설치 프로그램",
"keychain-access": "키체인 접근",
"ticket-viewer": "티켓 뷰어",
- "wireless-diagnostics": "무선 진단"
+ "wireless-diagnostics": "무선 진단",
+ "siri-campo": "Siri"
},
"ja": {
"finder": "Finder",
@@ -944,7 +953,8 @@
"ios-app-installer": "iOSアプリインストーラ",
"keychain-access": "キーチェーンアクセス",
"ticket-viewer": "チケットビューア",
- "wireless-diagnostics": "ワイヤレス診断"
+ "wireless-diagnostics": "ワイヤレス診断",
+ "siri-campo": "Siri"
},
"ru": {
"finder": "Finder",
@@ -1035,7 +1045,8 @@
"ios-app-installer": "Установщик iOS-приложений",
"keychain-access": "Связка ключей",
"ticket-viewer": "Просмотр билетов",
- "wireless-diagnostics": "Беспроводная диагностика"
+ "wireless-diagnostics": "Беспроводная диагностика",
+ "siri-campo": "Siri"
},
"sr-Cyrl": {
"finder": "Finder",
@@ -1126,7 +1137,8 @@
"ios-app-installer": "iOS App Installer",
"keychain-access": "Keychain Access",
"ticket-viewer": "Ticket Viewer",
- "wireless-diagnostics": "Wireless Diagnostics"
+ "wireless-diagnostics": "Wireless Diagnostics",
+ "siri-campo": "Siri"
},
"uk": {
"finder": "Finder",
@@ -1217,7 +1229,8 @@
"ios-app-installer": "Інсталятор програм iOS",
"keychain-access": "Ключар",
"ticket-viewer": "Переглядач квитків",
- "wireless-diagnostics": "Діагностика бездротових мереж"
+ "wireless-diagnostics": "Діагностика бездротових мереж",
+ "siri-campo": "Siri"
},
"th": {
"finder": "Finder",
@@ -1308,7 +1321,8 @@
"ios-app-installer": "ตัวติดตั้งแอป iOS",
"keychain-access": "การเข้าถึงพวงกุญแจ",
"ticket-viewer": "ตัวดูตั๋ว",
- "wireless-diagnostics": "การวินิจฉัยระบบไร้สาย"
+ "wireless-diagnostics": "การวินิจฉัยระบบไร้สาย",
+ "siri-campo": "Siri"
},
"vi": {
"finder": "Finder",
@@ -1399,7 +1413,8 @@
"ios-app-installer": "Trình cài đặt ứng dụng iOS",
"keychain-access": "Truy cập chuỗi khóa",
"ticket-viewer": "Trình xem Vé",
- "wireless-diagnostics": "Chẩn đoán không dây"
+ "wireless-diagnostics": "Chẩn đoán không dây",
+ "siri-campo": "Siri"
},
"ar": {
"finder": "فايندر",
@@ -1490,7 +1505,8 @@
"ios-app-installer": "مثبِّت تطبيق iOS",
"keychain-access": "الوصول إلى سلسلة المفاتيح",
"ticket-viewer": "عارض التذاكر",
- "wireless-diagnostics": "تشخيصات الشبكة اللاسلكية"
+ "wireless-diagnostics": "تشخيصات الشبكة اللاسلكية",
+ "siri-campo": "Siri"
},
"ar-Najdi": {
"finder": "فايندر",
@@ -1581,7 +1597,8 @@
"ios-app-installer": "مثبِّت تطبيق iOS",
"keychain-access": "الوصول إلى سلسلة المفاتيح",
"ticket-viewer": "عارض التذاكر",
- "wireless-diagnostics": "تشخيصات الشبكة اللاسلكية"
+ "wireless-diagnostics": "تشخيصات الشبكة اللاسلكية",
+ "siri-campo": "Siri"
},
"tr": {
"finder": "Finder",
@@ -1672,7 +1689,8 @@
"ios-app-installer": "iOS Uygulaması Yükleyici",
"keychain-access": "Anahtar Zinciri Erişimi",
"ticket-viewer": "Bilet Görüntüleyici",
- "wireless-diagnostics": "Kablosuz Ağ Tanıları"
+ "wireless-diagnostics": "Kablosuz Ağ Tanıları",
+ "siri-campo": "Siri"
},
"id": {
"finder": "Finder",
@@ -1763,7 +1781,8 @@
"ios-app-installer": "Penginstal App iOS",
"keychain-access": "Akses Rantai Kunci",
"ticket-viewer": "Penampil Tiket",
- "wireless-diagnostics": "Diagnostik Nirkabel"
+ "wireless-diagnostics": "Diagnostik Nirkabel",
+ "siri-campo": "Siri"
},
"cs": {
"finder": "Finder",
@@ -1854,7 +1873,8 @@
"ios-app-installer": "Instalátor aplikací pro iOS",
"keychain-access": "Klíčenka",
"ticket-viewer": "Prohlížeč lístků",
- "wireless-diagnostics": "Diagnostika bezdrátové sítě"
+ "wireless-diagnostics": "Diagnostika bezdrátové sítě",
+ "siri-campo": "Siri"
},
"da": {
"finder": "Finder",
@@ -1945,7 +1965,8 @@
"ios-app-installer": "Installering af iOS-apps",
"keychain-access": "Hovednøglering",
"ticket-viewer": "Billetfremviser",
- "wireless-diagnostics": "Trådløs diagnostik"
+ "wireless-diagnostics": "Trådløs diagnostik",
+ "siri-campo": "Siri"
},
"nl": {
"finder": "Finder",
@@ -2036,7 +2057,8 @@
"ios-app-installer": "iOS-appinstallatieprogramma",
"keychain-access": "Sleutelhangertoegang",
"ticket-viewer": "Ticketviewer",
- "wireless-diagnostics": "Wifiprobleemoplossing"
+ "wireless-diagnostics": "Wifiprobleemoplossing",
+ "siri-campo": "Siri"
},
"no": {
"finder": "Finder",
@@ -2127,7 +2149,8 @@
"ios-app-installer": "Appinstallerer for iOS",
"keychain-access": "Nøkkelringtilgang",
"ticket-viewer": "Billettvisning",
- "wireless-diagnostics": "Wi-Fi-diagnostikk"
+ "wireless-diagnostics": "Wi-Fi-diagnostikk",
+ "siri-campo": "Siri"
},
"nn": {
"finder": "Finder",
@@ -2218,7 +2241,8 @@
"ios-app-installer": "Appinstallerer for iOS",
"keychain-access": "Nøkkelringtilgang",
"ticket-viewer": "Billettvisning",
- "wireless-diagnostics": "Wi-Fi-diagnostikk"
+ "wireless-diagnostics": "Wi-Fi-diagnostikk",
+ "siri-campo": "Siri"
},
"nb": {
"finder": "Finder",
@@ -2309,7 +2333,8 @@
"ios-app-installer": "Appinstallerer for iOS",
"keychain-access": "Nøkkelringtilgang",
"ticket-viewer": "Billettvisning",
- "wireless-diagnostics": "Wi-Fi-diagnostikk"
+ "wireless-diagnostics": "Wi-Fi-diagnostikk",
+ "siri-campo": "Siri"
},
"ms": {
"finder": "Finder",
@@ -2400,7 +2425,8 @@
"ios-app-installer": "Pemasang App iOS",
"keychain-access": "Akses Rantai Kunci",
"ticket-viewer": "Pemapar Tiket",
- "wireless-diagnostics": "Diagnostik Wayarles"
+ "wireless-diagnostics": "Diagnostik Wayarles",
+ "siri-campo": "Siri"
},
"pl": {
"finder": "Finder",
@@ -2491,7 +2517,8 @@
"ios-app-installer": "Instalator aplikacji iOS",
"keychain-access": "Dostęp do pęku kluczy",
"ticket-viewer": "Podgląd biletów",
- "wireless-diagnostics": "Diagnostyka sieci bezprzewodowej"
+ "wireless-diagnostics": "Diagnostyka sieci bezprzewodowej",
+ "siri-campo": "Siri"
},
"ro": {
"finder": "Finder",
@@ -2582,7 +2609,8 @@
"ios-app-installer": "Program de instalare aplicații iOS",
"keychain-access": "Acces portchei",
"ticket-viewer": "Observator tichet",
- "wireless-diagnostics": "Diagnoză wireless"
+ "wireless-diagnostics": "Diagnoză wireless",
+ "siri-campo": "Siri"
},
"sv": {
"finder": "Finder",
@@ -2673,7 +2701,8 @@
"ios-app-installer": "iOS-appinstallerare",
"keychain-access": "Nyckelhanterare",
"ticket-viewer": "Biljettvisare",
- "wireless-diagnostics": "Trådlös diagnos"
+ "wireless-diagnostics": "Trådlös diagnos",
+ "siri-campo": "Siri"
}
},
"notesByLanguage": {
@@ -2766,7 +2795,8 @@
"ios-app-installer": "安装 iOS App 包的系统辅助工具",
"keychain-access": "管理密码、证书、密钥和安全项目",
"ticket-viewer": "查看 Kerberos 票据和身份验证状态",
- "wireless-diagnostics": "诊断 Wi-Fi 问题并生成无线报告"
+ "wireless-diagnostics": "诊断 Wi-Fi 问题并生成无线报告",
+ "siri-campo": "语音助手入口,能查信息、开 App、控制系统"
},
"zh-Hant": {
"finder": "macOS 系統自帶工具,適合完成對應的系統管理或日常操作",
@@ -2857,7 +2887,8 @@
"ios-app-installer": "安裝 iOS App 套件的系統輔助工具",
"keychain-access": "管理密碼、憑證、密鑰和安全項目",
"ticket-viewer": "查看 Kerberos 票券和驗證狀態",
- "wireless-diagnostics": "診斷 Wi-Fi 問題並產生無線報告"
+ "wireless-diagnostics": "診斷 Wi-Fi 問題並產生無線報告",
+ "siri-campo": "語音助手入口,能查信息、開 App、控制系統"
},
"en": {
"finder": "Manage files, folders, disks, and connected devices on Mac",
@@ -2948,7 +2979,8 @@
"ios-app-installer": "Install iOS app packages with a system helper",
"keychain-access": "Manage passwords, certificates, keys, and secure items",
"ticket-viewer": "View Kerberos tickets and authentication status",
- "wireless-diagnostics": "Diagnose Wi-Fi issues and create wireless reports"
+ "wireless-diagnostics": "Diagnose Wi-Fi issues and create wireless reports",
+ "siri-campo": "Voice assistant for search, app launch, and system control"
},
"fr": {
"finder": "Gère fichiers, dossiers, disques et appareils connectés au Mac",
@@ -3039,7 +3071,8 @@
"ios-app-installer": "Installe des paquets d’apps iOS avec l’outil système",
"keychain-access": "Gère mots de passe, certificats, clés et éléments sûrs",
"ticket-viewer": "Affiche les tickets Kerberos et l’état d’authentification",
- "wireless-diagnostics": "Diagnostique le Wi-Fi et crée des rapports sans fil"
+ "wireless-diagnostics": "Diagnostique le Wi-Fi et crée des rapports sans fil",
+ "siri-campo": "Assistant vocal pour recherche, ouverture d'apps et réglages"
},
"it": {
"finder": "Il sistema macOS è dotato di strumenti adatti per completare la.",
@@ -3130,7 +3163,8 @@
"ios-app-installer": "Installa pacchetti di app iOS con lo strumento di sistema",
"keychain-access": "Gestisce password, certificati, chiavi ed elementi sicuri",
"ticket-viewer": "Mostra ticket Kerberos e stato di autenticazione",
- "wireless-diagnostics": "Diagnostica il Wi-Fi e crea report wireless"
+ "wireless-diagnostics": "Diagnostica il Wi-Fi e crea report wireless",
+ "siri-campo": "Ingresso con assistente vocale, può verificare informazioni."
},
"de": {
"finder": "Dateimanager des Mac für Ordner, Laufwerke und Geräte",
@@ -3221,7 +3255,8 @@
"ios-app-installer": "Installiert iOS-App-Pakete mit einem Systemhelfer",
"keychain-access": "Verwaltet Passwörter, Zertifikate, Schlüssel und sichere Objekte",
"ticket-viewer": "Zeigt Kerberos-Tickets und den Anmeldestatus",
- "wireless-diagnostics": "Diagnostiziert WLAN-Probleme und erstellt Berichte"
+ "wireless-diagnostics": "Diagnostiziert WLAN-Probleme und erstellt Berichte",
+ "siri-campo": "Sprachassistent-Eingang, kann Informationen überprüfen."
},
"es": {
"finder": "El sistema macOS viene con herramientas adecuadas para completar la.",
@@ -3312,7 +3347,8 @@
"ios-app-installer": "Instala paquetes de apps iOS con una ayuda del sistema",
"keychain-access": "Gestiona contraseñas, certificados, claves y elementos seguros",
"ticket-viewer": "Muestra tickets Kerberos y estado de autenticación",
- "wireless-diagnostics": "Diagnostica Wi-Fi y crea informes inalámbricos"
+ "wireless-diagnostics": "Diagnostica Wi-Fi y crea informes inalámbricos",
+ "siri-campo": "Entrada de asistente de voz, puede verificar información."
},
"pt-BR": {
"finder": "O sistema macOS vem com ferramentas adequadas para concluir o.",
@@ -3403,7 +3439,8 @@
"ios-app-installer": "Instala pacotes de apps iOS com ajuda do sistema",
"keychain-access": "Gerencia senhas, certificados, chaves e itens seguros",
"ticket-viewer": "Mostra tíquetes Kerberos e estado de autenticação",
- "wireless-diagnostics": "Diagnostica Wi-Fi e cria relatórios sem fio"
+ "wireless-diagnostics": "Diagnostica Wi-Fi e cria relatórios sem fio",
+ "siri-campo": "Entrada do assistente de voz, pode verificar informaçõe."
},
"ko": {
"finder": "macOS 시스템에는 해당 시스템 관리 또는 일상 작업을 완료하는 데 적합한 도구가 함께 제공됩니다",
@@ -3494,7 +3531,8 @@
"ios-app-installer": "iOS 앱 패키지를 설치하는 시스템 도구입니다",
"keychain-access": "암호, 인증서, 키와 보안 항목을 관리합니다",
"ticket-viewer": "Kerberos 티켓과 인증 상태를 확인합니다",
- "wireless-diagnostics": "Wi-Fi 문제를 진단하고 무선 보고서를 만듭니다"
+ "wireless-diagnostics": "Wi-Fi 문제를 진단하고 무선 보고서를 만듭니다",
+ "siri-campo": "음성비서 출입, 정보 확인, 앱 실행, 시스템 제어 가능"
},
"ja": {
"finder": "Macのファイル、フォルダ、ディスク、接続デバイスを管理",
@@ -3585,7 +3623,8 @@
"ios-app-installer": "iOS Appパッケージをインストールするシステム補助ツール",
"keychain-access": "パスワード、証明書、鍵、安全項目を管理",
"ticket-viewer": "Kerberosチケットと認証状態を確認",
- "wireless-diagnostics": "Wi-Fi問題を診断し、無線レポートを作成"
+ "wireless-diagnostics": "Wi-Fi問題を診断し、無線レポートを作成",
+ "siri-campo": "検索、アプリ起動、システム操作に使う音声アシスタント"
},
"ru": {
"finder": "Система macOS поставляется с инструментами.",
@@ -3676,7 +3715,8 @@
"ios-app-installer": "Устанавливает пакеты приложений iOS системным помощником",
"keychain-access": "Управляет паролями, сертификатами, ключами и защищенными объектами",
"ticket-viewer": "Показывает билеты Kerberos и состояние аутентификации",
- "wireless-diagnostics": "Диагностирует Wi-Fi и создает отчеты о сети"
+ "wireless-diagnostics": "Диагностирует Wi-Fi и создает отчеты о сети",
+ "siri-campo": "Вход с голосовым помощником, позволяющий проверять информацию."
},
"sr-Cyrl": {
"finder": "МацОС систем долази са алаткама.",
@@ -3767,7 +3807,8 @@
"ios-app-installer": "Инсталира iOS пакете апликација системским алатом",
"keychain-access": "Управља лозинкама, сертификатима, кључевима и безбедним ставкама",
"ticket-viewer": "Приказује Kerberos тикете и стање аутентификације",
- "wireless-diagnostics": "Дијагностикује Wi-Fi и прави бежичне извештаје"
+ "wireless-diagnostics": "Дијагностикује Wi-Fi и прави бежичне извештаје",
+ "siri-campo": "Улаз гласовног помоћника, може да проверава информације."
},
"uk": {
"finder": "Система macOS постачається з інструментами.",
@@ -3858,7 +3899,8 @@
"ios-app-installer": "Встановлює пакети iOS App системним помічником",
"keychain-access": "Керує паролями, сертифікатами, ключами та захищеними об’єктами",
"ticket-viewer": "Показує квитки Kerberos і стан автентифікації",
- "wireless-diagnostics": "Діагностує Wi-Fi і створює бездротові звіти"
+ "wireless-diagnostics": "Діагностує Wi-Fi і створює бездротові звіти",
+ "siri-campo": "Вхід голосового помічника, який може перевіряти інформацію."
},
"th": {
"finder": "ระบบ macOS มาพร้อมกับเครื่องมือที่เหมาะสำหรับการจัดการระบบที่เกี่ยวข้องห",
@@ -3949,7 +3991,8 @@
"ios-app-installer": "ติดตั้งแพ็กเกจแอป iOS ด้วยเครื่องมือระบบ",
"keychain-access": "จัดการรหัสผ่าน ใบรับรอง กุญแจ และรายการปลอดภัย",
"ticket-viewer": "ดูตั๋ว Kerberos และสถานะการตรวจสอบสิทธิ์",
- "wireless-diagnostics": "วินิจฉัย Wi-Fi และสร้างรายงานไร้สาย"
+ "wireless-diagnostics": "วินิจฉัย Wi-Fi และสร้างรายงานไร้สาย",
+ "siri-campo": "ทางเข้าระบบสั่งงานด้วยเสียง สามารถตรวจสอบข้อมูล เปิดแอพ และควบคุมระบบได้"
},
"vi": {
"finder": "Hệ thống macOS đi kèm với các công cụ phù hợp để hoàn thành việc quản.",
@@ -4040,7 +4083,8 @@
"ios-app-installer": "Cài gói ứng dụng iOS bằng công cụ hệ thống",
"keychain-access": "Quản lý mật khẩu, chứng chỉ, khóa và mục bảo mật",
"ticket-viewer": "Xem vé Kerberos và trạng thái xác thực",
- "wireless-diagnostics": "Chẩn đoán Wi-Fi và tạo báo cáo không dây"
+ "wireless-diagnostics": "Chẩn đoán Wi-Fi và tạo báo cáo không dây",
+ "siri-campo": "Lối vào trợ lý giọng nói, có thể kiểm tra thông tin."
},
"ar": {
"finder": "يأتي نظام macOS مزودًا بأدوات مناسبة لإكمال إدارة النظام المقابلة أو.",
@@ -4131,7 +4175,8 @@
"ios-app-installer": "يثبت حزم تطبيقات iOS بأداة النظام",
"keychain-access": "يدير كلمات السر والشهادات والمفاتيح والعناصر الآمنة",
"ticket-viewer": "يعرض تذاكر Kerberos وحالة المصادقة",
- "wireless-diagnostics": "يشخص مشاكل Wi-Fi وينشئ تقارير لاسلكية"
+ "wireless-diagnostics": "يشخص مشاكل Wi-Fi وينشئ تقارير لاسلكية",
+ "siri-campo": "مدخل مساعد صوتي، يمكنه التحقق من المعلومات، وفتح التطبيقات، والتحكم في النظام"
},
"ar-Najdi": {
"finder": "يأتي نظام macOS مزودًا بأدوات مناسبة لإكمال إدارة النظام المقابلة أو.",
@@ -4222,7 +4267,8 @@
"ios-app-installer": "يثبت حزم تطبيقات iOS بأداة النظام",
"keychain-access": "يدير كلمات السر والشهادات والمفاتيح والعناصر الآمنة",
"ticket-viewer": "يعرض تذاكر Kerberos وحالة المصادقة",
- "wireless-diagnostics": "يشخص مشاكل Wi-Fi وينشئ تقارير لاسلكية"
+ "wireless-diagnostics": "يشخص مشاكل Wi-Fi وينشئ تقارير لاسلكية",
+ "siri-campo": "مدخل مساعد صوتي، يمكنه التحقق من المعلومات، وفتح التطبيقات، والتحكم في النظام"
},
"tr": {
"finder": "MacOS sistemi, ilgili sistem yönetimini veya günlük işlemleri.",
@@ -4313,7 +4359,8 @@
"ios-app-installer": "iOS uygulama paketlerini sistem aracıyla yükler",
"keychain-access": "Parolaları, sertifikaları, anahtarları ve güvenli öğeleri yönetir",
"ticket-viewer": "Kerberos biletlerini ve kimlik doğrulama durumunu gösterir",
- "wireless-diagnostics": "Wi-Fi sorunlarını tanılar ve kablosuz rapor oluşturur"
+ "wireless-diagnostics": "Wi-Fi sorunlarını tanılar ve kablosuz rapor oluşturur",
+ "siri-campo": "Sesli asistan girişi, bilgileri kontrol edebilir."
},
"id": {
"finder": "Sistem macOS dilengkapi dengan alat yang cocok untuk menyelesaikan.",
@@ -4404,7 +4451,8 @@
"ios-app-installer": "Menginstal paket app iOS dengan alat sistem",
"keychain-access": "Mengelola kata sandi, sertifikat, kunci, dan item aman",
"ticket-viewer": "Melihat tiket Kerberos dan status autentikasi",
- "wireless-diagnostics": "Mendiagnosis Wi-Fi dan membuat laporan nirkabel"
+ "wireless-diagnostics": "Mendiagnosis Wi-Fi dan membuat laporan nirkabel",
+ "siri-campo": "Pintu masuk asisten suara, dapat memeriksa informasi, membuka aplikasi."
},
"cs": {
"finder": "Systém macOS je dodáván s nástroji vhodnými pro dokončení odpovídající.",
@@ -4495,7 +4543,8 @@
"ios-app-installer": "Instaluje balíčky aplikací iOS systémovým nástrojem",
"keychain-access": "Spravuje hesla, certifikáty, klíče a zabezpečené položky",
"ticket-viewer": "Zobrazí lístky Kerberos a stav ověření",
- "wireless-diagnostics": "Diagnostikuje Wi-Fi a vytváří bezdrátové zprávy"
+ "wireless-diagnostics": "Diagnostikuje Wi-Fi a vytváří bezdrátové zprávy",
+ "siri-campo": "Vstup hlasového asistenta, může kontrolovat informace."
},
"da": {
"finder": "MacOS-systemet leveres med værktøjer.",
@@ -4586,7 +4635,8 @@
"ios-app-installer": "Installerer iOS-app-pakker med et systemværktøj",
"keychain-access": "Administrerer adgangskoder, certifikater, nøgler og sikre emner",
"ticket-viewer": "Viser Kerberos-billetter og godkendelsesstatus",
- "wireless-diagnostics": "Diagnosticerer Wi-Fi og opretter trådløse rapporter"
+ "wireless-diagnostics": "Diagnosticerer Wi-Fi og opretter trådløse rapporter",
+ "siri-campo": "Stemmeassistent indgang, kan tjekke oplysninger, åbne apps og styre systemet"
},
"nl": {
"finder": "Mac-bestandsbeheer voor mappen, schijven en apparaten",
@@ -4677,7 +4727,8 @@
"ios-app-installer": "Installeert iOS-app-pakketten met een systeemhulp",
"keychain-access": "Beheert wachtwoorden, certificaten, sleutels en beveiligde items",
"ticket-viewer": "Toont Kerberos-tickets en authenticatiestatus",
- "wireless-diagnostics": "Diagnosticeert wifi en maakt draadloze rapporten"
+ "wireless-diagnostics": "Diagnosticeert wifi en maakt draadloze rapporten",
+ "siri-campo": "Toegang met stemassistent, kan informatie controleren."
},
"no": {
"finder": "MacOS-systemet kommer med verktøy.",
@@ -4768,7 +4819,8 @@
"ios-app-installer": "Installerer iOS-app-pakker med systemverktøy",
"keychain-access": "Administrerer passord, sertifikater, nøkler og sikre objekter",
"ticket-viewer": "Viser Kerberos-billetter og autentiseringsstatus",
- "wireless-diagnostics": "Diagnostiserer Wi-Fi og lager trådløse rapporter"
+ "wireless-diagnostics": "Diagnostiserer Wi-Fi og lager trådløse rapporter",
+ "siri-campo": "Stemmeassistent inngang, kan sjekke informasjon."
},
"nn": {
"finder": "MacOS-systemet kommer med verktøy.",
@@ -4859,7 +4911,8 @@
"ios-app-installer": "Installerer iOS-app-pakkar med systemverktøy",
"keychain-access": "Handterer passord, sertifikat, nøklar og sikre objekt",
"ticket-viewer": "Viser Kerberos-billettar og autentiseringsstatus",
- "wireless-diagnostics": "Diagnostiserer Wi-Fi og lagar trådlause rapportar"
+ "wireless-diagnostics": "Diagnostiserer Wi-Fi og lagar trådlause rapportar",
+ "siri-campo": "Stemmeassistent inngang, kan sjekke informasjon."
},
"nb": {
"finder": "MacOS-systemet kommer med verktøy.",
@@ -4950,7 +5003,8 @@
"ios-app-installer": "Installerer iOS-app-pakker med systemverktøy",
"keychain-access": "Administrerer passord, sertifikater, nøkler og sikre objekter",
"ticket-viewer": "Viser Kerberos-billetter og autentiseringsstatus",
- "wireless-diagnostics": "Diagnostiserer Wi-Fi og lager trådløse rapporter"
+ "wireless-diagnostics": "Diagnostiserer Wi-Fi og lager trådløse rapporter",
+ "siri-campo": "Stemmeassistent inngang, kan sjekke informasjon."
},
"ms": {
"finder": "Sistem macOS disertakan dengan alatan.",
@@ -5041,7 +5095,8 @@
"ios-app-installer": "Memasang pakej app iOS dengan alat sistem",
"keychain-access": "Mengurus kata laluan, sijil, kunci dan item selamat",
"ticket-viewer": "Melihat tiket Kerberos dan status pengesahan",
- "wireless-diagnostics": "Mendiagnosis Wi-Fi dan mencipta laporan wayarles"
+ "wireless-diagnostics": "Mendiagnosis Wi-Fi dan mencipta laporan wayarles",
+ "siri-campo": "Pintu masuk pembantu suara, boleh menyemak maklumat."
},
"pl": {
"finder": "System macOS jest wyposażony w narzędzia odpowiednie do odpowiedniego.",
@@ -5132,7 +5187,8 @@
"ios-app-installer": "Instaluje pakiety aplikacji iOS narzędziem systemowym",
"keychain-access": "Zarządza hasłami, certyfikatami, kluczami i bezpiecznymi elementami",
"ticket-viewer": "Pokazuje bilety Kerberos i stan uwierzytelnienia",
- "wireless-diagnostics": "Diagnozuje Wi-Fi i tworzy raporty sieci bezprzewodowej"
+ "wireless-diagnostics": "Diagnozuje Wi-Fi i tworzy raporty sieci bezprzewodowej",
+ "siri-campo": "Wejście asystenta głosowego, może sprawdzać informacje."
},
"ro": {
"finder": "Sistemul macOS vine cu instrumente.",
@@ -5223,7 +5279,8 @@
"ios-app-installer": "Instalează pachete de aplicații iOS cu instrumentul sistem",
"keychain-access": "Gestionează parole, certificate, chei și elemente sigure",
"ticket-viewer": "Afișează tichete Kerberos și starea autentificării",
- "wireless-diagnostics": "Diagnostichează Wi-Fi și creează rapoarte wireless"
+ "wireless-diagnostics": "Diagnostichează Wi-Fi și creează rapoarte wireless",
+ "siri-campo": "Intrarea asistentului vocal, poate verifica informații."
},
"sv": {
"finder": "MacOS-systemet levereras med verktyg.",
@@ -5314,7 +5371,8 @@
"ios-app-installer": "Installerar iOS-apppaket med ett systemverktyg",
"keychain-access": "Hanterar lösenord, certifikat, nycklar och säkra objekt",
"ticket-viewer": "Visar Kerberos-biljetter och autentiseringsstatus",
- "wireless-diagnostics": "Diagnostiserar Wi-Fi och skapar trådlösa rapporter"
+ "wireless-diagnostics": "Diagnostiserar Wi-Fi och skapar trådlösa rapporter",
+ "siri-campo": "Röstassistent ingång, kan kontrollera information."
}
}
}
diff --git a/src/Scripts/apple_default_note_migration_qa.sh b/src/Scripts/apple_default_note_migration_qa.sh
new file mode 100755
index 0000000..ce592d8
--- /dev/null
+++ b/src/Scripts/apple_default_note_migration_qa.sh
@@ -0,0 +1,169 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
+APPLE_DIR="$ROOT_DIR/Research/AppleDefaultApps"
+APPLE_CATALOG_SWIFT="$ROOT_DIR/Apptag/AppleDefaultAppCatalog.swift"
+
+fail() {
+ printf 'FAIL: %s\n' "$*" >&2
+ exit 1
+}
+
+[[ -f "$APPLE_DIR/AppleDefaultApps.base.json" ]] || fail "missing AppleDefaultApps.base.json"
+[[ -f "$APPLE_DIR/AppleDefaultApps.translations.json" ]] || fail "missing AppleDefaultApps.translations.json"
+[[ -f "$APPLE_CATALOG_SWIFT" ]] || fail "missing AppleDefaultAppCatalog.swift"
+
+python3 - "$ROOT_DIR" <<'PY'
+import json
+import pathlib
+import sys
+
+root = pathlib.Path(sys.argv[1])
+apple_dir = root / "Research" / "AppleDefaultApps"
+
+def fail(message: str) -> None:
+ print(f"FAIL: {message}", file=sys.stderr)
+ sys.exit(1)
+
+def load_json(path: pathlib.Path):
+ try:
+ return json.loads(path.read_text(encoding="utf-8"))
+ except Exception as error:
+ fail(f"{path.name} is not valid JSON: {error}")
+
+def normalized_note(value, limit):
+ if not isinstance(value, str):
+ return None
+ normalized = value.strip()[:limit]
+ return normalized or None
+
+def note_fingerprint(value: str, limit: int = 80) -> str:
+ normalized = value.strip()[:limit]
+ hash_value = 0xCBF29CE484222325
+ for byte in normalized.encode("utf-8"):
+ hash_value ^= byte
+ hash_value = (hash_value * 0x100000001B3) & 0xFFFFFFFFFFFFFFFF
+ return f"{hash_value:016x}"
+
+def strip_sentence_punctuation(value: str) -> str:
+ punctuation = ".。.!!??"
+ result = value.strip()
+ while result and result[-1] in punctuation:
+ result = result[:-1]
+ return result
+
+def legacy_variants(note: str, limit: int) -> list[str]:
+ trimmed = note.strip()[:limit]
+ if not trimmed:
+ return []
+ variants = [trimmed]
+ stripped = strip_sentence_punctuation(trimmed)
+ if stripped != trimmed:
+ variants.append(stripped)
+ for suffix in [".", "。"]:
+ punctuated = (stripped + suffix)[:limit]
+ if punctuated:
+ variants.append(punctuated)
+ seen = set()
+ result = []
+ for variant in variants:
+ if variant not in seen:
+ seen.add(variant)
+ result.append(variant)
+ return result
+
+base = load_json(apple_dir / "AppleDefaultApps.base.json")
+translations = load_json(apple_dir / "AppleDefaultApps.translations.json")
+languages = base.get("supportedLanguages", [])
+note_limit = int(base.get("noteLimit", 80))
+entries = base.get("entries", [])
+bundle_ids = {entry.get("bundleIdentifier") for entry in entries}
+normalized_names = {entry.get("normalizedName") for entry in entries}
+
+for bundle in ["com.apple.colorsyncutility", "com.apple.campo", "com.apple.siri.launcher"]:
+ if bundle not in bundle_ids:
+ fail(f"Apple base is missing {bundle}")
+
+if "siri-campo" not in normalized_names:
+ fail("Apple base is missing normalizedName siri-campo")
+
+for section_name in ["displayNamesByLanguage", "notesByLanguage"]:
+ section = translations.get(section_name)
+ if not isinstance(section, dict):
+ fail(f"Apple translations missing {section_name}")
+ for language in languages:
+ values = section.get(language)
+ if not isinstance(values, dict):
+ fail(f"Apple translations missing {section_name}.{language}")
+ if not values.get("siri-campo"):
+ fail(f"Apple translations missing {section_name}.{language}.siri-campo")
+
+localizations = {}
+for language in languages:
+ path = apple_dir / f"AppleDefaultApps.localizations.{language}.json"
+ catalog = load_json(path)
+ localizations[language] = {
+ item["bundleIdentifier"]: item
+ for item in catalog.get("entries", [])
+ if isinstance(item, dict) and isinstance(item.get("bundleIdentifier"), str)
+ }
+ for bundle in ["com.apple.campo", "com.apple.siri.launcher"]:
+ if bundle not in localizations[language]:
+ fail(f"{path.name} is missing {bundle}")
+
+colorsync_bundle = "com.apple.colorsyncutility"
+zh_colorsync = localizations["zh-Hans"].get(colorsync_bundle)
+ar_colorsync = localizations["ar"].get(colorsync_bundle)
+if not zh_colorsync or not ar_colorsync:
+ fail("ColorSync localization fixture is incomplete")
+
+zh_default_note = normalized_note(zh_colorsync.get("note"), note_limit)
+ar_default_note = normalized_note(ar_colorsync.get("note"), note_limit)
+if not zh_default_note or not ar_default_note:
+ fail("ColorSync default note fixture is empty")
+if zh_default_note == ar_default_note:
+ fail("ColorSync Arabic note must not equal zh-Hans note")
+
+known_fingerprints_by_bundle = {}
+for bundle in bundle_ids:
+ fingerprints = set()
+ for language in languages:
+ item = localizations[language].get(bundle)
+ if not item:
+ continue
+ note = normalized_note(item.get("note"), note_limit)
+ if not note:
+ continue
+ for variant in legacy_variants(note, note_limit):
+ fingerprints.add(note_fingerprint(variant, note_limit))
+ known_fingerprints_by_bundle[bundle] = fingerprints
+
+legacy_zh_note_with_period = zh_default_note + "。"
+if note_fingerprint(legacy_zh_note_with_period, note_limit) not in known_fingerprints_by_bundle[colorsync_bundle]:
+ fail("legacy zh-Hans ColorSync note with historical period must match known Apple defaults")
+
+manual_chinese_note = zh_default_note + " 我自己加的备注"
+if note_fingerprint(manual_chinese_note, note_limit) in known_fingerprints_by_bundle[colorsync_bundle]:
+ fail("manual note extending the Apple default must not match Apple default fingerprints")
+
+wrong_bundle = "com.apple.siri.launcher"
+if note_fingerprint(legacy_zh_note_with_period, note_limit) in known_fingerprints_by_bundle[wrong_bundle]:
+ fail("Apple default note matching must be scoped by bundle identifier")
+
+print(
+ "PASS Apple default note migration fixture: "
+ "legacy no-metadata defaults can migrate, manual notes stay protected, Campo is complete"
+)
+PY
+
+rg -Fq 'noteMatchesKnownDefault(' "$APPLE_CATALOG_SWIFT" \
+ || fail "AppleDefaultAppCatalog must match legacy notes against known Apple defaults"
+rg -Fq 'legacyDefaultNoteVariants' "$APPLE_CATALOG_SWIFT" \
+ || fail "AppleDefaultAppCatalog must include historical punctuation variants"
+rg -Fq 'metadata?.origin == .manual' "$APPLE_CATALOG_SWIFT" \
+ || fail "AppleDefaultAppCatalog must protect manual notes"
+rg -Fq 'apple-default-note-migration' "$APPLE_CATALOG_SWIFT" \
+ || fail "AppleDefaultAppCatalog must back up before adopting legacy default notes"
+
+printf 'PASS Apple default note migration runtime guardrails\n'
diff --git a/src/Scripts/apple_default_note_policy_qa.sh b/src/Scripts/apple_default_note_policy_qa.sh
index f0fee54..11d215a 100755
--- a/src/Scripts/apple_default_note_policy_qa.sh
+++ b/src/Scripts/apple_default_note_policy_qa.sh
@@ -36,10 +36,16 @@
fail "Apple default note seeding must not call SmartStartService.defaultNote(for:)"
fi
-rg -Fq 'metadata.origin == .appleDefault' "$APPLE_CATALOG_SWIFT" \
- || fail "Apple relocalization must only touch appleDefault notes"
+rg -Fq 'case .some(.appleDefault)' "$APPLE_CATALOG_SWIFT" \
+ || fail "Apple relocalization must have an explicit appleDefault path"
rg -Fq 'expectedFingerprint == currentFingerprint' "$APPLE_CATALOG_SWIFT" \
|| fail "Apple relocalization must require fingerprint match before overwrite"
+rg -Fq 'noteMatchesKnownDefault(' "$APPLE_CATALOG_SWIFT" \
+ || fail "Apple relocalization must adopt legacy default notes by exact known-default fingerprint"
+rg -Fq 'legacyDefaultNoteVariants' "$APPLE_CATALOG_SWIFT" \
+ || fail "Apple relocalization must include historical default-note punctuation variants"
+rg -Fq 'apple-default-note-migration' "$APPLE_CATALOG_SWIFT" \
+ || fail "Apple relocalization must back up before adopting legacy no-metadata notes"
rg -Fq 'origin: .appleDefault' "$APPLE_CATALOG_SWIFT" \
|| fail "Apple relocalization must preserve appleDefault metadata"
diff --git a/src/Scripts/usage_tips_qa.sh b/src/Scripts/usage_tips_qa.sh
index 0cc9281..e663d6f 100755
--- a/src/Scripts/usage_tips_qa.sh
+++ b/src/Scripts/usage_tips_qa.sh
@@ -108,7 +108,7 @@
if re.search(r"static\s+let\s+maxWidth\s*:\s*CGFloat", app_grid):
fail("Usage tips HUD must not use a hard maximum width that truncates localized titles")
require(
- r"fullTitleWidth\s*=\s*ceil\s*\(\s*titleLabel\.attributedStringValue\.size\(\)\.width\s*\)",
+ r"let\s+titleWidth\s*=\s*ceil\s*\(\s*titleLabel\.attributedStringValue\.size\(\)\.width\s*\)",
app_grid,
"Usage tips layout must measure the localized title width instead of using a fixed title column",
)
@@ -116,6 +116,16 @@
r"configureLabel\s*\(\s*titleLabel\s*,\s*font\s*:\s*titleFont\s*,\s*lineBreakMode\s*:\s*\.byClipping\s*\)",
app_grid,
"Usage tip titles must not use tail truncation ellipses",
+)
+require(
+ r"let\s+titleWidth\s*=\s*availableTextWidth",
+ app_grid,
+ "Usage tip title label must span the text column so centered titles are visually centered",
+)
+require(
+ r"configureLabel\s*\(_\s+label\s*:\s*NSTextField,\s*font\s*:\s*NSFont,\s*lineBreakMode\s*:\s*NSLineBreakMode\s*\)\s*\{(?P<body>.*?)label\.alignment\s*=\s*\.center",
+ app_grid,
+ "Usage tip title labels must be horizontally centered",
)
if re.search(r"configureLabel\s*\(\s*titleLabel\s*,\s*font\s*:\s*titleFont\s*,\s*lineBreakMode\s*:\s*\.byTruncatingTail\s*\)", app_grid):
fail("Usage tip titles must not be configured with byTruncatingTail")
@@ -453,6 +463,10 @@
missing = [key for key in required_keys if not data.get(key)]
if missing:
fail(f"{path.name} missing usage tip localization keys: {', '.join(missing)}")
+ for tip_index in range(1, 9):
+ title = data[f"usageTips.tip{tip_index}.title"]
+ if re.search(r"\s*[::]\s*$", title):
+ fail(f"{path.name} usageTips.tip{tip_index}.title must not end with a colon")
if path.stem not in {"zh-Hans", "zh-Hant"}:
for tip_index in range(1, 9):
detail = data[f"usageTips.tip{tip_index}.detail"]
--
Gitblit v1.9.3