mirror of
https://github.com/mastodon/mastodon-ios.git
synced 2025-02-02 18:36:44 +01:00
Merge branch 'develop' into release/1.0.6
This commit is contained in:
commit
5ae1af62d8
54
Localization/Intents.stringsdict
Normal file
54
Localization/Intents.stringsdict
Normal file
@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>There are ${count} options matching ‘${content}’. - 2</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>There are %#@count_option@ matching ‘${content}’.</string>
|
||||
<key>count_option</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>%ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 options</string>
|
||||
<key>one</key>
|
||||
<string>1 option</string>
|
||||
<key>two</key>
|
||||
<string>2 options</string>
|
||||
<key>few</key>
|
||||
<string>%ld options</string>
|
||||
<key>many</key>
|
||||
<string>%ld options</string>
|
||||
<key>other</key>
|
||||
<string>%ld options</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>There are ${count} options matching ‘${visibility}’.</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>There are %#@count_option@ matching ‘${visibility}’.</string>
|
||||
<key>count_option</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>%ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 options</string>
|
||||
<key>one</key>
|
||||
<string>1 option</string>
|
||||
<key>two</key>
|
||||
<string>2 options</string>
|
||||
<key>few</key>
|
||||
<string>%ld options</string>
|
||||
<key>many</key>
|
||||
<string>%ld options</string>
|
||||
<key>other</key>
|
||||
<string>%ld options</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
@ -454,14 +454,12 @@
|
||||
"Everything": "Everything",
|
||||
"Mentions": "Mentions"
|
||||
},
|
||||
"action": {
|
||||
"follow": "followed you",
|
||||
"favourite": "favorited your post",
|
||||
"reblog": "reblogged your post",
|
||||
"poll": "Your poll has ended",
|
||||
"mention": "mentioned you",
|
||||
"follow_request": "requested to follow you"
|
||||
},
|
||||
"user_followed_you": "%s followed you",
|
||||
"user_favorited your post": "%s favorited your post",
|
||||
"user_reblogged_your_post": "%s reblogged your post",
|
||||
"user_mentioned_you": "%s mentioned you",
|
||||
"user_requested_to_follow_you": "%s requested to follow you",
|
||||
"user_your_poll_has_ended": "%s Your poll has ended",
|
||||
"keyobard": {
|
||||
"show_everything": "Show Everything",
|
||||
"show_mentions": "Show Mentions"
|
||||
|
@ -420,6 +420,8 @@
|
||||
DBA1DB80268F84F80052DB59 /* NotificationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA1DB7F268F84F80052DB59 /* NotificationType.swift */; };
|
||||
DBA465932696B495002B41DB /* APIService+WebFinger.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA465922696B495002B41DB /* APIService+WebFinger.swift */; };
|
||||
DBA465952696E387002B41DB /* AppPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA465942696E387002B41DB /* AppPreference.swift */; };
|
||||
DBA4B0F626C269880077136E /* Intents.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DBA4B0F926C269880077136E /* Intents.stringsdict */; };
|
||||
DBA4B0F726C269880077136E /* Intents.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DBA4B0F926C269880077136E /* Intents.stringsdict */; };
|
||||
DBA5E7A3263AD0A3004598BB /* PhotoLibraryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA5E7A2263AD0A3004598BB /* PhotoLibraryService.swift */; };
|
||||
DBA5E7A5263BD28C004598BB /* ContextMenuImagePreviewViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA5E7A4263BD28C004598BB /* ContextMenuImagePreviewViewModel.swift */; };
|
||||
DBA5E7A9263BD3A4004598BB /* ContextMenuImagePreviewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA5E7A8263BD3A4004598BB /* ContextMenuImagePreviewViewController.swift */; };
|
||||
@ -920,7 +922,6 @@
|
||||
CD92E0F10BDE4FE7C4B999F2 /* Pods_MastodonTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MastodonTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D7D7CF93E262178800077512 /* Pods-Mastodon-AppShared.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-AppShared.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon-AppShared/Pods-Mastodon-AppShared.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
DB0009A826AEE5DC009B9D2D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.intentdefinition; name = Base; path = Base.lproj/Intents.intentdefinition; sourceTree = "<group>"; };
|
||||
DB0009AB26AEE5E3009B9D2D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Intents.strings; sourceTree = "<group>"; };
|
||||
DB0009AD26AEE5E4009B9D2D /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Intents.strings; sourceTree = "<group>"; };
|
||||
DB0140CE25C42AEE00F9F3CF /* OSLog.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OSLog.swift; sourceTree = "<group>"; };
|
||||
DB023294267F0AB800031745 /* ASMetaEditableTextNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ASMetaEditableTextNode.swift; sourceTree = "<group>"; };
|
||||
@ -1192,6 +1193,8 @@
|
||||
DBA4B0ED26C153B10077136E /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = nl; path = nl.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
|
||||
DBA4B0EE26C153B20077136E /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
DBA4B0EF26C153B20077136E /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
DBA4B0F526C2621D0077136E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Intents.strings; sourceTree = "<group>"; };
|
||||
DBA4B0F826C269880077136E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Intents.stringsdict; sourceTree = "<group>"; };
|
||||
DBA5E7A2263AD0A3004598BB /* PhotoLibraryService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoLibraryService.swift; sourceTree = "<group>"; };
|
||||
DBA5E7A4263BD28C004598BB /* ContextMenuImagePreviewViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextMenuImagePreviewViewModel.swift; sourceTree = "<group>"; };
|
||||
DBA5E7A8263BD3A4004598BB /* ContextMenuImagePreviewViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextMenuImagePreviewViewController.swift; sourceTree = "<group>"; };
|
||||
@ -2633,6 +2636,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DB0009A926AEE5DC009B9D2D /* Intents.intentdefinition */,
|
||||
DBA4B0F926C269880077136E /* Intents.stringsdict */,
|
||||
DB8FABD626AEC864008E5AF4 /* MastodonIntent.entitlements */,
|
||||
DB8FABC926AEC7B2008E5AF4 /* IntentHandler.swift */,
|
||||
DBB8AB4526AECDE200F6D281 /* SendPostIntentHandler.swift */,
|
||||
@ -3401,6 +3405,7 @@
|
||||
DB3D100D25BAA75E00EAA174 /* Localizable.strings in Resources */,
|
||||
DB427DDF25BAA00100D1B89D /* Assets.xcassets in Resources */,
|
||||
DB427DDD25BAA00100D1B89D /* Main.storyboard in Resources */,
|
||||
DBA4B0F626C269880077136E /* Intents.stringsdict in Resources */,
|
||||
DB118A8225E4B6E600FAB162 /* Preview Assets.xcassets in Resources */,
|
||||
DB2B3ABC25E37E15007045F9 /* InfoPlist.strings in Resources */,
|
||||
DB68A05D25E9055900CFDF14 /* Settings.bundle in Resources */,
|
||||
@ -3446,6 +3451,7 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DBA4B0F726C269880077136E /* Intents.stringsdict in Resources */,
|
||||
DBB8AB4F26AED13F00F6D281 /* Assets.xcassets in Resources */,
|
||||
DBB8AB5126AED14600F6D281 /* Localizable.strings in Resources */,
|
||||
DBB8AB5026AED14400F6D281 /* Localizable.stringsdict in Resources */,
|
||||
@ -4337,7 +4343,6 @@
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
DB0009A826AEE5DC009B9D2D /* Base */,
|
||||
DB0009AB26AEE5E3009B9D2D /* en */,
|
||||
DB0009AD26AEE5E4009B9D2D /* ar */,
|
||||
E9AABD3D26B64B8C00E237DA /* ja */,
|
||||
DBA4B0D326BD10AC0077136E /* zh-Hans */,
|
||||
@ -4347,6 +4352,7 @@
|
||||
DBA4B0E326BD11D10077136E /* es-419 */,
|
||||
DBA4B0E826C153820077136E /* de */,
|
||||
DBA4B0EC26C153B10077136E /* nl */,
|
||||
DBA4B0F526C2621D0077136E /* en */,
|
||||
);
|
||||
name = Intents.intentdefinition;
|
||||
sourceTree = "<group>";
|
||||
@ -4418,6 +4424,14 @@
|
||||
name = Localizable.stringsdict;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DBA4B0F926C269880077136E /* Intents.stringsdict */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
DBA4B0F826C269880077136E /* en */,
|
||||
);
|
||||
name = Intents.stringsdict;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DBC6461626A170AB00B0E31B /* MainInterface.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
@ -5701,7 +5715,7 @@
|
||||
repositoryURL = "https://github.com/TwidereProject/MetaTextKit.git";
|
||||
requirement = {
|
||||
kind = exactVersion;
|
||||
version = 2.1.0;
|
||||
version = 2.1.1;
|
||||
};
|
||||
};
|
||||
DB0E2D2C26833FF600865C3C /* XCRemoteSwiftPackageReference "Nuke-FLAnimatedImage-Plugin" */ = {
|
||||
|
@ -96,8 +96,8 @@
|
||||
"repositoryURL": "https://github.com/TwidereProject/MetaTextKit.git",
|
||||
"state": {
|
||||
"branch": null,
|
||||
"revision": "ccb54189b31d13868d979c33d43566912b765bbd",
|
||||
"version": "2.1.0"
|
||||
"revision": "a5f412b72fc08cd1348e2388fc7ec326365e1823",
|
||||
"version": "2.1.1"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -68,23 +68,37 @@ extension NotificationSection {
|
||||
.store(in: &cell.disposeBag)
|
||||
|
||||
// configure author name, notification description, timestamp
|
||||
let nameText = notification.account.displayNameWithFallback
|
||||
let titleLabelText = "\(nameText) \(notification.notificationType.actionText)"
|
||||
|
||||
do {
|
||||
let mastodonContent = MastodonContent(content: notification.account.displayNameWithFallback, emojis: notification.account.emojiMeta)
|
||||
let nameContent = MastodonContent(content: nameText, emojis: notification.account.emojiMeta)
|
||||
let nameMetaContent = try MastodonMetaContent.convert(document: nameContent)
|
||||
|
||||
let mastodonContent = MastodonContent(content: titleLabelText, emojis: notification.account.emojiMeta)
|
||||
let metaContent = try MastodonMetaContent.convert(document: mastodonContent)
|
||||
cell.nameLabel.configure(content: metaContent)
|
||||
|
||||
cell.titleLabel.configure(content: metaContent)
|
||||
|
||||
if let nameRange = metaContent.string.range(of: nameMetaContent.string) {
|
||||
let nsRange = NSRange(nameRange, in: metaContent.string)
|
||||
cell.titleLabel.textStorage.addAttributes([
|
||||
.font: UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold), maximumPointSize: 20),
|
||||
.foregroundColor: Asset.Colors.brandBlue.color,
|
||||
], range: nsRange)
|
||||
}
|
||||
|
||||
} catch {
|
||||
let metaContent = PlaintextMetaContent(string: notification.account.displayNameWithFallback)
|
||||
cell.nameLabel.configure(content: metaContent)
|
||||
let metaContent = PlaintextMetaContent(string: titleLabelText)
|
||||
cell.titleLabel.configure(content: metaContent)
|
||||
}
|
||||
|
||||
let createAt = notification.createAt
|
||||
let actionText = notification.notificationType.actionText
|
||||
cell.actionLabel.text = actionText
|
||||
cell.timestampLabel.text = createAt.localizedTimeAgoSinceNow
|
||||
AppContext.shared.timestampUpdatePublisher
|
||||
.receive(on: DispatchQueue.main)
|
||||
.sink { [weak cell] _ in
|
||||
guard let cell = cell else { return }
|
||||
cell.actionLabel.text = actionText
|
||||
cell.timestampLabel.text = createAt.localizedTimeAgoSinceNow
|
||||
}
|
||||
.store(in: &cell.disposeBag)
|
||||
|
@ -13,7 +13,7 @@ extension MetaLabel {
|
||||
enum Style {
|
||||
case statusHeader
|
||||
case statusName
|
||||
case notificationName
|
||||
case notificationTitle
|
||||
case profileFieldName
|
||||
case profileFieldValue
|
||||
case recommendAccountName
|
||||
@ -26,6 +26,7 @@ extension MetaLabel {
|
||||
self.init()
|
||||
|
||||
layer.masksToBounds = true
|
||||
lineBreakMode = .byTruncatingTail
|
||||
textContainer.lineBreakMode = .byTruncatingTail
|
||||
textContainer.lineFragmentPadding = 0
|
||||
|
||||
@ -41,9 +42,9 @@ extension MetaLabel {
|
||||
font = .systemFont(ofSize: 17, weight: .semibold)
|
||||
textColor = Asset.Colors.Label.primary.color
|
||||
|
||||
case .notificationName:
|
||||
font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold), maximumPointSize: 20)
|
||||
textColor = Asset.Colors.brandBlue.color
|
||||
case .notificationTitle:
|
||||
font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .regular), maximumPointSize: 20)
|
||||
textColor = Asset.Colors.Label.secondary.color
|
||||
|
||||
case .profileFieldName:
|
||||
font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold), maximumPointSize: 20)
|
||||
@ -54,7 +55,6 @@ extension MetaLabel {
|
||||
textColor = Asset.Colors.Label.primary.color
|
||||
textAlignment = .right
|
||||
|
||||
|
||||
case .titleView:
|
||||
font = .systemFont(ofSize: 17, weight: .semibold)
|
||||
textColor = Asset.Colors.Label.primary.color
|
||||
|
@ -49,13 +49,8 @@ final class NotificationStatusTableViewCell: UITableViewCell, StatusCell {
|
||||
|
||||
let contentStackView = UIStackView()
|
||||
|
||||
let actionLabel: UILabel = {
|
||||
let label = UILabel()
|
||||
label.textColor = Asset.Colors.Label.secondary.color
|
||||
label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 15, weight: .regular), maximumPointSize: 20)
|
||||
label.lineBreakMode = .byTruncatingTail
|
||||
return label
|
||||
}()
|
||||
let titleLabel = MetaLabel(style: .notificationTitle)
|
||||
|
||||
let dotLabel: UILabel = {
|
||||
let label = UILabel()
|
||||
label.textColor = Asset.Colors.Label.secondary.color
|
||||
@ -70,7 +65,6 @@ final class NotificationStatusTableViewCell: UITableViewCell, StatusCell {
|
||||
return label
|
||||
}()
|
||||
|
||||
let nameLabel = MetaLabel(style: .notificationName)
|
||||
|
||||
let buttonStackView = UIStackView()
|
||||
|
||||
@ -181,17 +175,15 @@ extension NotificationStatusTableViewCell {
|
||||
actionStackView.distribution = .fill
|
||||
actionStackView.spacing = 4
|
||||
|
||||
actionStackView.addArrangedSubview(nameLabel)
|
||||
actionStackView.addArrangedSubview(actionLabel)
|
||||
actionStackView.addArrangedSubview(titleLabel)
|
||||
actionStackView.addArrangedSubview(dotLabel)
|
||||
actionStackView.addArrangedSubview(timestampLabel)
|
||||
let timestampPaddingView = UIView()
|
||||
actionStackView.addArrangedSubview(timestampPaddingView)
|
||||
nameLabel.setContentHuggingPriority(.required - 3, for: .horizontal)
|
||||
nameLabel.setContentHuggingPriority(.required - 1, for: .vertical)
|
||||
nameLabel.setContentCompressionResistancePriority(.required - 3, for: .horizontal)
|
||||
nameLabel.setContentCompressionResistancePriority(.required - 1, for: .vertical)
|
||||
actionLabel.setContentHuggingPriority(.defaultLow, for: .horizontal)
|
||||
titleLabel.setContentHuggingPriority(.required - 3, for: .horizontal)
|
||||
titleLabel.setContentHuggingPriority(.required - 1, for: .vertical)
|
||||
titleLabel.setContentCompressionResistancePriority(.required - 3, for: .horizontal)
|
||||
titleLabel.setContentCompressionResistancePriority(.required - 1, for: .vertical)
|
||||
dotLabel.setContentHuggingPriority(.required - 2, for: .horizontal)
|
||||
dotLabel.setContentCompressionResistancePriority(.required - 2, for: .horizontal)
|
||||
timestampLabel.setContentHuggingPriority(.required - 1, for: .horizontal)
|
||||
@ -255,7 +247,7 @@ extension NotificationStatusTableViewCell {
|
||||
avatarButton.addTarget(self, action: #selector(NotificationStatusTableViewCell.avatarButtonDidPressed(_:)), for: .touchUpInside)
|
||||
let authorNameLabelTapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer
|
||||
authorNameLabelTapGestureRecognizer.addTarget(self, action: #selector(NotificationStatusTableViewCell.authorNameLabelTapGestureRecognizerHandler(_:)))
|
||||
nameLabel.addGestureRecognizer(authorNameLabelTapGestureRecognizer)
|
||||
titleLabel.addGestureRecognizer(authorNameLabelTapGestureRecognizer)
|
||||
|
||||
resetSeparatorLineLayout()
|
||||
|
||||
@ -303,7 +295,7 @@ extension NotificationStatusTableViewCell {
|
||||
|
||||
@objc private func authorNameLabelTapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) {
|
||||
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
||||
delegate?.notificationStatusTableViewCell(self, authorNameLabelDidPressed: nameLabel)
|
||||
delegate?.notificationStatusTableViewCell(self, authorNameLabelDidPressed: titleLabel)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -386,10 +386,10 @@ extension StatusView {
|
||||
contentWarningOverlayView.translatesAutoresizingMaskIntoConstraints = false
|
||||
containerStackView.addSubview(contentWarningOverlayView)
|
||||
NSLayoutConstraint.activate([
|
||||
statusContainerStackView.topAnchor.constraint(equalTo: contentWarningOverlayView.topAnchor).priority(.defaultHigh + 10),
|
||||
statusContainerStackView.leftAnchor.constraint(equalTo: contentWarningOverlayView.leftAnchor).priority(.defaultHigh),
|
||||
contentWarningOverlayView.rightAnchor.constraint(equalTo: statusContainerStackView.rightAnchor).priority(.defaultHigh),
|
||||
contentWarningOverlayView.bottomAnchor.constraint(equalTo: statusContainerStackView.bottomAnchor).priority(.defaultHigh),
|
||||
statusContainerStackView.topAnchor.constraint(equalTo: contentWarningOverlayView.topAnchor).priority(.required - 10),
|
||||
statusContainerStackView.leftAnchor.constraint(equalTo: contentWarningOverlayView.leftAnchor).priority(.required - 1),
|
||||
contentWarningOverlayView.rightAnchor.constraint(equalTo: statusContainerStackView.rightAnchor).priority(.required - 1),
|
||||
contentWarningOverlayView.bottomAnchor.constraint(equalTo: statusContainerStackView.bottomAnchor).priority(.required - 1),
|
||||
])
|
||||
// avoid overlay behind other views
|
||||
defer {
|
||||
|
@ -13,6 +13,8 @@ final class ThreadMetaView: UIView {
|
||||
let label = UILabel()
|
||||
label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 15, weight: .regular))
|
||||
label.text = "Date"
|
||||
label.adjustsFontSizeToFitWidth = true
|
||||
label.minimumScaleFactor = 0.5
|
||||
return label
|
||||
}()
|
||||
|
||||
@ -75,8 +77,10 @@ extension ThreadMetaView {
|
||||
actionButtonStackView.addArrangedSubview(favoriteButton)
|
||||
|
||||
dateLabel.setContentHuggingPriority(.defaultLow, for: .horizontal)
|
||||
reblogButton.setContentHuggingPriority(.required - 2, for: .horizontal)
|
||||
favoriteButton.setContentHuggingPriority(.required - 1, for: .horizontal)
|
||||
reblogButton.titleLabel?.setContentHuggingPriority(.required - 2, for: .horizontal)
|
||||
favoriteButton.titleLabel?.setContentHuggingPriority(.required - 1, for: .horizontal)
|
||||
reblogButton.setContentCompressionResistancePriority(.required - 2, for: .horizontal)
|
||||
favoriteButton.setContentCompressionResistancePriority(.required - 1, for: .horizontal)
|
||||
|
||||
updateContainerLayout()
|
||||
|
||||
|
@ -53,7 +53,7 @@
|
||||
<key>INIntentDefinitionNamespace</key>
|
||||
<string>BvMBE4</string>
|
||||
<key>INIntentDefinitionSystemVersion</key>
|
||||
<string>20G71</string>
|
||||
<string>20G80</string>
|
||||
<key>INIntentDefinitionToolsBuildVersion</key>
|
||||
<string>12E507</string>
|
||||
<key>INIntentDefinitionToolsVersion</key>
|
||||
@ -85,8 +85,6 @@
|
||||
<string>Post ${content} on Mastodon</string>
|
||||
<key>INIntentParameterCombinationTitleID</key>
|
||||
<string>WCIR3D</string>
|
||||
<key>INIntentParameterCombinationUpdatesLinked</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>INIntentName</key>
|
||||
@ -102,7 +100,7 @@
|
||||
<key>INIntentParameterCombinationSupportsBackgroundExecution</key>
|
||||
<true/>
|
||||
<key>INIntentParameterCombinationTitle</key>
|
||||
<string>Post</string>
|
||||
<string>Post on Mastodon</string>
|
||||
<key>INIntentParameterCombinationTitleID</key>
|
||||
<string>CsR7G2</string>
|
||||
</dict>
|
||||
@ -117,7 +115,7 @@
|
||||
<key>INIntentParameterCombinationSupportsBackgroundExecution</key>
|
||||
<true/>
|
||||
<key>INIntentParameterCombinationTitle</key>
|
||||
<string>Post</string>
|
||||
<string>Post on Mastodon</string>
|
||||
<key>INIntentParameterCombinationTitleID</key>
|
||||
<string>dUyuGg</string>
|
||||
</dict>
|
||||
@ -247,7 +245,7 @@
|
||||
<key>INIntentResponseCodeConciseFormatStringID</key>
|
||||
<string>k7dbKQ</string>
|
||||
<key>INIntentResponseCodeFormatString</key>
|
||||
<string>Post was sent successfully. </string>
|
||||
<string>Post was sent successfully.</string>
|
||||
<key>INIntentResponseCodeFormatStringID</key>
|
||||
<string>ryJLwG</string>
|
||||
<key>INIntentResponseCodeName</key>
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
"751xkl" = "Text Content";
|
||||
|
||||
"CsR7G2" = "Post";
|
||||
"CsR7G2" = "Post on Mastodon";
|
||||
|
||||
"HZSGTr" = "What content to post?";
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
|
||||
"ayoYEb-ehFLjY" = "${content}, Followers Only";
|
||||
|
||||
"dUyuGg" = "Post";
|
||||
"dUyuGg" = "Post on Mastodon";
|
||||
|
||||
"dYQ5NN" = "Public";
|
||||
|
||||
|
54
MastodonIntent/en.lproj/Intents.stringsdict
Normal file
54
MastodonIntent/en.lproj/Intents.stringsdict
Normal file
@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>There are ${count} options matching ‘${content}’. - 2</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>There are %#@count_option@ matching ‘${content}’.</string>
|
||||
<key>count_option</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>%ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 options</string>
|
||||
<key>one</key>
|
||||
<string>1 option</string>
|
||||
<key>two</key>
|
||||
<string>2 options</string>
|
||||
<key>few</key>
|
||||
<string>%ld options</string>
|
||||
<key>many</key>
|
||||
<string>%ld options</string>
|
||||
<key>other</key>
|
||||
<string>%ld options</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>There are ${count} options matching ‘${visibility}’.</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>There are %#@count_option@ matching ‘${visibility}’.</string>
|
||||
<key>count_option</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>%ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 options</string>
|
||||
<key>one</key>
|
||||
<string>1 option</string>
|
||||
<key>two</key>
|
||||
<string>2 options</string>
|
||||
<key>few</key>
|
||||
<string>%ld options</string>
|
||||
<key>many</key>
|
||||
<string>%ld options</string>
|
||||
<key>other</key>
|
||||
<string>%ld options</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
12
crowdin.yml
12
crowdin.yml
@ -7,6 +7,7 @@ files: [
|
||||
# Source files filter
|
||||
# e.g. "/resources/en/*.json"
|
||||
#
|
||||
# App strings template
|
||||
"source" : "/Localization/app.json",
|
||||
|
||||
#
|
||||
@ -23,18 +24,27 @@ files: [
|
||||
#
|
||||
},
|
||||
{
|
||||
# App info plist strings template
|
||||
"source" : "/Localization/ios-infoPlist.json",
|
||||
"translation" : "/Localization/StringsConvertor/input/%locale_with_underscore%/%original_file_name%",
|
||||
"update_option" : "update_as_unapproved",
|
||||
},
|
||||
{
|
||||
# App strings dict
|
||||
"source" : "/Localization/Localizable.stringsdict",
|
||||
"translation" : "/Localization/StringsConvertor/input/%locale_with_underscore%/%original_file_name%",
|
||||
"update_option" : "update_as_unapproved",
|
||||
},
|
||||
{
|
||||
# intents strings
|
||||
"source" : "/MastodonIntent/en.lproj/Intents.strings",
|
||||
"translation" : "/Localization/StringsConvertor/Intents/input/%locale_with_underscore%/%original_file_name%",
|
||||
"update_option" : "update_as_unapproved",
|
||||
}
|
||||
},
|
||||
{
|
||||
# intents strings dict
|
||||
"source" : "/MastodonIntent/en.lproj/Intents.stringsdict",
|
||||
"translation" : "/Localization/StringsConvertor/Intents/input/%locale_with_underscore%/%original_file_name%",
|
||||
"update_option" : "update_as_unapproved",
|
||||
},
|
||||
]
|
Loading…
x
Reference in New Issue
Block a user