forked from zelo72/mastodon-ios
Merge pull request #294 from mastodon/feature/iPad
Update for iPad compatibility
This commit is contained in:
commit
06e5541d44
|
@ -19,8 +19,8 @@ jobs:
|
|||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: force Xcode 12.5.1
|
||||
run: sudo xcode-select -switch /Applications/Xcode_12.5.1.app
|
||||
- name: force Xcode 13.0
|
||||
run: sudo xcode-select -switch /Applications/Xcode_13.0.app
|
||||
- name: setup
|
||||
run: exec ./.github/scripts/setup.sh
|
||||
- name: build
|
||||
|
|
|
@ -58,6 +58,7 @@ Packages/
|
|||
.swiftpm
|
||||
|
||||
.build/
|
||||
!**/swiftpm/Package.resolved
|
||||
|
||||
# CocoaPods
|
||||
# We recommend against adding the Pods directory to your .gitignore. However
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.8</string>
|
||||
<string>1.2.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>60</string>
|
||||
<string>71</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -6,7 +6,39 @@
|
|||
//
|
||||
|
||||
import UIKit
|
||||
import CryptoKit
|
||||
|
||||
extension UserDefaults {
|
||||
public static let shared = UserDefaults(suiteName: AppName.groupID)!
|
||||
}
|
||||
|
||||
extension UserDefaults {
|
||||
// always use hash value (SHA256) from accessToken as key
|
||||
private static func deriveKey(from accessToken: String, prefix: String) -> String {
|
||||
let digest = SHA256.hash(data: Data(accessToken.utf8))
|
||||
let bytes = [UInt8](digest)
|
||||
let hex = bytes.toHexString()
|
||||
let key = prefix + "@" + hex
|
||||
return key
|
||||
}
|
||||
|
||||
private static let notificationCountKeyPrefix = "notification_count"
|
||||
|
||||
public func getNotificationCountWithAccessToken(accessToken: String) -> Int {
|
||||
let prefix = UserDefaults.notificationCountKeyPrefix
|
||||
let key = UserDefaults.deriveKey(from: accessToken, prefix: prefix)
|
||||
return integer(forKey: key)
|
||||
}
|
||||
|
||||
public func setNotificationCountWithAccessToken(accessToken: String, value: Int) {
|
||||
let prefix = UserDefaults.notificationCountKeyPrefix
|
||||
let key = UserDefaults.deriveKey(from: accessToken, prefix: prefix)
|
||||
setValue(value, forKey: key)
|
||||
}
|
||||
|
||||
public func increaseNotificationCount(accessToken: String) {
|
||||
let count = getNotificationCountWithAccessToken(accessToken: accessToken)
|
||||
setNotificationCountWithAccessToken(accessToken: accessToken, value: count + 1)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>_XCCurrentVersionName</key>
|
||||
<string>CoreData 2.xcdatamodel</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,298 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="19206" systemVersion="20G165" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
|
||||
<entity name="Application" representedClassName=".Application" syncable="YES">
|
||||
<attribute name="identifier" optional="YES" attributeType="UUID" usesScalarValueType="NO"/>
|
||||
<attribute name="name" attributeType="String"/>
|
||||
<attribute name="vapidKey" optional="YES" attributeType="String"/>
|
||||
<attribute name="website" optional="YES" attributeType="String"/>
|
||||
<relationship name="status" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Status" inverseName="application" inverseEntity="Status"/>
|
||||
</entity>
|
||||
<entity name="Attachment" representedClassName=".Attachment" syncable="YES">
|
||||
<attribute name="blurhash" optional="YES" attributeType="String"/>
|
||||
<attribute name="createdAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="descriptionString" optional="YES" attributeType="String"/>
|
||||
<attribute name="domain" attributeType="String"/>
|
||||
<attribute name="id" attributeType="String"/>
|
||||
<attribute name="index" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
|
||||
<attribute name="metaData" optional="YES" attributeType="Binary"/>
|
||||
<attribute name="previewRemoteURL" optional="YES" attributeType="String"/>
|
||||
<attribute name="previewURL" optional="YES" attributeType="String"/>
|
||||
<attribute name="remoteURL" optional="YES" attributeType="String"/>
|
||||
<attribute name="textURL" optional="YES" attributeType="String"/>
|
||||
<attribute name="typeRaw" attributeType="String"/>
|
||||
<attribute name="updatedAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="url" optional="YES" attributeType="String"/>
|
||||
<relationship name="status" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Status" inverseName="mediaAttachments" inverseEntity="Status"/>
|
||||
</entity>
|
||||
<entity name="DomainBlock" representedClassName=".DomainBlock" syncable="YES">
|
||||
<attribute name="blockedDomain" attributeType="String"/>
|
||||
<attribute name="createAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="domain" attributeType="String"/>
|
||||
<attribute name="userID" attributeType="String"/>
|
||||
<uniquenessConstraints>
|
||||
<uniquenessConstraint>
|
||||
<constraint value="userID"/>
|
||||
<constraint value="domain"/>
|
||||
<constraint value="blockedDomain"/>
|
||||
</uniquenessConstraint>
|
||||
</uniquenessConstraints>
|
||||
</entity>
|
||||
<entity name="Emoji" representedClassName=".Emoji" syncable="YES">
|
||||
<attribute name="category" optional="YES" attributeType="String"/>
|
||||
<attribute name="createAt" attributeType="Date" defaultDateTimeInterval="631123200" usesScalarValueType="NO"/>
|
||||
<attribute name="identifier" attributeType="UUID" usesScalarValueType="NO"/>
|
||||
<attribute name="shortcode" attributeType="String"/>
|
||||
<attribute name="staticURL" attributeType="String"/>
|
||||
<attribute name="url" attributeType="String"/>
|
||||
<attribute name="visibleInPicker" attributeType="Boolean" usesScalarValueType="YES"/>
|
||||
</entity>
|
||||
<entity name="History" representedClassName=".History" syncable="YES">
|
||||
<attribute name="accounts" optional="YES" attributeType="String"/>
|
||||
<attribute name="createAt" attributeType="Date" defaultDateTimeInterval="631123200" usesScalarValueType="NO"/>
|
||||
<attribute name="day" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="identifier" optional="YES" attributeType="UUID" usesScalarValueType="NO"/>
|
||||
<attribute name="uses" optional="YES" attributeType="String"/>
|
||||
<relationship name="tag" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Tag" inverseName="histories" inverseEntity="Tag"/>
|
||||
</entity>
|
||||
<entity name="HomeTimelineIndex" representedClassName=".HomeTimelineIndex" syncable="YES">
|
||||
<attribute name="createdAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="deletedAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="domain" attributeType="String"/>
|
||||
<attribute name="hasMore" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
|
||||
<attribute name="identifier" attributeType="String"/>
|
||||
<attribute name="userID" attributeType="String"/>
|
||||
<relationship name="status" maxCount="1" deletionRule="Nullify" destinationEntity="Status" inverseName="homeTimelineIndexes" inverseEntity="Status"/>
|
||||
</entity>
|
||||
<entity name="MastodonAuthentication" representedClassName=".MastodonAuthentication" syncable="YES">
|
||||
<attribute name="activedAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="appAccessToken" attributeType="String"/>
|
||||
<attribute name="clientID" attributeType="String"/>
|
||||
<attribute name="clientSecret" attributeType="String"/>
|
||||
<attribute name="createdAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="domain" attributeType="String"/>
|
||||
<attribute name="identifier" attributeType="UUID" usesScalarValueType="NO"/>
|
||||
<attribute name="updatedAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="userAccessToken" attributeType="String"/>
|
||||
<attribute name="userID" attributeType="String"/>
|
||||
<attribute name="username" attributeType="String"/>
|
||||
<relationship name="user" maxCount="1" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="mastodonAuthentication" inverseEntity="MastodonUser"/>
|
||||
</entity>
|
||||
<entity name="MastodonNotification" representedClassName=".MastodonNotification" syncable="YES">
|
||||
<attribute name="createAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="domain" attributeType="String"/>
|
||||
<attribute name="id" attributeType="String"/>
|
||||
<attribute name="identifier" attributeType="UUID" usesScalarValueType="NO"/>
|
||||
<attribute name="typeRaw" attributeType="String"/>
|
||||
<attribute name="updatedAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="userID" attributeType="String"/>
|
||||
<relationship name="account" maxCount="1" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="notifications" inverseEntity="MastodonUser"/>
|
||||
<relationship name="status" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Status" inverseName="inNotifications" inverseEntity="Status"/>
|
||||
<uniquenessConstraints>
|
||||
<uniquenessConstraint>
|
||||
<constraint value="id"/>
|
||||
</uniquenessConstraint>
|
||||
</uniquenessConstraints>
|
||||
</entity>
|
||||
<entity name="MastodonUser" representedClassName=".MastodonUser" syncable="YES">
|
||||
<attribute name="acct" attributeType="String"/>
|
||||
<attribute name="avatar" attributeType="String"/>
|
||||
<attribute name="avatarStatic" optional="YES" attributeType="String"/>
|
||||
<attribute name="bot" optional="YES" attributeType="Boolean" usesScalarValueType="YES"/>
|
||||
<attribute name="createdAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="displayName" attributeType="String"/>
|
||||
<attribute name="domain" attributeType="String"/>
|
||||
<attribute name="emojisData" optional="YES" attributeType="Binary"/>
|
||||
<attribute name="fieldsData" optional="YES" attributeType="Binary"/>
|
||||
<attribute name="followersCount" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
|
||||
<attribute name="followingCount" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
|
||||
<attribute name="header" attributeType="String"/>
|
||||
<attribute name="headerStatic" optional="YES" attributeType="String"/>
|
||||
<attribute name="id" attributeType="String"/>
|
||||
<attribute name="identifier" attributeType="String"/>
|
||||
<attribute name="locked" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
|
||||
<attribute name="note" optional="YES" attributeType="String"/>
|
||||
<attribute name="statusesCount" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
|
||||
<attribute name="suspended" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
|
||||
<attribute name="updatedAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="url" optional="YES" attributeType="String"/>
|
||||
<attribute name="username" attributeType="String"/>
|
||||
<relationship name="blocking" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="blockingBy" inverseEntity="MastodonUser"/>
|
||||
<relationship name="blockingBy" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="blocking" inverseEntity="MastodonUser"/>
|
||||
<relationship name="bookmarked" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="Status" inverseName="bookmarkedBy" inverseEntity="Status"/>
|
||||
<relationship name="domainBlocking" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="domainBlockingBy" inverseEntity="MastodonUser"/>
|
||||
<relationship name="domainBlockingBy" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="domainBlocking" inverseEntity="MastodonUser"/>
|
||||
<relationship name="endorsed" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="endorsedBy" inverseEntity="MastodonUser"/>
|
||||
<relationship name="endorsedBy" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="endorsed" inverseEntity="MastodonUser"/>
|
||||
<relationship name="favourite" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="Status" inverseName="favouritedBy" inverseEntity="Status"/>
|
||||
<relationship name="following" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="followingBy" inverseEntity="MastodonUser"/>
|
||||
<relationship name="followingBy" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="following" inverseEntity="MastodonUser"/>
|
||||
<relationship name="followRequested" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="followRequestedBy" inverseEntity="MastodonUser"/>
|
||||
<relationship name="followRequestedBy" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="followRequested" inverseEntity="MastodonUser"/>
|
||||
<relationship name="mastodonAuthentication" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="MastodonAuthentication" inverseName="user" inverseEntity="MastodonAuthentication"/>
|
||||
<relationship name="muted" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="Status" inverseName="mutedBy" inverseEntity="Status"/>
|
||||
<relationship name="muting" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="mutingBy" inverseEntity="MastodonUser"/>
|
||||
<relationship name="mutingBy" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="muting" inverseEntity="MastodonUser"/>
|
||||
<relationship name="notifications" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonNotification" inverseName="account" inverseEntity="MastodonNotification"/>
|
||||
<relationship name="pinnedStatus" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Status" inverseName="pinnedBy" inverseEntity="Status"/>
|
||||
<relationship name="privateNotes" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="PrivateNote" inverseName="to" inverseEntity="PrivateNote"/>
|
||||
<relationship name="privateNotesTo" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="PrivateNote" inverseName="from" inverseEntity="PrivateNote"/>
|
||||
<relationship name="reblogged" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="Status" inverseName="rebloggedBy" inverseEntity="Status"/>
|
||||
<relationship name="searchHistories" toMany="YES" deletionRule="Nullify" destinationEntity="SearchHistory" inverseName="account" inverseEntity="SearchHistory"/>
|
||||
<relationship name="statuses" toMany="YES" deletionRule="Nullify" destinationEntity="Status" inverseName="author" inverseEntity="Status"/>
|
||||
<relationship name="votePollOptions" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="PollOption" inverseName="votedBy" inverseEntity="PollOption"/>
|
||||
<relationship name="votePolls" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="Poll" inverseName="votedBy" inverseEntity="Poll"/>
|
||||
</entity>
|
||||
<entity name="Mention" representedClassName=".Mention" syncable="YES">
|
||||
<attribute name="acct" attributeType="String"/>
|
||||
<attribute name="createAt" attributeType="Date" defaultDateTimeInterval="631123200" usesScalarValueType="NO"/>
|
||||
<attribute name="id" attributeType="String"/>
|
||||
<attribute name="identifier" attributeType="UUID" usesScalarValueType="NO"/>
|
||||
<attribute name="index" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
|
||||
<attribute name="url" attributeType="String"/>
|
||||
<attribute name="username" attributeType="String"/>
|
||||
<relationship name="status" maxCount="1" deletionRule="Nullify" destinationEntity="Status" inverseName="mentions" inverseEntity="Status"/>
|
||||
</entity>
|
||||
<entity name="Poll" representedClassName=".Poll" syncable="YES">
|
||||
<attribute name="createdAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="expired" attributeType="Boolean" usesScalarValueType="YES"/>
|
||||
<attribute name="expiresAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="id" attributeType="String"/>
|
||||
<attribute name="multiple" attributeType="Boolean" usesScalarValueType="YES"/>
|
||||
<attribute name="updatedAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="votersCount" optional="YES" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
|
||||
<attribute name="votesCount" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
|
||||
<relationship name="options" toMany="YES" deletionRule="Cascade" destinationEntity="PollOption" inverseName="poll" inverseEntity="PollOption"/>
|
||||
<relationship name="status" maxCount="1" deletionRule="Nullify" destinationEntity="Status" inverseName="poll" inverseEntity="Status"/>
|
||||
<relationship name="votedBy" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="votePolls" inverseEntity="MastodonUser"/>
|
||||
</entity>
|
||||
<entity name="PollOption" representedClassName=".PollOption" syncable="YES">
|
||||
<attribute name="createdAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="index" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
|
||||
<attribute name="title" attributeType="String"/>
|
||||
<attribute name="updatedAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="votesCount" optional="YES" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
|
||||
<relationship name="poll" maxCount="1" deletionRule="Nullify" destinationEntity="Poll" inverseName="options" inverseEntity="Poll"/>
|
||||
<relationship name="votedBy" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="votePollOptions" inverseEntity="MastodonUser"/>
|
||||
</entity>
|
||||
<entity name="PrivateNote" representedClassName=".PrivateNote" syncable="YES">
|
||||
<attribute name="note" optional="YES" attributeType="String"/>
|
||||
<attribute name="updatedAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<relationship name="from" maxCount="1" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="privateNotesTo" inverseEntity="MastodonUser"/>
|
||||
<relationship name="to" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="privateNotes" inverseEntity="MastodonUser"/>
|
||||
</entity>
|
||||
<entity name="SearchHistory" representedClassName=".SearchHistory" syncable="YES">
|
||||
<attribute name="createAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="domain" attributeType="String" defaultValueString=""/>
|
||||
<attribute name="identifier" attributeType="UUID" usesScalarValueType="NO"/>
|
||||
<attribute name="updatedAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="userID" attributeType="String" defaultValueString=""/>
|
||||
<relationship name="account" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="searchHistories" inverseEntity="MastodonUser"/>
|
||||
<relationship name="hashtag" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Tag" inverseName="searchHistories" inverseEntity="Tag"/>
|
||||
<relationship name="status" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Status" inverseName="searchHistories" inverseEntity="Status"/>
|
||||
</entity>
|
||||
<entity name="Setting" representedClassName=".Setting" syncable="YES">
|
||||
<attribute name="appearanceRaw" attributeType="String"/>
|
||||
<attribute name="createdAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="domain" attributeType="String"/>
|
||||
<attribute name="preferredStaticAvatar" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
|
||||
<attribute name="preferredStaticEmoji" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
|
||||
<attribute name="preferredTrueBlackDarkMode" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
|
||||
<attribute name="preferredUsingDefaultBrowser" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
|
||||
<attribute name="updatedAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="userID" attributeType="String"/>
|
||||
<relationship name="subscriptions" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="Subscription" inverseName="setting" inverseEntity="Subscription"/>
|
||||
</entity>
|
||||
<entity name="Status" representedClassName=".Status" syncable="YES">
|
||||
<attribute name="content" attributeType="String"/>
|
||||
<attribute name="createdAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="deletedAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="domain" attributeType="String"/>
|
||||
<attribute name="emojisData" optional="YES" attributeType="Binary"/>
|
||||
<attribute name="favouritesCount" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
|
||||
<attribute name="id" attributeType="String"/>
|
||||
<attribute name="identifier" attributeType="String"/>
|
||||
<attribute name="inReplyToAccountID" optional="YES" attributeType="String"/>
|
||||
<attribute name="inReplyToID" optional="YES" attributeType="String"/>
|
||||
<attribute name="language" optional="YES" attributeType="String"/>
|
||||
<attribute name="reblogsCount" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
|
||||
<attribute name="repliesCount" optional="YES" attributeType="Integer 64" usesScalarValueType="NO"/>
|
||||
<attribute name="revealedAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="sensitive" attributeType="Boolean" usesScalarValueType="YES"/>
|
||||
<attribute name="spoilerText" optional="YES" attributeType="String"/>
|
||||
<attribute name="text" optional="YES" attributeType="String"/>
|
||||
<attribute name="updatedAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="uri" attributeType="String"/>
|
||||
<attribute name="url" attributeType="String"/>
|
||||
<attribute name="visibility" optional="YES" attributeType="String"/>
|
||||
<relationship name="application" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Application" inverseName="status" inverseEntity="Application"/>
|
||||
<relationship name="author" maxCount="1" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="statuses" inverseEntity="MastodonUser"/>
|
||||
<relationship name="bookmarkedBy" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="bookmarked" inverseEntity="MastodonUser"/>
|
||||
<relationship name="favouritedBy" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="favourite" inverseEntity="MastodonUser"/>
|
||||
<relationship name="homeTimelineIndexes" optional="YES" toMany="YES" deletionRule="Cascade" destinationEntity="HomeTimelineIndex" inverseName="status" inverseEntity="HomeTimelineIndex"/>
|
||||
<relationship name="inNotifications" optional="YES" toMany="YES" deletionRule="Cascade" destinationEntity="MastodonNotification" inverseName="status" inverseEntity="MastodonNotification"/>
|
||||
<relationship name="mediaAttachments" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="Attachment" inverseName="status" inverseEntity="Attachment"/>
|
||||
<relationship name="mentions" optional="YES" toMany="YES" deletionRule="Cascade" destinationEntity="Mention" inverseName="status" inverseEntity="Mention"/>
|
||||
<relationship name="mutedBy" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="muted" inverseEntity="MastodonUser"/>
|
||||
<relationship name="pinnedBy" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="pinnedStatus" inverseEntity="MastodonUser"/>
|
||||
<relationship name="poll" optional="YES" maxCount="1" deletionRule="Cascade" destinationEntity="Poll" inverseName="status" inverseEntity="Poll"/>
|
||||
<relationship name="reblog" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Status" inverseName="reblogFrom" inverseEntity="Status"/>
|
||||
<relationship name="reblogFrom" optional="YES" toMany="YES" deletionRule="Cascade" destinationEntity="Status" inverseName="reblog" inverseEntity="Status"/>
|
||||
<relationship name="rebloggedBy" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="MastodonUser" inverseName="reblogged" inverseEntity="MastodonUser"/>
|
||||
<relationship name="replyFrom" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="Status" inverseName="replyTo" inverseEntity="Status"/>
|
||||
<relationship name="replyTo" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Status" inverseName="replyFrom" inverseEntity="Status"/>
|
||||
<relationship name="searchHistories" toMany="YES" deletionRule="Nullify" destinationEntity="SearchHistory" inverseName="status" inverseEntity="SearchHistory"/>
|
||||
</entity>
|
||||
<entity name="Subscription" representedClassName=".Subscription" syncable="YES">
|
||||
<attribute name="activedAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="createdAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="endpoint" optional="YES" attributeType="String"/>
|
||||
<attribute name="id" optional="YES" attributeType="String"/>
|
||||
<attribute name="policyRaw" attributeType="String"/>
|
||||
<attribute name="serverKey" optional="YES" attributeType="String"/>
|
||||
<attribute name="updatedAt" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="userToken" optional="YES" attributeType="String"/>
|
||||
<relationship name="alert" maxCount="1" deletionRule="Cascade" destinationEntity="SubscriptionAlerts" inverseName="subscription" inverseEntity="SubscriptionAlerts"/>
|
||||
<relationship name="setting" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Setting" inverseName="subscriptions" inverseEntity="Setting"/>
|
||||
</entity>
|
||||
<entity name="SubscriptionAlerts" representedClassName=".SubscriptionAlerts" syncable="YES">
|
||||
<attribute name="createdAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="favouriteRaw" optional="YES" attributeType="Boolean" usesScalarValueType="YES"/>
|
||||
<attribute name="followRaw" optional="YES" attributeType="Boolean" usesScalarValueType="YES"/>
|
||||
<attribute name="followRequestRaw" optional="YES" attributeType="Boolean" usesScalarValueType="YES"/>
|
||||
<attribute name="mentionRaw" optional="YES" attributeType="Boolean" usesScalarValueType="YES"/>
|
||||
<attribute name="pollRaw" optional="YES" attributeType="Boolean" usesScalarValueType="YES"/>
|
||||
<attribute name="reblogRaw" optional="YES" attributeType="Boolean" usesScalarValueType="YES"/>
|
||||
<attribute name="updatedAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<relationship name="subscription" maxCount="1" deletionRule="Nullify" destinationEntity="Subscription" inverseName="alert" inverseEntity="Subscription"/>
|
||||
</entity>
|
||||
<entity name="Tag" representedClassName=".Tag" syncable="YES">
|
||||
<attribute name="createAt" attributeType="Date" defaultDateTimeInterval="631123200" usesScalarValueType="NO"/>
|
||||
<attribute name="identifier" attributeType="UUID" usesScalarValueType="NO"/>
|
||||
<attribute name="name" attributeType="String"/>
|
||||
<attribute name="updatedAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="url" attributeType="String"/>
|
||||
<relationship name="histories" optional="YES" toMany="YES" deletionRule="Nullify" destinationEntity="History" inverseName="tag" inverseEntity="History"/>
|
||||
<relationship name="searchHistories" toMany="YES" deletionRule="Nullify" destinationEntity="SearchHistory" inverseName="hashtag" inverseEntity="SearchHistory"/>
|
||||
</entity>
|
||||
<elements>
|
||||
<element name="Application" positionX="0" positionY="0" width="128" height="104"/>
|
||||
<element name="Attachment" positionX="0" positionY="0" width="128" height="254"/>
|
||||
<element name="DomainBlock" positionX="45" positionY="162" width="128" height="89"/>
|
||||
<element name="Emoji" positionX="0" positionY="0" width="128" height="134"/>
|
||||
<element name="History" positionX="0" positionY="0" width="128" height="119"/>
|
||||
<element name="HomeTimelineIndex" positionX="0" positionY="0" width="128" height="134"/>
|
||||
<element name="MastodonAuthentication" positionX="0" positionY="0" width="128" height="209"/>
|
||||
<element name="MastodonNotification" positionX="9" positionY="162" width="128" height="164"/>
|
||||
<element name="MastodonUser" positionX="0" positionY="0" width="128" height="734"/>
|
||||
<element name="Mention" positionX="0" positionY="0" width="128" height="149"/>
|
||||
<element name="Poll" positionX="0" positionY="0" width="128" height="194"/>
|
||||
<element name="PollOption" positionX="0" positionY="0" width="128" height="134"/>
|
||||
<element name="PrivateNote" positionX="0" positionY="0" width="128" height="89"/>
|
||||
<element name="SearchHistory" positionX="0" positionY="0" width="128" height="149"/>
|
||||
<element name="Setting" positionX="72" positionY="162" width="128" height="179"/>
|
||||
<element name="Status" positionX="0" positionY="0" width="128" height="599"/>
|
||||
<element name="Subscription" positionX="81" positionY="171" width="128" height="179"/>
|
||||
<element name="SubscriptionAlerts" positionX="72" positionY="162" width="128" height="14"/>
|
||||
<element name="Tag" positionX="0" positionY="0" width="128" height="134"/>
|
||||
</elements>
|
||||
</model>
|
|
@ -13,6 +13,8 @@ import AppShared
|
|||
|
||||
public final class CoreDataStack {
|
||||
|
||||
static let logger = Logger(subsystem: "CoreDataStack", category: "DB")
|
||||
|
||||
private(set) var storeDescriptions: [NSPersistentStoreDescription]
|
||||
public let didFinishLoad = CurrentValueSubject<Bool, Never>(false)
|
||||
|
||||
|
@ -90,8 +92,22 @@ public final class CoreDataStack {
|
|||
container.viewContext.automaticallyMergesChangesFromParent = true
|
||||
|
||||
os_log("%{public}s[%{public}ld], %{public}s: %s", ((#file as NSString).lastPathComponent), #line, #function, storeDescription.debugDescription)
|
||||
|
||||
|
||||
callback()
|
||||
|
||||
#if DEBUG
|
||||
do {
|
||||
let storeURL = URL.storeURL(for: AppName.groupID, databaseName: "shared")
|
||||
let data = try Data(contentsOf: storeURL)
|
||||
let formatter = ByteCountFormatter()
|
||||
formatter.allowedUnits = [.useMB]
|
||||
formatter.countStyle = .file
|
||||
let size = formatter.string(fromByteCount: Int64(data.count))
|
||||
CoreDataStack.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): Database size: \(size)")
|
||||
} catch {
|
||||
CoreDataStack.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): Cannot get database size")
|
||||
}
|
||||
#endif
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -43,11 +43,11 @@ final public class MastodonUser: NSManagedObject {
|
|||
// one-to-one relationship
|
||||
@NSManaged public private(set) var pinnedStatus: Status?
|
||||
@NSManaged public private(set) var mastodonAuthentication: MastodonAuthentication?
|
||||
@NSManaged public private(set) var searchHistory: SearchHistory?
|
||||
|
||||
// one-to-many relationship
|
||||
@NSManaged public private(set) var statuses: Set<Status>?
|
||||
@NSManaged public private(set) var notifications: Set<MastodonNotification>?
|
||||
@NSManaged public private(set) var searchHistories: Set<SearchHistory>
|
||||
|
||||
// many-to-many relationship
|
||||
@NSManaged public private(set) var favourite: Set<Status>?
|
||||
|
@ -274,6 +274,15 @@ extension MastodonUser {
|
|||
|
||||
}
|
||||
|
||||
extension MastodonUser {
|
||||
public func findSearchHistory(domain: String, userID: MastodonUser.ID) -> SearchHistory? {
|
||||
return searchHistories.first { searchHistory in
|
||||
return searchHistory.domain == domain
|
||||
&& searchHistory.userID == userID
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension MastodonUser {
|
||||
public struct Property {
|
||||
public let identifier: String
|
||||
|
|
|
@ -16,7 +16,7 @@ public final class SearchHistory: NSManagedObject {
|
|||
@NSManaged public private(set) var createAt: Date
|
||||
@NSManaged public private(set) var updatedAt: Date
|
||||
|
||||
// one-to-one relationship
|
||||
// many-to-one relationship
|
||||
@NSManaged public private(set) var account: MastodonUser?
|
||||
@NSManaged public private(set) var hashtag: Tag?
|
||||
@NSManaged public private(set) var status: Status?
|
||||
|
@ -31,10 +31,10 @@ extension SearchHistory {
|
|||
setPrimitiveValue(Date(), forKey: #keyPath(SearchHistory.updatedAt))
|
||||
}
|
||||
|
||||
public override func willSave() {
|
||||
super.willSave()
|
||||
setPrimitiveValue(Date(), forKey: #keyPath(SearchHistory.updatedAt))
|
||||
}
|
||||
// public override func willSave() {
|
||||
// super.willSave()
|
||||
// setPrimitiveValue(Date(), forKey: #keyPath(SearchHistory.updatedAt))
|
||||
// }
|
||||
|
||||
@discardableResult
|
||||
public static func insert(
|
||||
|
|
|
@ -52,18 +52,18 @@ public final class Status: NSManagedObject {
|
|||
// one-to-one relationship
|
||||
@NSManaged public private(set) var pinnedBy: MastodonUser?
|
||||
@NSManaged public private(set) var poll: Poll?
|
||||
@NSManaged public private(set) var searchHistory: SearchHistory?
|
||||
|
||||
// one-to-many relationship
|
||||
@NSManaged public private(set) var reblogFrom: Set<Status>?
|
||||
@NSManaged public private(set) var mentions: Set<Mention>?
|
||||
@NSManaged public private(set) var tags: Set<Tag>?
|
||||
@NSManaged public private(set) var homeTimelineIndexes: Set<HomeTimelineIndex>?
|
||||
@NSManaged public private(set) var mediaAttachments: Set<Attachment>?
|
||||
@NSManaged public private(set) var replyFrom: Set<Status>?
|
||||
|
||||
@NSManaged public private(set) var inNotifications: Set<MastodonNotification>?
|
||||
|
||||
@NSManaged public private(set) var searchHistories: Set<SearchHistory>
|
||||
|
||||
@NSManaged public private(set) var updatedAt: Date
|
||||
@NSManaged public private(set) var deletedAt: Date?
|
||||
@NSManaged public private(set) var revealedAt: Date?
|
||||
|
@ -81,7 +81,6 @@ extension Status {
|
|||
replyTo: Status?,
|
||||
poll: Poll?,
|
||||
mentions: [Mention]?,
|
||||
tags: [Tag]?,
|
||||
mediaAttachments: [Attachment]?,
|
||||
favouritedBy: MastodonUser?,
|
||||
rebloggedBy: MastodonUser?,
|
||||
|
@ -126,9 +125,6 @@ extension Status {
|
|||
if let mentions = mentions {
|
||||
status.mutableSetValue(forKey: #keyPath(Status.mentions)).addObjects(from: mentions)
|
||||
}
|
||||
if let tags = tags {
|
||||
status.mutableSetValue(forKey: #keyPath(Status.tags)).addObjects(from: tags)
|
||||
}
|
||||
if let mediaAttachments = mediaAttachments {
|
||||
status.mutableSetValue(forKey: #keyPath(Status.mediaAttachments)).addObjects(from: mediaAttachments)
|
||||
}
|
||||
|
|
|
@ -18,13 +18,12 @@ public final class Tag: NSManagedObject {
|
|||
@NSManaged public private(set) var url: String
|
||||
|
||||
// one-to-one relationship
|
||||
@NSManaged public private(set) var searchHistory: SearchHistory?
|
||||
|
||||
// many-to-many relationship
|
||||
@NSManaged public private(set) var statuses: Set<Status>?
|
||||
|
||||
// one-to-many relationship
|
||||
@NSManaged public private(set) var histories: Set<History>?
|
||||
@NSManaged public private(set) var searchHistories: Set<SearchHistory>
|
||||
}
|
||||
|
||||
public extension Tag {
|
||||
|
@ -55,6 +54,15 @@ public extension Tag {
|
|||
}
|
||||
}
|
||||
|
||||
extension Tag {
|
||||
public func findSearchHistory(domain: String, userID: MastodonUser.ID) -> SearchHistory? {
|
||||
return searchHistories.first { searchHistory in
|
||||
return searchHistory.domain == domain
|
||||
&& searchHistory.userID == userID
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public extension Tag {
|
||||
struct Property {
|
||||
public let name: String
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.8</string>
|
||||
<string>1.2.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>60</string>
|
||||
<string>71</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.8</string>
|
||||
<string>1.2.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>60</string>
|
||||
<string>71</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
"16wxgf" = "Post on Mastodon";
|
||||
|
||||
"751xkl" = "Text Content";
|
||||
"751xkl" = "محتوى نصي";
|
||||
|
||||
"CsR7G2" = "Post on Mastodon";
|
||||
"CsR7G2" = "انشر على ماستدون";
|
||||
|
||||
"HZSGTr" = "What content to post?";
|
||||
|
||||
"HdGikU" = "Posting failed";
|
||||
|
||||
"KDNTJ4" = "Failure Reason";
|
||||
"KDNTJ4" = "سبب الإخفاق";
|
||||
|
||||
"RHxKOw" = "Send Post with text content";
|
||||
|
||||
|
@ -20,9 +20,9 @@
|
|||
|
||||
"ZS1XaK" = "${content}";
|
||||
|
||||
"ZbSjzC" = "Visibility";
|
||||
"ZbSjzC" = "مدى الظهور";
|
||||
|
||||
"Zo4jgJ" = "Post Visibility";
|
||||
"Zo4jgJ" = "مدى ظهور المنشور";
|
||||
|
||||
"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’.";
|
||||
|
||||
|
@ -32,11 +32,11 @@
|
|||
|
||||
"ayoYEb-ehFLjY" = "${content}, Followers Only";
|
||||
|
||||
"dUyuGg" = "Post on Mastodon";
|
||||
"dUyuGg" = "النشر على ماستدون";
|
||||
|
||||
"dYQ5NN" = "Public";
|
||||
"dYQ5NN" = "للعامة";
|
||||
|
||||
"ehFLjY" = "Followers Only";
|
||||
"ehFLjY" = "لمتابعيك فقط";
|
||||
|
||||
"gfePDu" = "Posting failed. ${failureReason}";
|
||||
|
||||
|
@ -46,6 +46,6 @@
|
|||
|
||||
"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?";
|
||||
|
||||
"rM6dvp" = "URL";
|
||||
"rM6dvp" = "عنوان URL";
|
||||
|
||||
"ryJLwG" = "Post was sent successfully. ";
|
||||
"ryJLwG" = "تم إرسال المنشور بنجاح. ";
|
||||
|
|
|
@ -1,28 +1,28 @@
|
|||
"16wxgf" = "Post on Mastodon";
|
||||
"16wxgf" = "Publier sur Mastodon";
|
||||
|
||||
"751xkl" = "Text Content";
|
||||
"751xkl" = "Contenu textuel";
|
||||
|
||||
"CsR7G2" = "Post on Mastodon";
|
||||
"CsR7G2" = "Publier sur Mastodon";
|
||||
|
||||
"HZSGTr" = "What content to post?";
|
||||
"HZSGTr" = "Quel contenu à publier ?";
|
||||
|
||||
"HdGikU" = "Posting failed";
|
||||
|
||||
"KDNTJ4" = "Failure Reason";
|
||||
"KDNTJ4" = "Raison de l’échec";
|
||||
|
||||
"RHxKOw" = "Send Post with text content";
|
||||
"RHxKOw" = "Envoyer une publication avec du contenu texte";
|
||||
|
||||
"RxSqsb" = "Post";
|
||||
|
||||
"WCIR3D" = "Post ${content} on Mastodon";
|
||||
"WCIR3D" = "Publier du ${content} sur Mastodon";
|
||||
|
||||
"ZKJSNu" = "Post";
|
||||
"ZKJSNu" = "Publication";
|
||||
|
||||
"ZS1XaK" = "${content}";
|
||||
|
||||
"ZbSjzC" = "Visibility";
|
||||
"ZbSjzC" = "Visibilité";
|
||||
|
||||
"Zo4jgJ" = "Post Visibility";
|
||||
"Zo4jgJ" = "Visibilité de la publication";
|
||||
|
||||
"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’.";
|
||||
|
||||
|
@ -30,15 +30,15 @@
|
|||
|
||||
"ayoYEb-dYQ5NN" = "${content}, Public";
|
||||
|
||||
"ayoYEb-ehFLjY" = "${content}, Followers Only";
|
||||
"ayoYEb-ehFLjY" = "${content}, abonné·e·s seulement";
|
||||
|
||||
"dUyuGg" = "Post on Mastodon";
|
||||
"dUyuGg" = "Publier sur Mastodon";
|
||||
|
||||
"dYQ5NN" = "Public";
|
||||
|
||||
"ehFLjY" = "Followers Only";
|
||||
"ehFLjY" = "Abonné·e·s seulement";
|
||||
|
||||
"gfePDu" = "Posting failed. ${failureReason}";
|
||||
"gfePDu" = "Échec lors de la publication. ${failureReason}";
|
||||
|
||||
"k7dbKQ" = "Post was sent successfully.";
|
||||
|
||||
|
@ -48,4 +48,4 @@
|
|||
|
||||
"rM6dvp" = "URL";
|
||||
|
||||
"ryJLwG" = "Post was sent successfully. ";
|
||||
"ryJLwG" = "La publication a été envoyée avec succès. ";
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<key>There are ${count} options matching ‘${content}’. - 2</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>There are %#@count_option@ matching ‘${content}’.</string>
|
||||
<string>Il y a %#@count_option@ correspondant à « ${content} ».</string>
|
||||
<key>count_option</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
|
@ -21,7 +21,7 @@
|
|||
<key>There are ${count} options matching ‘${visibility}’.</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>There are %#@count_option@ matching ‘${visibility}’.</string>
|
||||
<string>Il y a %#@count_option@ correspondant à « ${visibility} ».</string>
|
||||
<key>count_option</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
|
|
|
@ -24,9 +24,9 @@
|
|||
|
||||
"Zo4jgJ" = "Faicsinneachd a’ phuist";
|
||||
|
||||
"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’.";
|
||||
"apSxMG-dYQ5NN" = "Tha ${count} roghainn(ean) dha “Poblach” ann.";
|
||||
|
||||
"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’.";
|
||||
"apSxMG-ehFLjY" = "Tha ${count} roghainn(ean) dha “Luchd-leantainn a-mhàin” ann.";
|
||||
|
||||
"ayoYEb-dYQ5NN" = "${content}, poblach";
|
||||
|
||||
|
|
|
@ -13,11 +13,11 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>%ld</string>
|
||||
<key>one</key>
|
||||
<string>1 option</string>
|
||||
<string>%ld roghainn</string>
|
||||
<key>two</key>
|
||||
<string>%ld options</string>
|
||||
<string>%ld roghainn</string>
|
||||
<key>few</key>
|
||||
<string>%ld options</string>
|
||||
<string>%ld roghainnean</string>
|
||||
<key>other</key>
|
||||
<string>%ld roghainn</string>
|
||||
</dict>
|
||||
|
@ -33,11 +33,11 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>%ld</string>
|
||||
<key>one</key>
|
||||
<string>1 option</string>
|
||||
<string>%ld roghainn</string>
|
||||
<key>two</key>
|
||||
<string>%ld options</string>
|
||||
<string>%ld roghainn</string>
|
||||
<key>few</key>
|
||||
<string>%ld options</string>
|
||||
<string>%ld roghainnean</string>
|
||||
<key>other</key>
|
||||
<string>%ld roghainn</string>
|
||||
</dict>
|
||||
|
|
|
@ -2,6 +2,30 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>two</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>few</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>many</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
"vote_failure": {
|
||||
"title": "فشل التصويت",
|
||||
"poll_ended": "The poll has ended"
|
||||
"poll_ended": "انتهى استطلاع الرأي"
|
||||
},
|
||||
"discard_post_content": {
|
||||
"title": "تجاهل المسودة",
|
||||
|
@ -29,7 +29,7 @@
|
|||
},
|
||||
"edit_profile_failure": {
|
||||
"title": "Edit Profile Error",
|
||||
"message": "Cannot edit profile. Please try again."
|
||||
"message": "لا يمكن تعديل الملف الشخصي. الرجاء المحاولة مرة أخرى."
|
||||
},
|
||||
"sign_out": {
|
||||
"title": "تسجيل الخروج",
|
||||
|
@ -123,43 +123,43 @@
|
|||
},
|
||||
"status": {
|
||||
"user_reblogged": "%s reblogged",
|
||||
"user_replied_to": "Replied to %s",
|
||||
"show_post": "Show Post",
|
||||
"show_user_profile": "Show user profile",
|
||||
"content_warning": "Content Warning",
|
||||
"user_replied_to": "رد على %s",
|
||||
"show_post": "اظهر المنشور",
|
||||
"show_user_profile": "اظهر الملف التعريفي للمستخدم",
|
||||
"content_warning": "تحذير عن المحتوى",
|
||||
"media_content_warning": "Tap anywhere to reveal",
|
||||
"poll": {
|
||||
"vote": "Vote",
|
||||
"closed": "Closed"
|
||||
"vote": "صَوّت",
|
||||
"closed": "انتهى"
|
||||
},
|
||||
"actions": {
|
||||
"reply": "Reply",
|
||||
"reblog": "Reblog",
|
||||
"unreblog": "Undo reblog",
|
||||
"favorite": "Favorite",
|
||||
"unfavorite": "Unfavorite",
|
||||
"menu": "Menu"
|
||||
"reply": "رد",
|
||||
"reblog": "إعادة النشر",
|
||||
"unreblog": "تراجع عن إعادة النشر",
|
||||
"favorite": "إضافة إلى المفضلة",
|
||||
"unfavorite": "إزالة من المفضلة",
|
||||
"menu": "القائمة"
|
||||
},
|
||||
"tag": {
|
||||
"url": "URL",
|
||||
"mention": "Mention",
|
||||
"link": "Link",
|
||||
"hashtag": "Hashtag",
|
||||
"url": "عنوان URL",
|
||||
"mention": "أشر إلى",
|
||||
"link": "الرابط",
|
||||
"hashtag": "الوسم",
|
||||
"email": "البريد الإلكتروني",
|
||||
"emoji": "Emoji"
|
||||
"emoji": "إيموجي"
|
||||
}
|
||||
},
|
||||
"friendship": {
|
||||
"follow": "Follow",
|
||||
"following": "Following",
|
||||
"follow": "اتبع",
|
||||
"following": "مُتابَع",
|
||||
"request": "Request",
|
||||
"pending": "Pending",
|
||||
"block": "Block",
|
||||
"block_user": "Block %s",
|
||||
"block_domain": "Block %s",
|
||||
"unblock": "Unblock",
|
||||
"unblock_user": "Unblock %s",
|
||||
"blocked": "Blocked",
|
||||
"block": "حظر",
|
||||
"block_user": "حظر %s",
|
||||
"block_domain": "حظر %s",
|
||||
"unblock": "إلغاء الحَظر",
|
||||
"unblock_user": "إلغاء حظر %s",
|
||||
"blocked": "محظور",
|
||||
"mute": "أكتم",
|
||||
"mute_user": "أكتم %s",
|
||||
"unmute": "إلغاء الكتم",
|
||||
|
@ -268,24 +268,24 @@
|
|||
"taken": "%s is already in use",
|
||||
"reserved": "%s is a reserved keyword",
|
||||
"accepted": "%s must be accepted",
|
||||
"blank": "%s is required",
|
||||
"invalid": "%s is invalid",
|
||||
"too_long": "%s is too long",
|
||||
"too_short": "%s is too short",
|
||||
"blank": "%s مطلوب",
|
||||
"invalid": "%s غير صالح",
|
||||
"too_long": "%s طويل جداً",
|
||||
"too_short": "%s قصير جدا",
|
||||
"inclusion": "%s is not a supported value"
|
||||
},
|
||||
"special": {
|
||||
"username_invalid": "Username must only contain alphanumeric characters and underscores",
|
||||
"username_too_long": "Username is too long (can’t be longer than 30 characters)",
|
||||
"email_invalid": "This is not a valid email address",
|
||||
"password_too_short": "Password is too short (must be at least 8 characters)"
|
||||
"email_invalid": "هذا عنوان بريد إلكتروني غير صالح",
|
||||
"password_too_short": "كلمة المرور قصيرة جداً (يجب أن تكون 8 أحرف على الأقل)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"server_rules": {
|
||||
"title": "Some ground rules.",
|
||||
"subtitle": "These rules are set by the admins of %s.",
|
||||
"prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.",
|
||||
"title": "بعض القواعد الأساسية.",
|
||||
"subtitle": "تم سنّ هذه القواعد من قبل مشرفي %s.",
|
||||
"prompt": "إن اخترت المواصلة، فإنك تخضع لشروط الخدمة وسياسة الخصوصية لـ %s.",
|
||||
"terms_of_service": "شروط الخدمة",
|
||||
"privacy_policy": "سياسة الخصوصية",
|
||||
"button": {
|
||||
|
@ -294,13 +294,13 @@
|
|||
},
|
||||
"confirm_email": {
|
||||
"title": "شيء واحد أخير.",
|
||||
"subtitle": "We just sent an email to %s,\ntap the link to confirm your account.",
|
||||
"subtitle": "لقد أرسلنا للتو رسالة بريد إلكتروني إلى %s،\nاضغط على الرابط لتأكيد حسابك.",
|
||||
"button": {
|
||||
"open_email_app": "Open Email App",
|
||||
"dont_receive_email": "I never got an email"
|
||||
"open_email_app": "افتح تطبيق البريد الإلكتروني",
|
||||
"dont_receive_email": "لم أستلم أبدًا بريدا إلكترونيا"
|
||||
},
|
||||
"dont_receive_email": {
|
||||
"title": "Check your email",
|
||||
"title": "تحقق من بريدك الإلكتروني",
|
||||
"description": "Check if your email address is correct as well as your junk folder if you haven’t.",
|
||||
"resend_email": "Resend Email"
|
||||
},
|
||||
|
@ -316,12 +316,12 @@
|
|||
"navigation_bar_state": {
|
||||
"offline": "غير متصل",
|
||||
"new_posts": "See new posts",
|
||||
"published": "Published!",
|
||||
"Publishing": "Publishing post..."
|
||||
"published": "تم نشره!",
|
||||
"Publishing": "جارٍ نشر المشاركة…"
|
||||
}
|
||||
},
|
||||
"suggestion_account": {
|
||||
"title": "Find People to Follow",
|
||||
"title": "ابحث عن أشخاص لمتابعتهم",
|
||||
"follow_explain": "When you follow someone, you’ll see their posts in your home feed."
|
||||
},
|
||||
"compose": {
|
||||
|
@ -345,23 +345,23 @@
|
|||
"description_video": "Describe the video for the visually-impaired..."
|
||||
},
|
||||
"poll": {
|
||||
"duration_time": "Duration: %s",
|
||||
"duration_time": "المدة: %s",
|
||||
"thirty_minutes": "30 دقيقة",
|
||||
"one_hour": "ساعة واحدة",
|
||||
"six_hours": "6 ساعات",
|
||||
"one_day": "يوم واحد",
|
||||
"three_days": "3 أيام",
|
||||
"seven_days": "7 أيام",
|
||||
"option_number": "Option %ld"
|
||||
"option_number": "الخيار %ld"
|
||||
},
|
||||
"content_warning": {
|
||||
"placeholder": "Write an accurate warning here..."
|
||||
},
|
||||
"visibility": {
|
||||
"public": "Public",
|
||||
"unlisted": "Unlisted",
|
||||
"private": "Followers only",
|
||||
"direct": "Only people I mention"
|
||||
"public": "للعامة",
|
||||
"unlisted": "غير مُدرَج",
|
||||
"private": "لمتابعيك فقط",
|
||||
"direct": "ففط للأشخاص المشار إليهم"
|
||||
},
|
||||
"auto_complete": {
|
||||
"space_to_add": "Space to add"
|
||||
|
@ -381,7 +381,7 @@
|
|||
"toggle_poll": "Toggle Poll",
|
||||
"toggle_content_warning": "Toggle Content Warning",
|
||||
"append_attachment_entry": "Add Attachment - %s",
|
||||
"select_visibility_entry": "Select Visibility - %s"
|
||||
"select_visibility_entry": "اختر مدى الظهور - %s"
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
|
@ -427,8 +427,8 @@
|
|||
"people_talking": "%s people are talking"
|
||||
},
|
||||
"accounts": {
|
||||
"title": "Accounts you might like",
|
||||
"description": "You may like to follow these accounts",
|
||||
"title": "حسابات قد تعجبك",
|
||||
"description": "قد ترغب في متابعة هذه الحسابات",
|
||||
"follow": "تابع"
|
||||
}
|
||||
},
|
||||
|
@ -440,28 +440,28 @@
|
|||
"posts": "المنشورات"
|
||||
},
|
||||
"empty_state": {
|
||||
"no_results": "No results"
|
||||
"no_results": "ليس هناك أية نتيجة"
|
||||
},
|
||||
"recent_search": "Recent searches",
|
||||
"clear": "Clear"
|
||||
"recent_search": "عمليات البحث الأخيرة",
|
||||
"clear": "امسح"
|
||||
}
|
||||
},
|
||||
"favorite": {
|
||||
"title": "Your Favorites"
|
||||
"title": "مفضلتك"
|
||||
},
|
||||
"notification": {
|
||||
"title": {
|
||||
"Everything": "Everything",
|
||||
"Mentions": "Mentions"
|
||||
"Everything": "الكل",
|
||||
"Mentions": "الإشارات"
|
||||
},
|
||||
"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_followed_you": "يتابعك %s",
|
||||
"user_favorited your post": "أضاف %s منشورك إلى مفضلته",
|
||||
"user_reblogged_your_post": "أعاد %s تدوين مشاركتك",
|
||||
"user_mentioned_you": "أشار إليك %s",
|
||||
"user_requested_to_follow_you": "طلب %s متابعتك",
|
||||
"user_your_poll_has_ended": "%s Your poll has ended",
|
||||
"keyobard": {
|
||||
"show_everything": "Show Everything",
|
||||
"show_everything": "إظهار كل شيء",
|
||||
"show_mentions": "Show Mentions"
|
||||
}
|
||||
},
|
||||
|
@ -481,12 +481,12 @@
|
|||
"notifications": {
|
||||
"title": "الإشعارات",
|
||||
"favorites": "Favorites my post",
|
||||
"follows": "Follows me",
|
||||
"follows": "يتابعني",
|
||||
"boosts": "Reblogs my post",
|
||||
"mentions": "Mentions me",
|
||||
"trigger": {
|
||||
"anyone": "anyone",
|
||||
"follower": "a follower",
|
||||
"follower": "مشترِك",
|
||||
"follow": "anyone I follow",
|
||||
"noone": "no one",
|
||||
"title": "Notify me when"
|
||||
|
@ -500,14 +500,14 @@
|
|||
"using_default_browser": "Use default browser to open links"
|
||||
},
|
||||
"boring_zone": {
|
||||
"title": "The Boring Zone",
|
||||
"title": "المنطقة المملة",
|
||||
"account_settings": "إعدادات الحساب",
|
||||
"terms": "شروط الخدمة",
|
||||
"privacy": "سياسة الخصوصية"
|
||||
},
|
||||
"spicy_zone": {
|
||||
"title": "The Spicy Zone",
|
||||
"clear": "Clear Media Cache",
|
||||
"title": "المنطقة الحارة",
|
||||
"clear": "مسح ذاكرة التخزين المؤقت للوسائط",
|
||||
"signout": "تسجيل الخروج"
|
||||
}
|
||||
},
|
||||
|
@ -524,8 +524,8 @@
|
|||
"step2": "الخطوة 2 من 2",
|
||||
"content1": "Are there any other posts you’d like to add to the report?",
|
||||
"content2": "Is there anything the moderators should know about this report?",
|
||||
"send": "Send Report",
|
||||
"skip_to_send": "Send without comment",
|
||||
"send": "ارسل الشكوى",
|
||||
"skip_to_send": "إرسال بدون تعليق",
|
||||
"text_placeholder": "Type or paste additional comments"
|
||||
},
|
||||
"preview": {
|
||||
|
@ -534,6 +534,16 @@
|
|||
"show_next": "إظهار التالي",
|
||||
"show_previous": "إظهار السابق"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"NSCameraUsageDescription": "Used to take photo for post status",
|
||||
"NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library",
|
||||
"NewPostShortcutItemTitle": "New Post",
|
||||
"NewPostShortcutItemTitle": "منشور جديد",
|
||||
"SearchShortcutItemTitle": "البحث"
|
||||
}
|
||||
|
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 notificació per llegir</string>
|
||||
<key>other</key>
|
||||
<string>%ld notificacions per llegir</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Mostrar Següent",
|
||||
"show_previous": "Mostrar Anterior"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Perfil actual seleccionat: %s. Toca dues vegades i manté el dit per a mostrar el commutador de comptes",
|
||||
"dismiss_account_switcher": "Descartar el commutador de comptes",
|
||||
"add_account": "Afegir compte"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "Nou a Mastodon",
|
||||
"multiple_account_switch_intro_description": "Commuta entre diversos comptes mantenint premut el botó del perfil.",
|
||||
"accessibility_hint": "Toca dues vegades per descartar l'assistent"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,30 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>two</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>few</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>many</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Show Next",
|
||||
"show_previous": "Show Previous"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Show Next",
|
||||
"show_previous": "Show Previous"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Nächstes anzeigen",
|
||||
"show_previous": "Vorheriges anzeigen"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Show Next",
|
||||
"show_previous": "Show Previous"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 notificación sin leer</string>
|
||||
<key>other</key>
|
||||
<string>%ld notificaciones sin leer</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Mostrar siguiente",
|
||||
"show_previous": "Mostrar anterior"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Perfil seleccionado actualmente: %s. Tocá dos veces y mantenelo presionado para cambiar de cuenta",
|
||||
"dismiss_account_switcher": "Descartar cambio de cuenta",
|
||||
"add_account": "Agregar cuenta"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "Novedad en Mastodon",
|
||||
"multiple_account_switch_intro_description": "Cambiá entre varias cuentas manteniendo presionado el botón del perfil.",
|
||||
"accessibility_hint": "Tocá dos veces para descartar este asistente"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Mostrar Siguiente",
|
||||
"show_previous": "Mostrar Anterior"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
@ -13,9 +29,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 character</string>
|
||||
<string>1 caractère</string>
|
||||
<key>other</key>
|
||||
<string>%ld characters</string>
|
||||
<string>%ld caractères</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_remains</key>
|
||||
|
@ -29,9 +45,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 character</string>
|
||||
<string>1 caractère</string>
|
||||
<key>other</key>
|
||||
<string>%ld characters</string>
|
||||
<string>%ld caractères</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.metric_formatted.post</key>
|
||||
|
@ -61,9 +77,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 post</string>
|
||||
<string>1 publication</string>
|
||||
<key>other</key>
|
||||
<string>%ld posts</string>
|
||||
<string>%ld publications</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.favorite</key>
|
||||
|
@ -157,9 +173,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 following</string>
|
||||
<string>1 abonnement</string>
|
||||
<key>other</key>
|
||||
<string>%ld following</string>
|
||||
<string>%ld abonnements</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.follower</key>
|
||||
|
@ -173,9 +189,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 follower</string>
|
||||
<string>1 abonné·e</string>
|
||||
<key>other</key>
|
||||
<string>%ld followers</string>
|
||||
<string>%ld abonné·e·s</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.year.left</key>
|
||||
|
@ -189,9 +205,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 year left</string>
|
||||
<string>Il reste 1 an</string>
|
||||
<key>other</key>
|
||||
<string>%ld years left</string>
|
||||
<string>%ld ans restants</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.month.left</key>
|
||||
|
@ -205,9 +221,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 months left</string>
|
||||
<string>1 mois restant</string>
|
||||
<key>other</key>
|
||||
<string>%ld months left</string>
|
||||
<string>%ld mois restants</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.day.left</key>
|
||||
|
@ -221,9 +237,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 day left</string>
|
||||
<string>Il reste 1 jour</string>
|
||||
<key>other</key>
|
||||
<string>%ld days left</string>
|
||||
<string>il reste %ld jours</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.hour.left</key>
|
||||
|
@ -237,9 +253,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 hour left</string>
|
||||
<string>1 heure restante</string>
|
||||
<key>other</key>
|
||||
<string>%ld hours left</string>
|
||||
<string>%ld heures restantes</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.minute.left</key>
|
||||
|
@ -253,9 +269,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 minute left</string>
|
||||
<string>1 minute restante</string>
|
||||
<key>other</key>
|
||||
<string>%ld minutes left</string>
|
||||
<string>%ld minutes restantes</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.second.left</key>
|
||||
|
@ -269,9 +285,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 second left</string>
|
||||
<string>Il reste 1 seconde</string>
|
||||
<key>other</key>
|
||||
<string>%ld seconds left</string>
|
||||
<string>%ld secondes restantes</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.year.ago.abbr</key>
|
||||
|
@ -285,9 +301,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1y ago</string>
|
||||
<string>il y a 1 année</string>
|
||||
<key>other</key>
|
||||
<string>%ldy ago</string>
|
||||
<string>il y a %ld ans</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.month.ago.abbr</key>
|
||||
|
@ -301,9 +317,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1M ago</string>
|
||||
<string>il y a 1 mois</string>
|
||||
<key>other</key>
|
||||
<string>%ldM ago</string>
|
||||
<string>il y a %ld mois</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.day.ago.abbr</key>
|
||||
|
@ -317,9 +333,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1d ago</string>
|
||||
<string>il y a 1j</string>
|
||||
<key>other</key>
|
||||
<string>%ldd ago</string>
|
||||
<string>il y a %ldj</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.hour.ago.abbr</key>
|
||||
|
@ -333,9 +349,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1h ago</string>
|
||||
<string>il y a 1h</string>
|
||||
<key>other</key>
|
||||
<string>%ldh ago</string>
|
||||
<string>il y a %ldh</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.minute.ago.abbr</key>
|
||||
|
@ -349,9 +365,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1m ago</string>
|
||||
<string>Il y a 1 m</string>
|
||||
<key>other</key>
|
||||
<string>%ldm ago</string>
|
||||
<string>il y a %ld m</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.second.ago.abbr</key>
|
||||
|
@ -365,9 +381,9 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1s ago</string>
|
||||
<string>Il y a 1 s</string>
|
||||
<key>other</key>
|
||||
<string>%lds ago</string>
|
||||
<string>il y a %ld s</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
|
|
|
@ -105,10 +105,10 @@
|
|||
"open_settings": "Ouvrir les paramètres"
|
||||
},
|
||||
"timeline": {
|
||||
"previous_status": "Article précédent",
|
||||
"next_status": "Article suivant",
|
||||
"previous_status": "Publication précédente",
|
||||
"next_status": "Publication suivante",
|
||||
"open_status": "Ouvrir la publication",
|
||||
"open_author_profile": "Ouvrir le profil de l'auteur",
|
||||
"open_author_profile": "Ouvrir le profil de l’auteur·rice",
|
||||
"open_reblogger_profile": "Ouvrir le profil du rebloggeur",
|
||||
"reply_status": "Répondre à la publication",
|
||||
"toggle_reblog": "Basculer le reblogue lors de la publication",
|
||||
|
@ -122,10 +122,10 @@
|
|||
}
|
||||
},
|
||||
"status": {
|
||||
"user_reblogged": "%s à reblogué",
|
||||
"user_reblogged": "%s a reblogué",
|
||||
"user_replied_to": "À répondu à %s",
|
||||
"show_post": "Montrer la publication",
|
||||
"show_user_profile": "Montrer le profil de l’utilisateur",
|
||||
"show_user_profile": "Montrer le profil de l’utilisateur·rice",
|
||||
"content_warning": "Avertissement de contenu",
|
||||
"media_content_warning": "Tapotez n’importe où pour révéler la publication",
|
||||
"poll": {
|
||||
|
@ -180,9 +180,9 @@
|
|||
"header": {
|
||||
"no_status_found": "Aucune publication trouvée",
|
||||
"blocking_warning": "Vous ne pouvez pas voir le profil de cet utilisateur\n tant que vous ne l’avez pas débloqué\nVotre profil ressemble à ça pour lui.",
|
||||
"user_blocking_warning": "Vous ne pouvez pas voir le profil de %s tant que vous ne l’avez pas débloqué\nVotre profil ressemble à ça pour lui.",
|
||||
"user_blocking_warning": "Vous ne pouvez pas voir le profil de %s\ntant que vous ne l’avez pas débloqué\nVotre profil ressemble à ça pour lui.",
|
||||
"blocked_warning": "Vous ne pouvez pas voir le profil de cet utilisateur\n tant qu'il ne vous aura pas débloqué.",
|
||||
"user_blocked_warning": "Vous ne pouvez pas voir le profil de %s\n tant qu'il ne vous aura pas débloqué.",
|
||||
"user_blocked_warning": "Vous ne pouvez pas voir le profil de %s\ntant qu’il ne vous aura pas débloqué.",
|
||||
"suspended_warning": "Cet utilisateur a été suspendu.",
|
||||
"user_suspended_warning": "Le compte de %s à été suspendu."
|
||||
}
|
||||
|
@ -217,7 +217,7 @@
|
|||
},
|
||||
"label": {
|
||||
"language": "LANGUE",
|
||||
"users": "UTILISATEURS",
|
||||
"users": "UTILISATEUR·RICE·S",
|
||||
"category": "CATÉGORIE"
|
||||
},
|
||||
"input": {
|
||||
|
@ -255,7 +255,7 @@
|
|||
},
|
||||
"error": {
|
||||
"item": {
|
||||
"username": "Nom d'utilisateur",
|
||||
"username": "Nom d’utilisateur",
|
||||
"email": "Courriel",
|
||||
"password": "Mot de passe",
|
||||
"agreement": "Accord",
|
||||
|
@ -370,7 +370,7 @@
|
|||
"append_attachment": "Joindre un document",
|
||||
"append_poll": "Ajouter un Sondage",
|
||||
"remove_poll": "Retirer le sondage",
|
||||
"custom_emoji_picker": "Sélecteur d’émojis personnalisé",
|
||||
"custom_emoji_picker": "Sélecteur d’émojis personnalisés",
|
||||
"enable_content_warning": "Basculer l’avertissement de contenu",
|
||||
"disable_content_warning": "Désactiver l'avertissement de contenu",
|
||||
"post_visibility_menu": "Menu de Visibilité de la publication"
|
||||
|
@ -405,7 +405,7 @@
|
|||
"relationship_action_alert": {
|
||||
"confirm_unmute_user": {
|
||||
"title": "Ne plus mettre en sourdine ce compte",
|
||||
"message": "Êtes-vous sûr de vouloir mettre en sourdine %s"
|
||||
"message": "Êtes-vous sûr de vouloir désactiver la sourdine de %s"
|
||||
},
|
||||
"confirm_unblock_usre": {
|
||||
"title": "Débloquer le compte",
|
||||
|
@ -454,12 +454,12 @@
|
|||
"Everything": "Tout",
|
||||
"Mentions": "Mentions"
|
||||
},
|
||||
"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",
|
||||
"user_followed_you": "%s s’est abonné à vous",
|
||||
"user_favorited your post": "%s a mis votre pouet en favori",
|
||||
"user_reblogged_your_post": "%s a partagé votre publication",
|
||||
"user_mentioned_you": "%s vous a mentionné",
|
||||
"user_requested_to_follow_you": "%s a demandé à vous suivre",
|
||||
"user_your_poll_has_ended": "%s votre sondage est terminé",
|
||||
"keyobard": {
|
||||
"show_everything": "Tout Afficher",
|
||||
"show_mentions": "Afficher les mentions"
|
||||
|
@ -496,7 +496,7 @@
|
|||
"title": "Préférences",
|
||||
"true_black_dark_mode": "Vrai mode sombre",
|
||||
"disable_avatar_animation": "Désactiver les avatars animés",
|
||||
"disable_emoji_animation": "Désactiver les émoticônes animées",
|
||||
"disable_emoji_animation": "Désactiver les émojis animées",
|
||||
"using_default_browser": "Utiliser le navigateur par défaut pour ouvrir les liens"
|
||||
},
|
||||
"boring_zone": {
|
||||
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Afficher le suivant",
|
||||
"show_previous": "Afficher le précédent"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,26 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>two</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>few</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Air adhart",
|
||||
"show_previous": "Air ais"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Show Next",
|
||||
"show_previous": "Show Previous"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,20 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
@ -69,7 +83,7 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>other</key>
|
||||
<string>%ld favorites</string>
|
||||
<string>%ld favorit</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.reblog</key>
|
||||
|
@ -97,7 +111,7 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>other</key>
|
||||
<string>%ld votes</string>
|
||||
<string>%ld suara</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.voter</key>
|
||||
|
@ -111,7 +125,7 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>other</key>
|
||||
<string>%ld voters</string>
|
||||
<string>%ld pemilih</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.people_talking</key>
|
||||
|
|
|
@ -267,7 +267,7 @@
|
|||
"unreachable": "%s sepertinya tidak ada",
|
||||
"taken": "%s sudah digunakan",
|
||||
"reserved": "%s is a reserved keyword",
|
||||
"accepted": "%s must be accepted",
|
||||
"accepted": "%s harus diterima",
|
||||
"blank": "%s diperlukan",
|
||||
"invalid": "%s tidak valid",
|
||||
"too_long": "%s terlalu panjang",
|
||||
|
@ -355,7 +355,7 @@
|
|||
"option_number": "Option %ld"
|
||||
},
|
||||
"content_warning": {
|
||||
"placeholder": "Write an accurate warning here..."
|
||||
"placeholder": "Tulis peringatan yang akurat di sini..."
|
||||
},
|
||||
"visibility": {
|
||||
"public": "Publik",
|
||||
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Show Next",
|
||||
"show_previous": "Show Previous"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,20 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "次を見る",
|
||||
"show_previous": "前を見る"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,20 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "다음 보기",
|
||||
"show_previous": "이전 보기"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Volgende",
|
||||
"show_previous": "Vorige"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Show Next",
|
||||
"show_previous": "Show Previous"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Show Next",
|
||||
"show_previous": "Show Previous"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,24 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>few</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Show Next",
|
||||
"show_previous": "Show Previous"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,10 +2,30 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>few</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>many</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>Input limit exceeds %#@character_count@</string>
|
||||
<string>Лимит превышен на %#@character_count@</string>
|
||||
<key>character_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
|
@ -13,19 +33,19 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 character</string>
|
||||
<string>%ld символ</string>
|
||||
<key>few</key>
|
||||
<string>%ld characters</string>
|
||||
<string>%ld символа</string>
|
||||
<key>many</key>
|
||||
<string>%ld characters</string>
|
||||
<string>%ld символов</string>
|
||||
<key>other</key>
|
||||
<string>%ld characters</string>
|
||||
<string>%ld символа</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_remains</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>Input limit remains %#@character_count@</string>
|
||||
<string>%#@character_count@</string>
|
||||
<key>character_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
|
@ -33,13 +53,13 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 character</string>
|
||||
<string>%ld символ остался</string>
|
||||
<key>few</key>
|
||||
<string>%ld characters</string>
|
||||
<string>%ld символа осталось</string>
|
||||
<key>many</key>
|
||||
<string>%ld characters</string>
|
||||
<string>%ld символов осталось</string>
|
||||
<key>other</key>
|
||||
<string>%ld characters</string>
|
||||
<string>%ld символа осталось</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.metric_formatted.post</key>
|
||||
|
@ -53,13 +73,13 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>post</string>
|
||||
<string>пост</string>
|
||||
<key>few</key>
|
||||
<string>posts</string>
|
||||
<string>поста</string>
|
||||
<key>many</key>
|
||||
<string>posts</string>
|
||||
<string>постов</string>
|
||||
<key>other</key>
|
||||
<string>posts</string>
|
||||
<string>поста</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.post</key>
|
||||
|
@ -133,13 +153,13 @@
|
|||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 vote</string>
|
||||
<string>%ld голос</string>
|
||||
<key>few</key>
|
||||
<string>%ld votes</string>
|
||||
<string>%ld голоса</string>
|
||||
<key>many</key>
|
||||
<string>%ld votes</string>
|
||||
<string>%ld голосов</string>
|
||||
<key>other</key>
|
||||
<string>%ld votes</string>
|
||||
<string>%ld голоса</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.voter</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Следующее изображение",
|
||||
"show_previous": "Предыдущее изображение"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,5 +2,5 @@
|
|||
"NSCameraUsageDescription": "Used to take photo for post status",
|
||||
"NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library",
|
||||
"NewPostShortcutItemTitle": "New Post",
|
||||
"SearchShortcutItemTitle": "Search"
|
||||
"SearchShortcutItemTitle": "Поиск"
|
||||
}
|
||||
|
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -454,12 +454,12 @@
|
|||
"Everything": "Everything",
|
||||
"Mentions": "Mentions"
|
||||
},
|
||||
"user_followed_you": "%s followed you",
|
||||
"user_followed_you": "%s följde dig",
|
||||
"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",
|
||||
"user_mentioned_you": "%s nämnde dig",
|
||||
"user_requested_to_follow_you": "%s har begärt att följa dig",
|
||||
"user_your_poll_has_ended": "%s Omröstningen har avslutats",
|
||||
"keyobard": {
|
||||
"show_everything": "Show Everything",
|
||||
"show_mentions": "Show Mentions"
|
||||
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Show Next",
|
||||
"show_previous": "Show Previous"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Lägg till konto"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Show Next",
|
||||
"show_previous": "Show Previous"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Lägg till konto"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,20 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -179,10 +179,10 @@
|
|||
},
|
||||
"header": {
|
||||
"no_status_found": "ไม่พบโพสต์",
|
||||
"blocking_warning": "You can’t view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.",
|
||||
"user_blocking_warning": "You can’t view %s’s profile\nuntil you unblock them.\nYour profile looks like this to them.",
|
||||
"blocked_warning": "You can’t view this user’s profile\nuntil they unblock you.",
|
||||
"user_blocked_warning": "You can’t view %s’s profile\nuntil they unblock you.",
|
||||
"blocking_warning": "คุณไม่สามารถดูโปรไฟล์ของผู้ใช้นี้\nจนกว่าคุณจะเลิกปิดกั้นผู้ใช้นี้\nผู้ใช้นี้เห็นโปรไฟล์ของคุณเหมือนกับที่คุณเห็น",
|
||||
"user_blocking_warning": "คุณไม่สามารถดูโปรไฟล์ของ %s\nจนกว่าคุณจะเลิกปิดกั้นผู้ใช้นี้\nผู้ใช้นี้เห็นโปรไฟล์ของคุณเหมือนกับที่คุณเห็น",
|
||||
"blocked_warning": "คุณไม่สามารถดูโปรไฟล์ของผู้ใช้นี้\nจนกว่าผู้ใช้นี้จะเลิกปิดกั้นคุณ",
|
||||
"user_blocked_warning": "คุณไม่สามารถดูโปรไฟล์ของ %s\nจนกว่าผู้ใช้นี้จะเลิกปิดกั้นคุณ",
|
||||
"suspended_warning": "ผู้ใช้นี้ถูกระงับการใช้งาน",
|
||||
"user_suspended_warning": "บัญชีของ %s ถูกระงับการใช้งาน"
|
||||
}
|
||||
|
@ -210,7 +210,7 @@
|
|||
"regional": "ภูมิภาค",
|
||||
"art": "ศิลปะ",
|
||||
"music": "ดนตรี",
|
||||
"tech": "tech"
|
||||
"tech": "เทคโนโลยี"
|
||||
},
|
||||
"see_less": "ดูน้อยลง",
|
||||
"see_more": "ดูเพิ่มเติม"
|
||||
|
@ -285,7 +285,7 @@
|
|||
"server_rules": {
|
||||
"title": "กฎพื้นฐานบางประการ",
|
||||
"subtitle": "กฎเหล่านี้ถูกตั้งโดยผู้ดูแลของ %s",
|
||||
"prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.",
|
||||
"prompt": "เมื่อคุณดำเนินการต่อ คุณอยู่ภายใต้เงื่อนไขการให้บริการและนโยบายความเป็นส่วนตัวสำหรับ %s",
|
||||
"terms_of_service": "เงื่อนไขการให้บริการ",
|
||||
"privacy_policy": "นโยบายความเป็นส่วนตัว",
|
||||
"button": {
|
||||
|
@ -534,6 +534,16 @@
|
|||
"show_next": "แสดงถัดไป",
|
||||
"show_previous": "แสดงก่อนหน้า"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,20 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>other</key>
|
||||
<string>%ld 条未读通知</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "显示下一个",
|
||||
"show_previous": "显示前一个"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "当前账户:%s。 双击并按住来打开账户切换页面",
|
||||
"dismiss_account_switcher": "关闭账户切换页面",
|
||||
"add_account": "添加账户"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "新功能",
|
||||
"multiple_account_switch_intro_description": "按住个人资料标签按钮,即可在多个账户之间进行切换。",
|
||||
"accessibility_hint": "双击关闭此向导"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,20 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -534,6 +534,16 @@
|
|||
"show_next": "Show Next",
|
||||
"show_previous": "Show Previous"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -199,6 +199,8 @@
|
|||
DB0C947226A7D2D70088FB11 /* AvatarButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0C947126A7D2D70088FB11 /* AvatarButton.swift */; };
|
||||
DB0C947726A7FE840088FB11 /* NotificationAvatarButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0C947626A7FE840088FB11 /* NotificationAvatarButton.swift */; };
|
||||
DB0E91EA26A9675100BD2ACC /* MetaLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0E91E926A9675100BD2ACC /* MetaLabel.swift */; };
|
||||
DB0EF72B26FDB1D200347686 /* SidebarListCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0EF72A26FDB1D200347686 /* SidebarListCollectionViewCell.swift */; };
|
||||
DB0EF72E26FDB24F00347686 /* SidebarListContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0EF72D26FDB24F00347686 /* SidebarListContentView.swift */; };
|
||||
DB0F8150264D1E2500F2A12B /* PickServerLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0F814F264D1E2500F2A12B /* PickServerLoaderTableViewCell.swift */; };
|
||||
DB118A8225E4B6E600FAB162 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DB118A8125E4B6E600FAB162 /* Preview Assets.xcassets */; };
|
||||
DB1D186C25EF5BA7003F1F23 /* PollTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1D186B25EF5BA7003F1F23 /* PollTableView.swift */; };
|
||||
|
@ -265,6 +267,8 @@
|
|||
DB4924E226312AB200E9DB22 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4924E126312AB200E9DB22 /* NotificationService.swift */; };
|
||||
DB4932B126F1FB5300EF46D4 /* WizardCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4932B026F1FB5300EF46D4 /* WizardCardView.swift */; };
|
||||
DB4932B326F2054200EF46D4 /* CircleAvatarButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4932B226F2054200EF46D4 /* CircleAvatarButton.swift */; };
|
||||
DB4932B726F30F0700EF46D4 /* Array.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F20223826146553000C64BF /* Array.swift */; };
|
||||
DB4932B926F31AD300EF46D4 /* BadgeButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4932B826F31AD300EF46D4 /* BadgeButton.swift */; };
|
||||
DB49A61425FF2C5600B98345 /* EmojiService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB49A61325FF2C5600B98345 /* EmojiService.swift */; };
|
||||
DB49A61F25FF32AA00B98345 /* EmojiService+CustomEmojiViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB49A61E25FF32AA00B98345 /* EmojiService+CustomEmojiViewModel.swift */; };
|
||||
DB49A62525FF334C00B98345 /* EmojiService+CustomEmojiViewModel+LoadState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB49A62425FF334C00B98345 /* EmojiService+CustomEmojiViewModel+LoadState.swift */; };
|
||||
|
@ -357,6 +361,9 @@
|
|||
DB789A1225F9F2CC0071ACA0 /* ComposeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB789A1125F9F2CC0071ACA0 /* ComposeViewModel.swift */; };
|
||||
DB7F48452620241000796008 /* ProfileHeaderViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB7F48442620241000796008 /* ProfileHeaderViewModel.swift */; };
|
||||
DB8190C62601FF0400020C08 /* AttachmentContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8190C52601FF0400020C08 /* AttachmentContainerView.swift */; };
|
||||
DB852D1926FAEB6B00FC9D81 /* SidebarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1826FAEB6B00FC9D81 /* SidebarViewController.swift */; };
|
||||
DB852D1C26FB021500FC9D81 /* RootSplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1B26FB021500FC9D81 /* RootSplitViewController.swift */; };
|
||||
DB852D1F26FB037800FC9D81 /* SidebarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */; };
|
||||
DB87D4452609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB87D4442609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift */; };
|
||||
DB87D44B2609C11900D12C0D /* PollOptionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB87D44A2609C11900D12C0D /* PollOptionView.swift */; };
|
||||
DB87D4512609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB87D4502609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift */; };
|
||||
|
@ -565,6 +572,10 @@
|
|||
DBE3CE13261D7D4200430CC6 /* StatusTableViewControllerAspect.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CE12261D7D4200430CC6 /* StatusTableViewControllerAspect.swift */; };
|
||||
DBE54AC62636C89F004E7C0B /* NotificationPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE54AC52636C89F004E7C0B /* NotificationPreference.swift */; };
|
||||
DBE54ACC2636C8FD004E7C0B /* NotificationPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE54AC52636C89F004E7C0B /* NotificationPreference.swift */; };
|
||||
DBF156DF2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBF156DE2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift */; };
|
||||
DBF156E22702DA6900EC00B7 /* UIStatusBarManager+HandleTapAction.m in Sources */ = {isa = PBXBuildFile; fileRef = DBF156E12702DA6900EC00B7 /* UIStatusBarManager+HandleTapAction.m */; };
|
||||
DBF156E42702DB3F00EC00B7 /* HandleTapAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBF156E32702DB3F00EC00B7 /* HandleTapAction.swift */; };
|
||||
DBF1572F27046F1A00EC00B7 /* SecondaryPlaceholderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBF1572E27046F1A00EC00B7 /* SecondaryPlaceholderViewController.swift */; };
|
||||
DBF1D24E269DAF5D00C1C08A /* SearchDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBF1D24D269DAF5D00C1C08A /* SearchDetailViewController.swift */; };
|
||||
DBF1D251269DB01200C1C08A /* SearchHistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBF1D250269DB01200C1C08A /* SearchHistoryViewController.swift */; };
|
||||
DBF1D257269DBAC600C1C08A /* SearchDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBF1D256269DBAC600C1C08A /* SearchDetailViewModel.swift */; };
|
||||
|
@ -949,6 +960,8 @@
|
|||
DB0C947126A7D2D70088FB11 /* AvatarButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarButton.swift; sourceTree = "<group>"; };
|
||||
DB0C947626A7FE840088FB11 /* NotificationAvatarButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationAvatarButton.swift; sourceTree = "<group>"; };
|
||||
DB0E91E926A9675100BD2ACC /* MetaLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetaLabel.swift; sourceTree = "<group>"; };
|
||||
DB0EF72A26FDB1D200347686 /* SidebarListCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarListCollectionViewCell.swift; sourceTree = "<group>"; };
|
||||
DB0EF72D26FDB24F00347686 /* SidebarListContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarListContentView.swift; sourceTree = "<group>"; };
|
||||
DB0F814D264CFFD300F2A12B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
DB0F814E264CFFD300F2A12B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
DB0F814F264D1E2500F2A12B /* PickServerLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerLoaderTableViewCell.swift; sourceTree = "<group>"; };
|
||||
|
@ -1024,6 +1037,7 @@
|
|||
DB4924E126312AB200E9DB22 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = "<group>"; };
|
||||
DB4932B026F1FB5300EF46D4 /* WizardCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WizardCardView.swift; sourceTree = "<group>"; };
|
||||
DB4932B226F2054200EF46D4 /* CircleAvatarButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleAvatarButton.swift; sourceTree = "<group>"; };
|
||||
DB4932B826F31AD300EF46D4 /* BadgeButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BadgeButton.swift; sourceTree = "<group>"; };
|
||||
DB49A61325FF2C5600B98345 /* EmojiService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiService.swift; sourceTree = "<group>"; };
|
||||
DB49A61E25FF32AA00B98345 /* EmojiService+CustomEmojiViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EmojiService+CustomEmojiViewModel.swift"; sourceTree = "<group>"; };
|
||||
DB49A62425FF334C00B98345 /* EmojiService+CustomEmojiViewModel+LoadState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EmojiService+CustomEmojiViewModel+LoadState.swift"; sourceTree = "<group>"; };
|
||||
|
@ -1135,6 +1149,9 @@
|
|||
DB789A1125F9F2CC0071ACA0 /* ComposeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeViewModel.swift; sourceTree = "<group>"; };
|
||||
DB7F48442620241000796008 /* ProfileHeaderViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileHeaderViewModel.swift; sourceTree = "<group>"; };
|
||||
DB8190C52601FF0400020C08 /* AttachmentContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachmentContainerView.swift; sourceTree = "<group>"; };
|
||||
DB852D1826FAEB6B00FC9D81 /* SidebarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarViewController.swift; sourceTree = "<group>"; };
|
||||
DB852D1B26FB021500FC9D81 /* RootSplitViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootSplitViewController.swift; sourceTree = "<group>"; };
|
||||
DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarViewModel.swift; sourceTree = "<group>"; };
|
||||
DB87D4442609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusPollOptionCollectionViewCell.swift; sourceTree = "<group>"; };
|
||||
DB87D44A2609C11900D12C0D /* PollOptionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollOptionView.swift; sourceTree = "<group>"; };
|
||||
DB87D4502609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusPollOptionAppendEntryCollectionViewCell.swift; sourceTree = "<group>"; };
|
||||
|
@ -1339,6 +1356,12 @@
|
|||
DBE3CE0C261D767100430CC6 /* FavoriteViewController+Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FavoriteViewController+Provider.swift"; sourceTree = "<group>"; };
|
||||
DBE3CE12261D7D4200430CC6 /* StatusTableViewControllerAspect.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusTableViewControllerAspect.swift; sourceTree = "<group>"; };
|
||||
DBE54AC52636C89F004E7C0B /* NotificationPreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationPreference.swift; sourceTree = "<group>"; };
|
||||
DBF156DD27006F5D00EC00B7 /* CoreData 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "CoreData 2.xcdatamodel"; sourceTree = "<group>"; };
|
||||
DBF156DE2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarAddAccountCollectionViewCell.swift; sourceTree = "<group>"; };
|
||||
DBF156E02702DA6800EC00B7 /* Mastodon-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Mastodon-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
DBF156E12702DA6900EC00B7 /* UIStatusBarManager+HandleTapAction.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIStatusBarManager+HandleTapAction.m"; sourceTree = "<group>"; };
|
||||
DBF156E32702DB3F00EC00B7 /* HandleTapAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HandleTapAction.swift; sourceTree = "<group>"; };
|
||||
DBF1572E27046F1A00EC00B7 /* SecondaryPlaceholderViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondaryPlaceholderViewController.swift; sourceTree = "<group>"; };
|
||||
DBF1D24D269DAF5D00C1C08A /* SearchDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchDetailViewController.swift; sourceTree = "<group>"; };
|
||||
DBF1D250269DB01200C1C08A /* SearchHistoryViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistoryViewController.swift; sourceTree = "<group>"; };
|
||||
DBF1D256269DBAC600C1C08A /* SearchDetailViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchDetailViewModel.swift; sourceTree = "<group>"; };
|
||||
|
@ -1721,6 +1744,9 @@
|
|||
DB6180EC26391C6C0018D199 /* TransitioningMath.swift */,
|
||||
DB75BF1D263C1C1B00EDBF1F /* CustomScheduler.swift */,
|
||||
DBAC649A267DF8C8007FE9FD /* ActivityIndicatorNode.swift */,
|
||||
DBF156E32702DB3F00EC00B7 /* HandleTapAction.swift */,
|
||||
DBF156E12702DA6900EC00B7 /* UIStatusBarManager+HandleTapAction.m */,
|
||||
DBF156E02702DA6800EC00B7 /* Mastodon-Bridging-Header.h */,
|
||||
);
|
||||
path = Vender;
|
||||
sourceTree = "<group>";
|
||||
|
@ -2073,6 +2099,16 @@
|
|||
path = Button;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DB0EF72C26FDB1D600347686 /* View */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DBF156DE2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift */,
|
||||
DB0EF72A26FDB1D200347686 /* SidebarListCollectionViewCell.swift */,
|
||||
DB0EF72D26FDB24F00347686 /* SidebarListContentView.swift */,
|
||||
);
|
||||
path = View;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DB1D187125EF5BBD003F1F23 /* TableView */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
@ -2514,6 +2550,27 @@
|
|||
path = CollectionViewCell;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DB852D1A26FAED0100FC9D81 /* Sidebar */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DB0EF72C26FDB1D600347686 /* View */,
|
||||
DB852D1826FAEB6B00FC9D81 /* SidebarViewController.swift */,
|
||||
DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */,
|
||||
DBF1572E27046F1A00EC00B7 /* SecondaryPlaceholderViewController.swift */,
|
||||
);
|
||||
path = Sidebar;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DB852D1D26FB021900FC9D81 /* Root */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DB852D1B26FB021500FC9D81 /* RootSplitViewController.swift */,
|
||||
DB852D1A26FAED0100FC9D81 /* Sidebar */,
|
||||
DB8AF54E25C13703002E6C99 /* MainTab */,
|
||||
);
|
||||
path = Root;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DB87D45C2609DE6600D12C0D /* TextField */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
@ -2625,7 +2682,7 @@
|
|||
children = (
|
||||
2D7631A425C1532200929FB9 /* Share */,
|
||||
DB6180E426391A500018D199 /* Transition */,
|
||||
DB8AF54E25C13703002E6C99 /* MainTab */,
|
||||
DB852D1D26FB021900FC9D81 /* Root */,
|
||||
DB01409B25C40BB600F9F3CF /* Onboarding */,
|
||||
DB9F58ED26EF435800E7BBE9 /* Account */,
|
||||
2D38F1D325CD463600561493 /* HomeTimeline */,
|
||||
|
@ -2817,6 +2874,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
DBA5A53026F08EF000CACBAA /* DragIndicatorView.swift */,
|
||||
DB4932B826F31AD300EF46D4 /* BadgeButton.swift */,
|
||||
);
|
||||
path = View;
|
||||
sourceTree = "<group>";
|
||||
|
@ -3390,7 +3448,7 @@
|
|||
TargetAttributes = {
|
||||
DB427DD125BAA00100D1B89D = {
|
||||
CreatedOnToolsVersion = 12.4;
|
||||
LastSwiftMigration = 1220;
|
||||
LastSwiftMigration = 1300;
|
||||
};
|
||||
DB427DE725BAA00100D1B89D = {
|
||||
CreatedOnToolsVersion = 12.4;
|
||||
|
@ -3862,6 +3920,7 @@
|
|||
DB72601C25E36A2100235243 /* MastodonServerRulesViewController.swift in Sources */,
|
||||
DBB5250E2611EBAF002F1F29 /* ProfileSegmentedViewController.swift in Sources */,
|
||||
2D42FF8F25C8228A004A627A /* UIButton.swift in Sources */,
|
||||
DBF156DF2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift in Sources */,
|
||||
DB789A0B25F9F2950071ACA0 /* ComposeViewController.swift in Sources */,
|
||||
DB938F0926240F3C00E5B6C1 /* RemoteThreadViewModel.swift in Sources */,
|
||||
DBBC24AE26A53DC100398BB9 /* ReplicaStatusView.swift in Sources */,
|
||||
|
@ -3916,6 +3975,7 @@
|
|||
DB36679F268ABAF20027D07F /* ComposeStatusAttachmentSection.swift in Sources */,
|
||||
2DA7D04425CA52B200804E11 /* TimelineLoaderTableViewCell.swift in Sources */,
|
||||
DB87D44B2609C11900D12C0D /* PollOptionView.swift in Sources */,
|
||||
DBF1572F27046F1A00EC00B7 /* SecondaryPlaceholderViewController.swift in Sources */,
|
||||
DB03F7F32689AEA3007B274C /* ComposeRepliedToStatusContentTableViewCell.swift in Sources */,
|
||||
2D4AD8A826316D3500613EFC /* SelectedAccountItem.swift in Sources */,
|
||||
DBE3CDFB261C6CA500430CC6 /* FavoriteViewModel.swift in Sources */,
|
||||
|
@ -3975,6 +4035,7 @@
|
|||
DBAEDE5C267A058D00D25FF5 /* BlurhashImageCacheService.swift in Sources */,
|
||||
2D38F1DF25CD46A400561493 /* HomeTimelineViewController+Provider.swift in Sources */,
|
||||
DB1D843026566512000346B3 /* KeyboardPreference.swift in Sources */,
|
||||
DB852D1926FAEB6B00FC9D81 /* SidebarViewController.swift in Sources */,
|
||||
2D206B9225F60EA700143C56 /* UIControl.swift in Sources */,
|
||||
2D9DB96B263A91D1007C1D71 /* APIService+DomainBlock.swift in Sources */,
|
||||
DBBF1DC92652538500E5B703 /* AutoCompleteSection.swift in Sources */,
|
||||
|
@ -4006,6 +4067,7 @@
|
|||
DBC7A672260C897100E57475 /* StatusContentWarningEditorView.swift in Sources */,
|
||||
DB3667A6268AE2620027D07F /* ComposeStatusPollSection.swift in Sources */,
|
||||
DB59F10E25EF724F001F1DAB /* APIService+Poll.swift in Sources */,
|
||||
DB852D1F26FB037800FC9D81 /* SidebarViewModel.swift in Sources */,
|
||||
DB47229725F9EFAD00DA7F53 /* NSManagedObjectContext.swift in Sources */,
|
||||
2D34D9D126148D9E0081BFC0 /* APIService+Recommend.swift in Sources */,
|
||||
DBB525562611EDCA002F1F29 /* UserTimelineViewModel.swift in Sources */,
|
||||
|
@ -4017,6 +4079,7 @@
|
|||
DB3667A1268ABB2E0027D07F /* ComposeStatusAttachmentItem.swift in Sources */,
|
||||
DB1D186C25EF5BA7003F1F23 /* PollTableView.swift in Sources */,
|
||||
DBA94434265CBB5300C537E1 /* ProfileFieldSection.swift in Sources */,
|
||||
DBF156E42702DB3F00EC00B7 /* HandleTapAction.swift in Sources */,
|
||||
DB023295267F0AB800031745 /* ASMetaEditableTextNode.swift in Sources */,
|
||||
2D5981A125E4A593000FB903 /* MastodonConfirmEmailViewModel.swift in Sources */,
|
||||
DB4F096C269EFA2000D62E92 /* SearchResultViewController+StatusProvider.swift in Sources */,
|
||||
|
@ -4043,6 +4106,7 @@
|
|||
DBC7A67C260DFADE00E57475 /* StatusPublishService.swift in Sources */,
|
||||
DBCBCC092680B01B000F5B51 /* AsyncHomeTimelineViewModel+LoadMiddleState.swift in Sources */,
|
||||
2DCB73FD2615C13900EC03D4 /* SearchRecommendCollectionHeader.swift in Sources */,
|
||||
DB852D1C26FB021500FC9D81 /* RootSplitViewController.swift in Sources */,
|
||||
DB02CDBF2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift in Sources */,
|
||||
DB1FD44425F26CCC004CFCFC /* PickServerSection.swift in Sources */,
|
||||
0FB3D30F25E525CD00AAD544 /* PickServerCategoryView.swift in Sources */,
|
||||
|
@ -4063,6 +4127,7 @@
|
|||
2DAC9E46262FC9FD0062E1A6 /* SuggestionAccountTableViewCell.swift in Sources */,
|
||||
DB4FFC2C269EC39600D62E92 /* SearchTransitionController.swift in Sources */,
|
||||
DBA5E7A9263BD3A4004598BB /* ContextMenuImagePreviewViewController.swift in Sources */,
|
||||
DBF156E22702DA6900EC00B7 /* UIStatusBarManager+HandleTapAction.m in Sources */,
|
||||
DB45FADD25CA6F6B005A8AC7 /* APIService+CoreData+MastodonUser.swift in Sources */,
|
||||
2D32EABA25CB9B0500C9ED86 /* UIView.swift in Sources */,
|
||||
2D38F20825CD491300561493 /* DisposeBagCollectable.swift in Sources */,
|
||||
|
@ -4104,6 +4169,7 @@
|
|||
DB9D6C0E25E4F9780051B173 /* MosaicImageViewContainer.swift in Sources */,
|
||||
DBCBCC0D2680B908000F5B51 /* HomeTimelinePreference.swift in Sources */,
|
||||
DB71FD3625F8A16C00512AE1 /* APIService+Persist+PersistMemo.swift in Sources */,
|
||||
DB0EF72E26FDB24F00347686 /* SidebarListContentView.swift in Sources */,
|
||||
DBBE1B4525F3474B0081417A /* MastodonPickServerAppearance.swift in Sources */,
|
||||
DB98338725C945ED00AD9700 /* Strings.swift in Sources */,
|
||||
2D7867192625B77500211898 /* NotificationItem.swift in Sources */,
|
||||
|
@ -4119,6 +4185,7 @@
|
|||
2D32EADA25CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift in Sources */,
|
||||
5B90C48526259BF10002E742 /* APIService+Subscriptions.swift in Sources */,
|
||||
0F20223926146553000C64BF /* Array.swift in Sources */,
|
||||
DB0EF72B26FDB1D200347686 /* SidebarListCollectionViewCell.swift in Sources */,
|
||||
5B90C460262599800002E742 /* SettingsAppearanceTableViewCell.swift in Sources */,
|
||||
DB0C946B26A700AB0088FB11 /* MastodonUser+Property.swift in Sources */,
|
||||
DB8AF54425C13647002E6C99 /* SceneCoordinator.swift in Sources */,
|
||||
|
@ -4155,6 +4222,7 @@
|
|||
2D69CFF425CA9E2200C3A1B2 /* LoadMoreConfigurableTableViewContainer.swift in Sources */,
|
||||
DB482A4B261340A7008AE74C /* APIService+UserTimeline.swift in Sources */,
|
||||
DB427DD825BAA00100D1B89D /* SceneDelegate.swift in Sources */,
|
||||
DB4932B926F31AD300EF46D4 /* BadgeButton.swift in Sources */,
|
||||
0F2021FB2613262F000C64BF /* HashtagTimelineViewController.swift in Sources */,
|
||||
DBCC3B30261440A50045B23D /* UITabBarController.swift in Sources */,
|
||||
DB8190C62601FF0400020C08 /* AttachmentContainerView.swift in Sources */,
|
||||
|
@ -4236,6 +4304,7 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DB6804D12637CE4700430867 /* UserDefaults.swift in Sources */,
|
||||
DB4932B726F30F0700EF46D4 /* Array.swift in Sources */,
|
||||
DB6804922637CD8700430867 /* AppName.swift in Sources */,
|
||||
DB6804FD2637CFEC00430867 /* AppSecret.swift in Sources */,
|
||||
);
|
||||
|
@ -4691,7 +4760,7 @@
|
|||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||
|
@ -4703,9 +4772,10 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Mastodon/Vender/Mastodon-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -4719,7 +4789,7 @@
|
|||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||
|
@ -4731,8 +4801,9 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Mastodon/Vender/Mastodon-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Release;
|
||||
|
@ -4826,11 +4897,11 @@
|
|||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 60;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = AppShared/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
@ -4857,11 +4928,11 @@
|
|||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 60;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = AppShared/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
@ -4886,11 +4957,11 @@
|
|||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 60;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = CoreDataStack/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
@ -4916,11 +4987,11 @@
|
|||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 60;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = CoreDataStack/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
@ -4983,7 +5054,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -4997,7 +5068,7 @@
|
|||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -5008,7 +5079,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5022,7 +5093,7 @@
|
|||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = "ASDK - Debug";
|
||||
|
@ -5033,7 +5104,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5047,7 +5118,7 @@
|
|||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = "ASDK - Release";
|
||||
|
@ -5058,7 +5129,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5072,7 +5143,7 @@
|
|||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Release;
|
||||
|
@ -5083,7 +5154,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5097,7 +5168,7 @@
|
|||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -5108,7 +5179,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5122,7 +5193,7 @@
|
|||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = "ASDK - Debug";
|
||||
|
@ -5133,7 +5204,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5147,7 +5218,7 @@
|
|||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = "ASDK - Release";
|
||||
|
@ -5158,7 +5229,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5172,7 +5243,7 @@
|
|||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Release;
|
||||
|
@ -5249,7 +5320,7 @@
|
|||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||
|
@ -5261,9 +5332,10 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Mastodon/Vender/Mastodon-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = "ASDK - Release";
|
||||
|
@ -5315,11 +5387,11 @@
|
|||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 60;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = CoreDataStack/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
@ -5364,7 +5436,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5377,7 +5449,7 @@
|
|||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = "ASDK - Release";
|
||||
|
@ -5389,11 +5461,11 @@
|
|||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 60;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = AppShared/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
@ -5485,7 +5557,7 @@
|
|||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||
|
@ -5497,9 +5569,10 @@
|
|||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Mastodon/Vender/Mastodon-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = "ASDK - Debug";
|
||||
|
@ -5551,11 +5624,11 @@
|
|||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 60;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = CoreDataStack/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
@ -5600,7 +5673,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5613,7 +5686,7 @@
|
|||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = "ASDK - Debug";
|
||||
|
@ -5625,11 +5698,11 @@
|
|||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 60;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = AppShared/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
@ -5655,7 +5728,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5668,7 +5741,7 @@
|
|||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -5679,7 +5752,7 @@
|
|||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 60;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
@ -5692,7 +5765,7 @@
|
|||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Release;
|
||||
|
@ -6079,9 +6152,10 @@
|
|||
DB89BA3525C1145C008580ED /* CoreData.xcdatamodeld */ = {
|
||||
isa = XCVersionGroup;
|
||||
children = (
|
||||
DBF156DD27006F5D00EC00B7 /* CoreData 2.xcdatamodel */,
|
||||
DB89BA3625C1145C008580ED /* CoreData.xcdatamodel */,
|
||||
);
|
||||
currentVersion = DB89BA3625C1145C008580ED /* CoreData.xcdatamodel */;
|
||||
currentVersion = DBF156DD27006F5D00EC00B7 /* CoreData 2.xcdatamodel */;
|
||||
path = CoreData.xcdatamodeld;
|
||||
sourceTree = "<group>";
|
||||
versionGroupType = wrapper.xcdatamodel;
|
||||
|
|
|
@ -7,12 +7,12 @@
|
|||
<key>AppShared.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>38</integer>
|
||||
<integer>56</integer>
|
||||
</dict>
|
||||
<key>CoreDataStack.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>35</integer>
|
||||
<integer>54</integer>
|
||||
</dict>
|
||||
<key>Mastodon - ASDK.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
|
@ -97,7 +97,7 @@
|
|||
<key>MastodonIntent.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>36</integer>
|
||||
<integer>51</integer>
|
||||
</dict>
|
||||
<key>MastodonIntents.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
|
@ -117,7 +117,7 @@
|
|||
<key>ShareActionExtension.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>37</integer>
|
||||
<integer>55</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
"repositoryURL": "https://github.com/Alamofire/Alamofire.git",
|
||||
"state": {
|
||||
"branch": null,
|
||||
"revision": "f96b619bcb2383b43d898402283924b80e2c4bae",
|
||||
"version": "5.4.3"
|
||||
"revision": "d120af1e8638c7da36c8481fd61a66c0c08dc4fc",
|
||||
"version": "5.4.4"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -69,8 +69,8 @@
|
|||
"repositoryURL": "https://github.com/MainasuK/FPSIndicator.git",
|
||||
"state": {
|
||||
"branch": null,
|
||||
"revision": "b2a002d689c400485f2ba41f9e71e15f7b99764a",
|
||||
"version": "1.0.1"
|
||||
"revision": "e4a5067ccd5293b024c767f09e51056afd4a4796",
|
||||
"version": "1.1.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -105,8 +105,8 @@
|
|||
"repositoryURL": "https://github.com/kean/Nuke.git",
|
||||
"state": {
|
||||
"branch": null,
|
||||
"revision": "3bd3a1765bdf62d561d4c2e10e1c4fc7a010f44e",
|
||||
"version": "10.3.2"
|
||||
"revision": "0db18dd34998cca18e9a28bcee136f84518007a0",
|
||||
"version": "10.4.1"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -159,8 +159,8 @@
|
|||
"repositoryURL": "https://github.com/apple/swift-nio.git",
|
||||
"state": {
|
||||
"branch": null,
|
||||
"revision": "8da5c5a4e6c5084c296b9f39dc54f00be146e0fa",
|
||||
"version": "1.14.2"
|
||||
"revision": "546610d52b19be3e19935e0880bb06b9c03f5cef",
|
||||
"version": "1.14.4"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -18,6 +18,10 @@ final public class SceneCoordinator {
|
|||
|
||||
let id = UUID().uuidString
|
||||
|
||||
weak var splitViewController: RootSplitViewController?
|
||||
|
||||
private(set) var secondaryStackHashValues = Set<Int>()
|
||||
|
||||
init(scene: UIScene, sceneDelegate: SceneDelegate, appContext: AppContext) {
|
||||
self.scene = scene
|
||||
self.sceneDelegate = sceneDelegate
|
||||
|
@ -112,9 +116,16 @@ extension SceneCoordinator {
|
|||
extension SceneCoordinator {
|
||||
|
||||
func setup() {
|
||||
let viewController = MainTabBarController(context: appContext, coordinator: self)
|
||||
sceneDelegate.window?.rootViewController = viewController
|
||||
tabBarController = viewController
|
||||
switch UIDevice.current.userInterfaceIdiom {
|
||||
case .phone:
|
||||
let viewController = MainTabBarController(context: appContext, coordinator: self)
|
||||
sceneDelegate.window?.rootViewController = viewController
|
||||
tabBarController = viewController
|
||||
default:
|
||||
let splitViewController = RootSplitViewController(context: appContext, coordinator: self)
|
||||
self.splitViewController = splitViewController
|
||||
sceneDelegate.window?.rootViewController = splitViewController
|
||||
}
|
||||
}
|
||||
|
||||
func setupOnboardingIfNeeds(animated: Bool) {
|
||||
|
@ -167,9 +178,20 @@ extension SceneCoordinator {
|
|||
|
||||
switch transition {
|
||||
case .show:
|
||||
presentingViewController.show(viewController, sender: sender)
|
||||
|
||||
if let splitViewController = splitViewController, !splitViewController.isCollapsed,
|
||||
let supplementaryViewController = splitViewController.viewController(for: .supplementary) as? UINavigationController,
|
||||
(supplementaryViewController === presentingViewController || supplementaryViewController.viewControllers.contains(presentingViewController)) ||
|
||||
(presentingViewController is UserTimelineViewController && presentingViewController.view.isDescendant(of: supplementaryViewController.view))
|
||||
{
|
||||
fallthrough
|
||||
} else {
|
||||
if secondaryStackHashValues.contains(presentingViewController.hashValue) {
|
||||
secondaryStackHashValues.insert(viewController.hashValue)
|
||||
}
|
||||
presentingViewController.show(viewController, sender: sender)
|
||||
}
|
||||
case .showDetail:
|
||||
secondaryStackHashValues.insert(viewController.hashValue)
|
||||
let navigationController = AdaptiveStatusBarStyleNavigationController(rootViewController: viewController)
|
||||
presentingViewController.showDetailViewController(navigationController, sender: sender)
|
||||
|
||||
|
@ -197,7 +219,7 @@ extension SceneCoordinator {
|
|||
case .custom(let transitioningDelegate):
|
||||
viewController.modalPresentationStyle = .custom
|
||||
viewController.transitioningDelegate = transitioningDelegate
|
||||
sender?.present(viewController, animated: true, completion: nil)
|
||||
(splitViewController ?? presentingViewController)?.present(viewController, animated: true, completion: nil)
|
||||
|
||||
case .customPush:
|
||||
// set delegate in view controller
|
||||
|
|
|
@ -67,7 +67,6 @@ extension StatusSection {
|
|||
timelineContext: TimelineContext,
|
||||
dependency: NeedsDependency,
|
||||
managedObjectContext: NSManagedObjectContext,
|
||||
timestampUpdatePublisher: AnyPublisher<Date, Never>,
|
||||
statusTableViewCellDelegate: StatusTableViewCellDelegate,
|
||||
timelineMiddleLoaderTableViewCellDelegate: TimelineMiddleLoaderTableViewCellDelegate?,
|
||||
threadReplyLoaderTableViewCellDelegate: ThreadReplyLoaderTableViewCellDelegate?
|
||||
|
@ -363,7 +362,6 @@ extension StatusSection {
|
|||
}
|
||||
}()
|
||||
|
||||
|
||||
if status.author.id == requestUserID || status.reblog?.author.id == requestUserID {
|
||||
// do not filter myself
|
||||
} else {
|
||||
|
@ -473,9 +471,10 @@ extension StatusSection {
|
|||
.receive(on: RunLoop.main)
|
||||
.sink { _ in
|
||||
// do nothing
|
||||
} receiveValue: { [weak cell, weak tableView] change in
|
||||
} receiveValue: { [weak cell, weak tableView, weak dependency] change in
|
||||
guard let cell = cell else { return }
|
||||
guard let tableView = tableView else { return }
|
||||
guard let dependency = dependency else { return }
|
||||
guard case .update(let object) = change.changeType,
|
||||
let status = object as? Status, !status.isDeleted else {
|
||||
return
|
||||
|
@ -1072,7 +1071,7 @@ extension StatusSection {
|
|||
cell.statusView.actionToolbarContainer.reblogButton.isEnabled = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// set like
|
||||
let isLike = status.favouritedBy.flatMap { $0.contains(where: { $0.id == requestUserID }) } ?? false
|
||||
let favoriteCountTitle: String = {
|
||||
|
@ -1107,7 +1106,7 @@ extension StatusSection {
|
|||
StatusSection.setupStatusMoreButtonMenu(cell: cell, dependency: dependency, status: status)
|
||||
})
|
||||
.store(in: &cell.disposeBag)
|
||||
self.setupStatusMoreButtonMenu(cell: cell, dependency: dependency, status: status)
|
||||
setupStatusMoreButtonMenu(cell: cell, dependency: dependency, status: status)
|
||||
}
|
||||
|
||||
static func configureStatusAccessibilityLabel(cell: StatusTableViewCell) {
|
||||
|
|
|
@ -22,6 +22,8 @@ extension MetaLabel {
|
|||
case autoCompletion
|
||||
case accountListName
|
||||
case accountListUsername
|
||||
case sidebarHeadline(isSelected: Bool)
|
||||
case sidebarSubheadline(isSelected: Bool)
|
||||
}
|
||||
|
||||
convenience init(style: Style) {
|
||||
|
@ -32,41 +34,45 @@ extension MetaLabel {
|
|||
textContainer.lineBreakMode = .byTruncatingTail
|
||||
textContainer.lineFragmentPadding = 0
|
||||
|
||||
setup(style: style)
|
||||
}
|
||||
|
||||
func setup(style: Style) {
|
||||
let font: UIFont
|
||||
let textColor: UIColor
|
||||
|
||||
|
||||
switch style {
|
||||
case .statusHeader:
|
||||
font = UIFontMetrics(forTextStyle: .footnote).scaledFont(for: .systemFont(ofSize: 13, weight: .medium), maximumPointSize: 17)
|
||||
textColor = Asset.Colors.Label.secondary.color
|
||||
|
||||
|
||||
case .statusName:
|
||||
font = .systemFont(ofSize: 17, weight: .semibold)
|
||||
textColor = Asset.Colors.Label.primary.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)
|
||||
textColor = Asset.Colors.Label.primary.color
|
||||
|
||||
|
||||
case .profileFieldValue:
|
||||
font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular), maximumPointSize: 20)
|
||||
textColor = Asset.Colors.Label.primary.color
|
||||
textAlignment = .right
|
||||
|
||||
|
||||
case .titleView:
|
||||
font = .systemFont(ofSize: 17, weight: .semibold)
|
||||
textColor = Asset.Colors.Label.primary.color
|
||||
textAlignment = .center
|
||||
paragraphStyle.alignment = .center
|
||||
|
||||
|
||||
case .recommendAccountName:
|
||||
font = .systemFont(ofSize: 18, weight: .semibold)
|
||||
textColor = .white
|
||||
|
||||
|
||||
case .settingTableFooter:
|
||||
font = .preferredFont(forTextStyle: .footnote)
|
||||
textColor = Asset.Colors.Label.secondary.color
|
||||
|
@ -82,8 +88,14 @@ extension MetaLabel {
|
|||
case .accountListUsername:
|
||||
font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .regular), maximumPointSize: 20)
|
||||
textColor = Asset.Colors.Label.secondary.color
|
||||
case .sidebarHeadline(let isSelected):
|
||||
font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 22, weight: .regular), maximumPointSize: 20)
|
||||
textColor = isSelected ? .white : Asset.Colors.Label.primary.color
|
||||
case .sidebarSubheadline(let isSelected):
|
||||
font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 13, weight: .regular), maximumPointSize: 18)
|
||||
textColor = isSelected ? .white : Asset.Colors.Label.secondary.color
|
||||
}
|
||||
|
||||
|
||||
self.font = font
|
||||
self.textColor = textColor
|
||||
|
||||
|
|
|
@ -70,6 +70,7 @@ internal enum Asset {
|
|||
internal static let valid = ColorAsset(name: "Colors/TextField/valid")
|
||||
}
|
||||
internal static let alertYellow = ColorAsset(name: "Colors/alert.yellow")
|
||||
internal static let badgeBackground = ColorAsset(name: "Colors/badge.background")
|
||||
internal static let battleshipGrey = ColorAsset(name: "Colors/battleshipGrey")
|
||||
internal static let brandBlue = ColorAsset(name: "Colors/brand.blue")
|
||||
internal static let brandBlueDarken20 = ColorAsset(name: "Colors/brand.blue.darken.20")
|
||||
|
@ -125,6 +126,7 @@ internal enum Asset {
|
|||
internal static let profileFieldCollectionViewBackground = ColorAsset(name: "Theme/Mastodon/profile.field.collection.view.background")
|
||||
internal static let secondaryGroupedSystemBackground = ColorAsset(name: "Theme/Mastodon/secondary.grouped.system.background")
|
||||
internal static let secondarySystemBackground = ColorAsset(name: "Theme/Mastodon/secondary.system.background")
|
||||
internal static let sidebarBackground = ColorAsset(name: "Theme/Mastodon/sidebar.background")
|
||||
internal static let systemBackground = ColorAsset(name: "Theme/Mastodon/system.background")
|
||||
internal static let systemElevatedBackground = ColorAsset(name: "Theme/Mastodon/system.elevated.background")
|
||||
internal static let systemGroupedBackground = ColorAsset(name: "Theme/Mastodon/system.grouped.background")
|
||||
|
@ -144,6 +146,7 @@ internal enum Asset {
|
|||
internal static let profileFieldCollectionViewBackground = ColorAsset(name: "Theme/system/profile.field.collection.view.background")
|
||||
internal static let secondaryGroupedSystemBackground = ColorAsset(name: "Theme/system/secondary.grouped.system.background")
|
||||
internal static let secondarySystemBackground = ColorAsset(name: "Theme/system/secondary.system.background")
|
||||
internal static let sidebarBackground = ColorAsset(name: "Theme/system/sidebar.background")
|
||||
internal static let systemBackground = ColorAsset(name: "Theme/system/system.background")
|
||||
internal static let systemElevatedBackground = ColorAsset(name: "Theme/system/system.elevated.background")
|
||||
internal static let systemGroupedBackground = ColorAsset(name: "Theme/system/system.grouped.background")
|
||||
|
|
|
@ -365,6 +365,16 @@ internal enum L10n {
|
|||
}
|
||||
|
||||
internal enum Scene {
|
||||
internal enum AccountList {
|
||||
/// Add Account
|
||||
internal static let addAccount = L10n.tr("Localizable", "Scene.AccountList.AddAccount")
|
||||
/// Dismiss Account Switcher
|
||||
internal static let dismissAccountSwitcher = L10n.tr("Localizable", "Scene.AccountList.DismissAccountSwitcher")
|
||||
/// Current selected profile: %@. Double tap then hold to show account switcher
|
||||
internal static func tabBarHint(_ p1: Any) -> String {
|
||||
return L10n.tr("Localizable", "Scene.AccountList.TabBarHint", String(describing: p1))
|
||||
}
|
||||
}
|
||||
internal enum Compose {
|
||||
/// Publish
|
||||
internal static let composeAction = L10n.tr("Localizable", "Scene.Compose.ComposeAction")
|
||||
|
@ -973,6 +983,14 @@ internal enum L10n {
|
|||
/// Social networking\nback in your hands.
|
||||
internal static let slogan = L10n.tr("Localizable", "Scene.Welcome.Slogan")
|
||||
}
|
||||
internal enum Wizard {
|
||||
/// Double tap to dismiss this wizard
|
||||
internal static let accessibilityHint = L10n.tr("Localizable", "Scene.Wizard.AccessibilityHint")
|
||||
/// Switch between multiple accounts by holding the profile button.
|
||||
internal static let multipleAccountSwitchIntroDescription = L10n.tr("Localizable", "Scene.Wizard.MultipleAccountSwitchIntroDescription")
|
||||
/// New in Mastodon
|
||||
internal static let newInMastodon = L10n.tr("Localizable", "Scene.Wizard.NewInMastodon")
|
||||
}
|
||||
}
|
||||
|
||||
internal enum A11y {
|
||||
|
@ -986,6 +1004,12 @@ internal enum L10n {
|
|||
internal static func inputLimitRemains(_ p1: Int) -> String {
|
||||
return L10n.tr("Localizable", "a11y.plural.count.input_limit_remains", p1)
|
||||
}
|
||||
internal enum Unread {
|
||||
/// Plural format key: "%#@notification_count_unread_notification@"
|
||||
internal static func notification(_ p1: Int) -> String {
|
||||
return L10n.tr("Localizable", "a11y.plural.count.unread.notification", p1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,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>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
|
@ -15,7 +17,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.8</string>
|
||||
<string>1.2.0</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
@ -28,7 +30,7 @@
|
|||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>60</string>
|
||||
<string>71</string>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>LSApplicationQueriesSchemes</key>
|
||||
|
|
|
@ -259,8 +259,8 @@ extension StatusProviderFacade {
|
|||
guard let context = provider.context else { return }
|
||||
|
||||
// haptic feedback generator
|
||||
let generator = UIImpactFeedbackGenerator(style: .light)
|
||||
let responseFeedbackGenerator = UINotificationFeedbackGenerator()
|
||||
let generator = UISelectionFeedbackGenerator()
|
||||
// let responseFeedbackGenerator = UINotificationFeedbackGenerator()
|
||||
|
||||
status
|
||||
.compactMap { status -> (NSManagedObjectID, Mastodon.API.Favorites.FavoriteKind)? in
|
||||
|
@ -287,10 +287,10 @@ extension StatusProviderFacade {
|
|||
.handleEvents(receiveSubscription: { _ in
|
||||
generator.prepare()
|
||||
}, receiveOutput: { _, favoriteKind in
|
||||
generator.impactOccurred()
|
||||
generator.selectionChanged()
|
||||
os_log("%{public}s[%{public}ld], %{public}s: [Like] update local status like status to: %s", ((#file as NSString).lastPathComponent), #line, #function, favoriteKind == .create ? "like" : "unlike")
|
||||
}, receiveCompletion: { completion in
|
||||
responseFeedbackGenerator.prepare()
|
||||
// responseFeedbackGenerator.prepare()
|
||||
switch completion {
|
||||
case .failure:
|
||||
// TODO: handle error
|
||||
|
@ -312,10 +312,10 @@ extension StatusProviderFacade {
|
|||
guard let _ = provider else { return }
|
||||
switch completion {
|
||||
case .failure(let error):
|
||||
responseFeedbackGenerator.notificationOccurred(.error)
|
||||
// responseFeedbackGenerator.notificationOccurred(.error)
|
||||
os_log("%{public}s[%{public}ld], %{public}s: [Like] remote like request fail: %{public}s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription)
|
||||
case .finished:
|
||||
responseFeedbackGenerator.notificationOccurred(.success)
|
||||
// responseFeedbackGenerator.notificationOccurred(.success)
|
||||
os_log("%{public}s[%{public}ld], %{public}s: [Like] remote like request success", ((#file as NSString).lastPathComponent), #line, #function)
|
||||
}
|
||||
} receiveValue: { response in
|
||||
|
@ -368,8 +368,8 @@ extension StatusProviderFacade {
|
|||
guard let context = provider.context else { return }
|
||||
|
||||
// haptic feedback generator
|
||||
let generator = UIImpactFeedbackGenerator(style: .light)
|
||||
let responseFeedbackGenerator = UINotificationFeedbackGenerator()
|
||||
let generator = UISelectionFeedbackGenerator()
|
||||
// let responseFeedbackGenerator = UINotificationFeedbackGenerator()
|
||||
|
||||
status
|
||||
.compactMap { status -> (NSManagedObjectID, Mastodon.API.Reblog.ReblogKind)? in
|
||||
|
@ -396,7 +396,7 @@ extension StatusProviderFacade {
|
|||
.handleEvents(receiveSubscription: { _ in
|
||||
generator.prepare()
|
||||
}, receiveOutput: { _, reblogKind in
|
||||
generator.impactOccurred()
|
||||
generator.selectionChanged()
|
||||
switch reblogKind {
|
||||
case .reblog:
|
||||
os_log("%{public}s[%{public}ld], %{public}s: [Reblog] update local status reblog status to: %s", ((#file as NSString).lastPathComponent), #line, #function, "reblog")
|
||||
|
@ -404,7 +404,7 @@ extension StatusProviderFacade {
|
|||
os_log("%{public}s[%{public}ld], %{public}s: [Reblog] update local status reblog status to: %s", ((#file as NSString).lastPathComponent), #line, #function, "unreblog")
|
||||
}
|
||||
}, receiveCompletion: { completion in
|
||||
responseFeedbackGenerator.prepare()
|
||||
// responseFeedbackGenerator.prepare()
|
||||
switch completion {
|
||||
case .failure:
|
||||
// TODO: handle error
|
||||
|
@ -426,10 +426,10 @@ extension StatusProviderFacade {
|
|||
guard let _ = provider else { return }
|
||||
switch completion {
|
||||
case .failure(let error):
|
||||
responseFeedbackGenerator.notificationOccurred(.error)
|
||||
// responseFeedbackGenerator.notificationOccurred(.error)
|
||||
os_log("%{public}s[%{public}ld], %{public}s: [Reblog] remote reblog request fail: %{public}s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription)
|
||||
case .finished:
|
||||
responseFeedbackGenerator.notificationOccurred(.success)
|
||||
// responseFeedbackGenerator.notificationOccurred(.success)
|
||||
os_log("%{public}s[%{public}ld], %{public}s: [Reblog] remote reblog request success", ((#file as NSString).lastPathComponent), #line, #function)
|
||||
}
|
||||
} receiveValue: { response in
|
||||
|
@ -469,8 +469,8 @@ extension StatusProviderFacade {
|
|||
guard let provider = provider else { return }
|
||||
guard let status = status?.reblog ?? status else { return }
|
||||
|
||||
let generator = UIImpactFeedbackGenerator(style: .light)
|
||||
generator.impactOccurred()
|
||||
let generator = UISelectionFeedbackGenerator()
|
||||
generator.selectionChanged()
|
||||
|
||||
let composeViewModel = ComposeViewModel(context: provider.context, composeKind: .reply(repliedToStatusObjectID: status.objectID))
|
||||
provider.coordinator.present(scene: .compose(viewModel: composeViewModel), from: provider, transition: .modal(animated: true, completion: nil))
|
||||
|
|
|
@ -212,8 +212,17 @@ extension UserProviderFacade {
|
|||
let name = mastodonUser.displayNameWithFallback
|
||||
|
||||
if let shareUser = shareUser {
|
||||
let shareAction = UIAction(title: L10n.Common.Controls.Actions.shareUser(name), image: UIImage(systemName: "square.and.arrow.up"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak provider] _ in
|
||||
let shareAction = UIAction(
|
||||
title: L10n.Common.Controls.Actions.shareUser(name),
|
||||
image: UIImage(systemName: "square.and.arrow.up"),
|
||||
identifier: nil,
|
||||
discoverabilityTitle: nil,
|
||||
attributes: [],
|
||||
state: .off
|
||||
) { [weak provider, weak sourceView, weak barButtonItem] _ in
|
||||
guard let provider = provider else { return }
|
||||
guard let sourceView = sourceView else { return }
|
||||
guard let barButtonItem = barButtonItem else { return }
|
||||
let activityViewController = createActivityViewControllerForMastodonUser(mastodonUser: shareUser, dependency: provider)
|
||||
provider.coordinator.present(
|
||||
scene: .activityViewController(
|
||||
|
@ -229,8 +238,17 @@ extension UserProviderFacade {
|
|||
}
|
||||
|
||||
if let shareStatus = shareStatus {
|
||||
let shareAction = UIAction(title: L10n.Common.Controls.Actions.sharePost, image: UIImage(systemName: "square.and.arrow.up"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak provider] _ in
|
||||
let shareAction = UIAction(
|
||||
title: L10n.Common.Controls.Actions.sharePost,
|
||||
image: UIImage(systemName: "square.and.arrow.up"),
|
||||
identifier: nil,
|
||||
discoverabilityTitle: nil,
|
||||
attributes: [],
|
||||
state: .off
|
||||
) { [weak provider, weak sourceView, weak barButtonItem] _ in
|
||||
guard let provider = provider else { return }
|
||||
guard let sourceView = sourceView else { return }
|
||||
guard let barButtonItem = barButtonItem else { return }
|
||||
let activityViewController = createActivityViewControllerForMastodonUser(status: shareStatus, dependency: provider)
|
||||
provider.coordinator.present(
|
||||
scene: .activityViewController(
|
||||
|
@ -253,8 +271,9 @@ extension UserProviderFacade {
|
|||
discoverabilityTitle: isMuting ? nil : L10n.Common.Controls.Friendship.muteUser(name),
|
||||
attributes: isMuting ? [] : .destructive,
|
||||
state: .off
|
||||
) { [weak provider] _ in
|
||||
) { [weak provider, weak cell] _ in
|
||||
guard let provider = provider else { return }
|
||||
guard let cell = cell else { return }
|
||||
|
||||
UserProviderFacade.toggleUserMuteRelationship(
|
||||
provider: provider,
|
||||
|
@ -283,8 +302,9 @@ extension UserProviderFacade {
|
|||
discoverabilityTitle: isBlocking ? nil : L10n.Common.Controls.Friendship.blockUser(name),
|
||||
attributes: isBlocking ? [] : .destructive,
|
||||
state: .off
|
||||
) { [weak provider] _ in
|
||||
) { [weak provider, weak cell] _ in
|
||||
guard let provider = provider else { return }
|
||||
guard let cell = cell else { return }
|
||||
|
||||
UserProviderFacade.toggleUserBlockRelationship(
|
||||
provider: provider,
|
||||
|
@ -306,7 +326,14 @@ extension UserProviderFacade {
|
|||
}
|
||||
|
||||
if !isMyself {
|
||||
let reportAction = UIAction(title: L10n.Common.Controls.Actions.reportUser(name), image: UIImage(systemName: "flag"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak provider] _ in
|
||||
let reportAction = UIAction(
|
||||
title: L10n.Common.Controls.Actions.reportUser(name),
|
||||
image: UIImage(systemName: "flag"),
|
||||
identifier: nil,
|
||||
discoverabilityTitle: nil,
|
||||
attributes: [],
|
||||
state: .off
|
||||
) { [weak provider] _ in
|
||||
guard let provider = provider else { return }
|
||||
guard let authenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else {
|
||||
return
|
||||
|
@ -328,19 +355,37 @@ extension UserProviderFacade {
|
|||
|
||||
if !isInSameDomain {
|
||||
if isDomainBlocking {
|
||||
let unblockDomainAction = UIAction(title: L10n.Common.Controls.Actions.unblockDomain(mastodonUser.domainFromAcct), image: UIImage(systemName: "nosign"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak provider] _ in
|
||||
let unblockDomainAction = UIAction(
|
||||
title: L10n.Common.Controls.Actions.unblockDomain(mastodonUser.domainFromAcct),
|
||||
image: UIImage(systemName: "nosign"),
|
||||
identifier: nil,
|
||||
discoverabilityTitle: nil,
|
||||
attributes: [],
|
||||
state: .off
|
||||
) { [weak provider, weak cell] _ in
|
||||
guard let provider = provider else { return }
|
||||
guard let cell = cell else { return }
|
||||
provider.context.blockDomainService.unblockDomain(userProvider: provider, cell: cell)
|
||||
}
|
||||
children.append(unblockDomainAction)
|
||||
} else {
|
||||
let blockDomainAction = UIAction(title: L10n.Common.Controls.Actions.blockDomain(mastodonUser.domainFromAcct), image: UIImage(systemName: "nosign"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak provider] _ in
|
||||
let blockDomainAction = UIAction(
|
||||
title: L10n.Common.Controls.Actions.blockDomain(mastodonUser.domainFromAcct),
|
||||
image: UIImage(systemName: "nosign"),
|
||||
identifier: nil,
|
||||
discoverabilityTitle: nil,
|
||||
attributes: [],
|
||||
state: .off
|
||||
) { [weak provider, weak cell] _ in
|
||||
guard let provider = provider else { return }
|
||||
guard let cell = cell else { return }
|
||||
|
||||
let alertController = UIAlertController(title: L10n.Common.Alerts.BlockDomain.title(mastodonUser.domainFromAcct), message: nil, preferredStyle: .alert)
|
||||
let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .default) { _ in
|
||||
}
|
||||
let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .default) { _ in }
|
||||
alertController.addAction(cancelAction)
|
||||
let blockDomainAction = UIAlertAction(title: L10n.Common.Alerts.BlockDomain.blockEntireDomain, style: .destructive) { _ in
|
||||
let blockDomainAction = UIAlertAction(title: L10n.Common.Alerts.BlockDomain.blockEntireDomain, style: .destructive) { [weak provider, weak cell] _ in
|
||||
guard let provider = provider else { return }
|
||||
guard let cell = cell else { return }
|
||||
provider.context.blockDomainService.blockDomain(userProvider: provider, cell: cell)
|
||||
}
|
||||
alertController.addAction(blockDomainAction)
|
||||
|
@ -351,19 +396,26 @@ extension UserProviderFacade {
|
|||
}
|
||||
|
||||
if let status = shareStatus, isMyself {
|
||||
let deleteAction = UIAction(title: L10n.Common.Controls.Actions.delete, image: UIImage(systemName: "delete.left"), identifier: nil, discoverabilityTitle: nil, attributes: [.destructive], state: .off) {
|
||||
[weak provider] _ in
|
||||
let deleteAction = UIAction(
|
||||
title: L10n.Common.Controls.Actions.delete,
|
||||
image: UIImage(systemName: "delete.left"),
|
||||
identifier: nil,
|
||||
discoverabilityTitle: nil,
|
||||
attributes: [.destructive],
|
||||
state: .off
|
||||
) { [weak provider] _ in
|
||||
guard let provider = provider else { return }
|
||||
|
||||
|
||||
let alertController = UIAlertController(title: L10n.Common.Alerts.DeletePost.title, message: nil, preferredStyle: .alert)
|
||||
let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .default) { _ in
|
||||
}
|
||||
let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .default) { _ in }
|
||||
alertController.addAction(cancelAction)
|
||||
let deleteAction = UIAlertAction(title: L10n.Common.Alerts.DeletePost.delete, style: .destructive) { _ in
|
||||
let deleteAction = UIAlertAction(title: L10n.Common.Alerts.DeletePost.delete, style: .destructive) { [weak provider] _ in
|
||||
guard let provider = provider else { return }
|
||||
guard let activeMastodonAuthenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { return }
|
||||
provider.context.apiService.deleteStatus(domain: activeMastodonAuthenticationBox.domain,
|
||||
statusID: status.id,
|
||||
authorizationBox: activeMastodonAuthenticationBox
|
||||
provider.context.apiService.deleteStatus(
|
||||
domain: activeMastodonAuthenticationBox.domain,
|
||||
statusID: status.id,
|
||||
authorizationBox: activeMastodonAuthenticationBox
|
||||
)
|
||||
.sink { _ in
|
||||
// do nothing
|
||||
|
@ -374,7 +426,6 @@ extension UserProviderFacade {
|
|||
}
|
||||
alertController.addAction(deleteAction)
|
||||
provider.present(alertController, animated: true, completion: nil)
|
||||
|
||||
}
|
||||
children.append(deleteAction)
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "c1 1.svg",
|
||||
"filename" : "c1 1~universal.pdf",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
|
|
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 40 KiB |
Binary file not shown.
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "48",
|
||||
"green" : "59",
|
||||
"red" : "255"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
|
@ -1,20 +1,20 @@
|
|||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
},
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"red" : "0.875",
|
||||
"blue" : "0.353",
|
||||
"green" : "0.251"
|
||||
"blue" : "90",
|
||||
"green" : "64",
|
||||
"red" : "223"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0xF1",
|
||||
"green" : "0xF1",
|
||||
"red" : "0xF1"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.263",
|
||||
"green" : "0.208",
|
||||
"red" : "0.192"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.945",
|
||||
"green" : "0.945",
|
||||
"red" : "0.945"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "0.263",
|
||||
"green" : "0.208",
|
||||
"red" : "0.192"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
"NSCameraUsageDescription" = "Used to take photo for post status";
|
||||
"NSPhotoLibraryAddUsageDescription" = "Used to save photo into the Photo Library";
|
||||
"NewPostShortcutItemTitle" = "New Post";
|
||||
"NewPostShortcutItemTitle" = "منشور جديد";
|
||||
"SearchShortcutItemTitle" = "البحث";
|
|
@ -8,7 +8,7 @@
|
|||
"Common.Alerts.DeletePost.Title" = "هل أنت متأكد من أنك تريد حذف هذا المنشور؟";
|
||||
"Common.Alerts.DiscardPostContent.Message" = "Confirm to discard composed post content.";
|
||||
"Common.Alerts.DiscardPostContent.Title" = "تجاهل المسودة";
|
||||
"Common.Alerts.EditProfileFailure.Message" = "Cannot edit profile. Please try again.";
|
||||
"Common.Alerts.EditProfileFailure.Message" = "لا يمكن تعديل الملف الشخصي. الرجاء المحاولة مرة أخرى.";
|
||||
"Common.Alerts.EditProfileFailure.Title" = "Edit Profile Error";
|
||||
"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Cannot attach more than one video.";
|
||||
"Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "Cannot attach a video to a post that already contains images.";
|
||||
|
@ -22,7 +22,7 @@ Please check your internet connection.";
|
|||
"Common.Alerts.SignOut.Message" = "هل أنت متأكد من أنك تريد تسجيل الخروج؟";
|
||||
"Common.Alerts.SignOut.Title" = "تسجيل الخروج";
|
||||
"Common.Alerts.SignUpFailure.Title" = "فشل التسجيل";
|
||||
"Common.Alerts.VoteFailure.PollEnded" = "The poll has ended";
|
||||
"Common.Alerts.VoteFailure.PollEnded" = "انتهى استطلاع الرأي";
|
||||
"Common.Alerts.VoteFailure.Title" = "فشل التصويت";
|
||||
"Common.Controls.Actions.Add" = "إضافة";
|
||||
"Common.Controls.Actions.Back" = "العودة";
|
||||
|
@ -59,20 +59,20 @@ Please check your internet connection.";
|
|||
"Common.Controls.Actions.TakePhoto" = "التقط صورة";
|
||||
"Common.Controls.Actions.TryAgain" = "حاول مرة أخرى";
|
||||
"Common.Controls.Actions.UnblockDomain" = "إلغاء حظر %@";
|
||||
"Common.Controls.Friendship.Block" = "Block";
|
||||
"Common.Controls.Friendship.BlockDomain" = "Block %@";
|
||||
"Common.Controls.Friendship.BlockUser" = "Block %@";
|
||||
"Common.Controls.Friendship.Blocked" = "Blocked";
|
||||
"Common.Controls.Friendship.Block" = "حظر";
|
||||
"Common.Controls.Friendship.BlockDomain" = "حظر %@";
|
||||
"Common.Controls.Friendship.BlockUser" = "حظر %@";
|
||||
"Common.Controls.Friendship.Blocked" = "محظور";
|
||||
"Common.Controls.Friendship.EditInfo" = "تعديل المعلومات";
|
||||
"Common.Controls.Friendship.Follow" = "Follow";
|
||||
"Common.Controls.Friendship.Following" = "Following";
|
||||
"Common.Controls.Friendship.Follow" = "اتبع";
|
||||
"Common.Controls.Friendship.Following" = "مُتابَع";
|
||||
"Common.Controls.Friendship.Mute" = "أكتم";
|
||||
"Common.Controls.Friendship.MuteUser" = "أكتم %@";
|
||||
"Common.Controls.Friendship.Muted" = "مكتوم";
|
||||
"Common.Controls.Friendship.Pending" = "Pending";
|
||||
"Common.Controls.Friendship.Request" = "Request";
|
||||
"Common.Controls.Friendship.Unblock" = "Unblock";
|
||||
"Common.Controls.Friendship.UnblockUser" = "Unblock %@";
|
||||
"Common.Controls.Friendship.Unblock" = "إلغاء الحَظر";
|
||||
"Common.Controls.Friendship.UnblockUser" = "إلغاء حظر %@";
|
||||
"Common.Controls.Friendship.Unmute" = "إلغاء الكتم";
|
||||
"Common.Controls.Friendship.UnmuteUser" = "إلغاء كتم %@";
|
||||
"Common.Controls.Keyboard.Common.ComposeNewPost" = "إنشاء منشور جديد";
|
||||
|
@ -91,26 +91,26 @@ Please check your internet connection.";
|
|||
"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Toggle Content Warning";
|
||||
"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Toggle Favorite on Post";
|
||||
"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Toggle Reblog on Post";
|
||||
"Common.Controls.Status.Actions.Favorite" = "Favorite";
|
||||
"Common.Controls.Status.Actions.Menu" = "Menu";
|
||||
"Common.Controls.Status.Actions.Reblog" = "Reblog";
|
||||
"Common.Controls.Status.Actions.Reply" = "Reply";
|
||||
"Common.Controls.Status.Actions.Unfavorite" = "Unfavorite";
|
||||
"Common.Controls.Status.Actions.Unreblog" = "Undo reblog";
|
||||
"Common.Controls.Status.ContentWarning" = "Content Warning";
|
||||
"Common.Controls.Status.Actions.Favorite" = "إضافة إلى المفضلة";
|
||||
"Common.Controls.Status.Actions.Menu" = "القائمة";
|
||||
"Common.Controls.Status.Actions.Reblog" = "إعادة النشر";
|
||||
"Common.Controls.Status.Actions.Reply" = "رد";
|
||||
"Common.Controls.Status.Actions.Unfavorite" = "إزالة من المفضلة";
|
||||
"Common.Controls.Status.Actions.Unreblog" = "تراجع عن إعادة النشر";
|
||||
"Common.Controls.Status.ContentWarning" = "تحذير عن المحتوى";
|
||||
"Common.Controls.Status.MediaContentWarning" = "Tap anywhere to reveal";
|
||||
"Common.Controls.Status.Poll.Closed" = "Closed";
|
||||
"Common.Controls.Status.Poll.Vote" = "Vote";
|
||||
"Common.Controls.Status.ShowPost" = "Show Post";
|
||||
"Common.Controls.Status.ShowUserProfile" = "Show user profile";
|
||||
"Common.Controls.Status.Poll.Closed" = "انتهى";
|
||||
"Common.Controls.Status.Poll.Vote" = "صَوّت";
|
||||
"Common.Controls.Status.ShowPost" = "اظهر المنشور";
|
||||
"Common.Controls.Status.ShowUserProfile" = "اظهر الملف التعريفي للمستخدم";
|
||||
"Common.Controls.Status.Tag.Email" = "البريد الإلكتروني";
|
||||
"Common.Controls.Status.Tag.Emoji" = "Emoji";
|
||||
"Common.Controls.Status.Tag.Hashtag" = "Hashtag";
|
||||
"Common.Controls.Status.Tag.Link" = "Link";
|
||||
"Common.Controls.Status.Tag.Mention" = "Mention";
|
||||
"Common.Controls.Status.Tag.Url" = "URL";
|
||||
"Common.Controls.Status.Tag.Emoji" = "إيموجي";
|
||||
"Common.Controls.Status.Tag.Hashtag" = "الوسم";
|
||||
"Common.Controls.Status.Tag.Link" = "الرابط";
|
||||
"Common.Controls.Status.Tag.Mention" = "أشر إلى";
|
||||
"Common.Controls.Status.Tag.Url" = "عنوان URL";
|
||||
"Common.Controls.Status.UserReblogged" = "%@ reblogged";
|
||||
"Common.Controls.Status.UserRepliedTo" = "Replied to %@";
|
||||
"Common.Controls.Status.UserRepliedTo" = "رد على %@";
|
||||
"Common.Controls.Tabs.Home" = "الخيط الرئيسي";
|
||||
"Common.Controls.Tabs.Notification" = "الإشعارات";
|
||||
"Common.Controls.Tabs.Profile" = "الملف التعريفي";
|
||||
|
@ -133,6 +133,9 @@ Your profile looks like this to them.";
|
|||
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "تحميل المزيد من المنشورات...";
|
||||
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "إظهار المزيد من الردود";
|
||||
"Common.Controls.Timeline.Timestamp.Now" = "الأن";
|
||||
"Scene.AccountList.AddAccount" = "Add Account";
|
||||
"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher";
|
||||
"Scene.AccountList.TabBarHint" = "Current selected profile: %@. Double tap then hold to show account switcher";
|
||||
"Scene.Compose.Accessibility.AppendAttachment" = "Add Attachment";
|
||||
"Scene.Compose.Accessibility.AppendPoll" = "اضافة استطلاع رأي";
|
||||
"Scene.Compose.Accessibility.CustomEmojiPicker" = "منتقي مخصص للإيموجي";
|
||||
|
@ -153,16 +156,16 @@ uploaded to Mastodon.";
|
|||
"Scene.Compose.Keyboard.AppendAttachmentEntry" = "Add Attachment - %@";
|
||||
"Scene.Compose.Keyboard.DiscardPost" = "Discard Post";
|
||||
"Scene.Compose.Keyboard.PublishPost" = "Publish Post";
|
||||
"Scene.Compose.Keyboard.SelectVisibilityEntry" = "Select Visibility - %@";
|
||||
"Scene.Compose.Keyboard.SelectVisibilityEntry" = "اختر مدى الظهور - %@";
|
||||
"Scene.Compose.Keyboard.ToggleContentWarning" = "Toggle Content Warning";
|
||||
"Scene.Compose.Keyboard.TogglePoll" = "Toggle Poll";
|
||||
"Scene.Compose.MediaSelection.Browse" = "تصفح";
|
||||
"Scene.Compose.MediaSelection.Camera" = "التقط صورة";
|
||||
"Scene.Compose.MediaSelection.PhotoLibrary" = "مكتبة الصور";
|
||||
"Scene.Compose.Poll.DurationTime" = "Duration: %@";
|
||||
"Scene.Compose.Poll.DurationTime" = "المدة: %@";
|
||||
"Scene.Compose.Poll.OneDay" = "يوم واحد";
|
||||
"Scene.Compose.Poll.OneHour" = "ساعة واحدة";
|
||||
"Scene.Compose.Poll.OptionNumber" = "Option %ld";
|
||||
"Scene.Compose.Poll.OptionNumber" = "الخيار %ld";
|
||||
"Scene.Compose.Poll.SevenDays" = "7 أيام";
|
||||
"Scene.Compose.Poll.SixHours" = "6 ساعات";
|
||||
"Scene.Compose.Poll.ThirtyMinutes" = "30 دقيقة";
|
||||
|
@ -170,37 +173,37 @@ uploaded to Mastodon.";
|
|||
"Scene.Compose.ReplyingToUser" = "رد على %@";
|
||||
"Scene.Compose.Title.NewPost" = "منشور جديد";
|
||||
"Scene.Compose.Title.NewReply" = "رد جديد";
|
||||
"Scene.Compose.Visibility.Direct" = "Only people I mention";
|
||||
"Scene.Compose.Visibility.Private" = "Followers only";
|
||||
"Scene.Compose.Visibility.Public" = "Public";
|
||||
"Scene.Compose.Visibility.Unlisted" = "Unlisted";
|
||||
"Scene.ConfirmEmail.Button.DontReceiveEmail" = "I never got an email";
|
||||
"Scene.ConfirmEmail.Button.OpenEmailApp" = "Open Email App";
|
||||
"Scene.Compose.Visibility.Direct" = "ففط للأشخاص المشار إليهم";
|
||||
"Scene.Compose.Visibility.Private" = "لمتابعيك فقط";
|
||||
"Scene.Compose.Visibility.Public" = "للعامة";
|
||||
"Scene.Compose.Visibility.Unlisted" = "غير مُدرَج";
|
||||
"Scene.ConfirmEmail.Button.DontReceiveEmail" = "لم أستلم أبدًا بريدا إلكترونيا";
|
||||
"Scene.ConfirmEmail.Button.OpenEmailApp" = "افتح تطبيق البريد الإلكتروني";
|
||||
"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Check if your email address is correct as well as your junk folder if you haven’t.";
|
||||
"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Resend Email";
|
||||
"Scene.ConfirmEmail.DontReceiveEmail.Title" = "Check your email";
|
||||
"Scene.ConfirmEmail.DontReceiveEmail.Title" = "تحقق من بريدك الإلكتروني";
|
||||
"Scene.ConfirmEmail.OpenEmailApp.Description" = "We just sent you an email. Check your junk folder if you haven’t.";
|
||||
"Scene.ConfirmEmail.OpenEmailApp.Mail" = "البريد";
|
||||
"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Open Email Client";
|
||||
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Check your inbox.";
|
||||
"Scene.ConfirmEmail.Subtitle" = "We just sent an email to %@,
|
||||
tap the link to confirm your account.";
|
||||
"Scene.ConfirmEmail.Subtitle" = "لقد أرسلنا للتو رسالة بريد إلكتروني إلى %@،
|
||||
اضغط على الرابط لتأكيد حسابك.";
|
||||
"Scene.ConfirmEmail.Title" = "شيء واحد أخير.";
|
||||
"Scene.Favorite.Title" = "Your Favorites";
|
||||
"Scene.Favorite.Title" = "مفضلتك";
|
||||
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "See new posts";
|
||||
"Scene.HomeTimeline.NavigationBarState.Offline" = "غير متصل";
|
||||
"Scene.HomeTimeline.NavigationBarState.Published" = "Published!";
|
||||
"Scene.HomeTimeline.NavigationBarState.Publishing" = "Publishing post...";
|
||||
"Scene.HomeTimeline.NavigationBarState.Published" = "تم نشره!";
|
||||
"Scene.HomeTimeline.NavigationBarState.Publishing" = "جارٍ نشر المشاركة…";
|
||||
"Scene.HomeTimeline.Title" = "الخيط الرئيسي";
|
||||
"Scene.Notification.Keyobard.ShowEverything" = "Show Everything";
|
||||
"Scene.Notification.Keyobard.ShowEverything" = "إظهار كل شيء";
|
||||
"Scene.Notification.Keyobard.ShowMentions" = "Show Mentions";
|
||||
"Scene.Notification.Title.Everything" = "Everything";
|
||||
"Scene.Notification.Title.Mentions" = "Mentions";
|
||||
"Scene.Notification.UserFavorited Your Post" = "%@ favorited your post";
|
||||
"Scene.Notification.UserFollowedYou" = "%@ followed you";
|
||||
"Scene.Notification.UserMentionedYou" = "%@ mentioned you";
|
||||
"Scene.Notification.UserRebloggedYourPost" = "%@ reblogged your post";
|
||||
"Scene.Notification.UserRequestedToFollowYou" = "%@ requested to follow you";
|
||||
"Scene.Notification.Title.Everything" = "الكل";
|
||||
"Scene.Notification.Title.Mentions" = "الإشارات";
|
||||
"Scene.Notification.UserFavorited Your Post" = "أضاف %@ منشورك إلى مفضلته";
|
||||
"Scene.Notification.UserFollowedYou" = "يتابعك %@";
|
||||
"Scene.Notification.UserMentionedYou" = "أشار إليك %@";
|
||||
"Scene.Notification.UserRebloggedYourPost" = "أعاد %@ تدوين مشاركتك";
|
||||
"Scene.Notification.UserRequestedToFollowYou" = "طلب %@ متابعتك";
|
||||
"Scene.Notification.UserYourPollHasEnded" = "%@ Your poll has ended";
|
||||
"Scene.Preview.Keyboard.ClosePreview" = "إغلاق المعاينة";
|
||||
"Scene.Preview.Keyboard.ShowNext" = "إظهار التالي";
|
||||
|
@ -225,17 +228,17 @@ tap the link to confirm your account.";
|
|||
"Scene.Register.Error.Item.Reason" = "السبب";
|
||||
"Scene.Register.Error.Item.Username" = "اسم المستخدم";
|
||||
"Scene.Register.Error.Reason.Accepted" = "%@ must be accepted";
|
||||
"Scene.Register.Error.Reason.Blank" = "%@ is required";
|
||||
"Scene.Register.Error.Reason.Blank" = "%@ مطلوب";
|
||||
"Scene.Register.Error.Reason.Blocked" = "%@ contains a disallowed email provider";
|
||||
"Scene.Register.Error.Reason.Inclusion" = "%@ is not a supported value";
|
||||
"Scene.Register.Error.Reason.Invalid" = "%@ is invalid";
|
||||
"Scene.Register.Error.Reason.Invalid" = "%@ غير صالح";
|
||||
"Scene.Register.Error.Reason.Reserved" = "%@ is a reserved keyword";
|
||||
"Scene.Register.Error.Reason.Taken" = "%@ is already in use";
|
||||
"Scene.Register.Error.Reason.TooLong" = "%@ is too long";
|
||||
"Scene.Register.Error.Reason.TooShort" = "%@ is too short";
|
||||
"Scene.Register.Error.Reason.TooLong" = "%@ طويل جداً";
|
||||
"Scene.Register.Error.Reason.TooShort" = "%@ قصير جدا";
|
||||
"Scene.Register.Error.Reason.Unreachable" = "%@ does not seem to exist";
|
||||
"Scene.Register.Error.Special.EmailInvalid" = "This is not a valid email address";
|
||||
"Scene.Register.Error.Special.PasswordTooShort" = "Password is too short (must be at least 8 characters)";
|
||||
"Scene.Register.Error.Special.EmailInvalid" = "هذا عنوان بريد إلكتروني غير صالح";
|
||||
"Scene.Register.Error.Special.PasswordTooShort" = "كلمة المرور قصيرة جداً (يجب أن تكون 8 أحرف على الأقل)";
|
||||
"Scene.Register.Error.Special.UsernameInvalid" = "Username must only contain alphanumeric characters and underscores";
|
||||
"Scene.Register.Error.Special.UsernameTooLong" = "Username is too long (can’t be longer than 30 characters)";
|
||||
"Scene.Register.Input.Avatar.Delete" = "احذف";
|
||||
|
@ -249,24 +252,24 @@ tap the link to confirm your account.";
|
|||
"Scene.Register.Title" = "أخبرنا عنك.";
|
||||
"Scene.Report.Content1" = "Are there any other posts you’d like to add to the report?";
|
||||
"Scene.Report.Content2" = "Is there anything the moderators should know about this report?";
|
||||
"Scene.Report.Send" = "Send Report";
|
||||
"Scene.Report.SkipToSend" = "Send without comment";
|
||||
"Scene.Report.Send" = "ارسل الشكوى";
|
||||
"Scene.Report.SkipToSend" = "إرسال بدون تعليق";
|
||||
"Scene.Report.Step1" = "الخطوة 1 من 2";
|
||||
"Scene.Report.Step2" = "الخطوة 2 من 2";
|
||||
"Scene.Report.TextPlaceholder" = "Type or paste additional comments";
|
||||
"Scene.Report.Title" = "ابلغ عن %@";
|
||||
"Scene.Search.Recommend.Accounts.Description" = "You may like to follow these accounts";
|
||||
"Scene.Search.Recommend.Accounts.Description" = "قد ترغب في متابعة هذه الحسابات";
|
||||
"Scene.Search.Recommend.Accounts.Follow" = "تابع";
|
||||
"Scene.Search.Recommend.Accounts.Title" = "Accounts you might like";
|
||||
"Scene.Search.Recommend.Accounts.Title" = "حسابات قد تعجبك";
|
||||
"Scene.Search.Recommend.ButtonText" = "طالع الكل";
|
||||
"Scene.Search.Recommend.HashTag.Description" = "Hashtags that are getting quite a bit of attention";
|
||||
"Scene.Search.Recommend.HashTag.PeopleTalking" = "%@ people are talking";
|
||||
"Scene.Search.Recommend.HashTag.Title" = "ذات شعبية على ماستدون";
|
||||
"Scene.Search.SearchBar.Cancel" = "إلغاء";
|
||||
"Scene.Search.SearchBar.Placeholder" = "البحث عن وسوم أو مستخدمين·ات";
|
||||
"Scene.Search.Searching.Clear" = "Clear";
|
||||
"Scene.Search.Searching.EmptyState.NoResults" = "No results";
|
||||
"Scene.Search.Searching.RecentSearch" = "Recent searches";
|
||||
"Scene.Search.Searching.Clear" = "امسح";
|
||||
"Scene.Search.Searching.EmptyState.NoResults" = "ليس هناك أية نتيجة";
|
||||
"Scene.Search.Searching.RecentSearch" = "عمليات البحث الأخيرة";
|
||||
"Scene.Search.Searching.Segment.All" = "الكل";
|
||||
"Scene.Search.Searching.Segment.Hashtags" = "الوسوم";
|
||||
"Scene.Search.Searching.Segment.People" = "الأشخاص";
|
||||
|
@ -299,10 +302,10 @@ tap the link to confirm your account.";
|
|||
any server.";
|
||||
"Scene.ServerRules.Button.Confirm" = "انا أوافق";
|
||||
"Scene.ServerRules.PrivacyPolicy" = "سياسة الخصوصية";
|
||||
"Scene.ServerRules.Prompt" = "By continuing, you’re subject to the terms of service and privacy policy for %@.";
|
||||
"Scene.ServerRules.Subtitle" = "These rules are set by the admins of %@.";
|
||||
"Scene.ServerRules.Prompt" = "إن اخترت المواصلة، فإنك تخضع لشروط الخدمة وسياسة الخصوصية لـ %@.";
|
||||
"Scene.ServerRules.Subtitle" = "تم سنّ هذه القواعد من قبل مشرفي %@.";
|
||||
"Scene.ServerRules.TermsOfService" = "شروط الخدمة";
|
||||
"Scene.ServerRules.Title" = "Some ground rules.";
|
||||
"Scene.ServerRules.Title" = "بعض القواعد الأساسية.";
|
||||
"Scene.Settings.Footer.MastodonDescription" = "ماستدون برنامج مفتوح المصدر. يمكنك المساهمة، أو الإبلاغ عن تقارير الأخطاء، على غيت هب %@ (%@)";
|
||||
"Scene.Settings.Keyboard.CloseSettingsWindow" = "إغلاق نافذة الإعدادات";
|
||||
"Scene.Settings.Section.Appearance.Automatic" = "تلقائي";
|
||||
|
@ -312,15 +315,15 @@ any server.";
|
|||
"Scene.Settings.Section.BoringZone.AccountSettings" = "إعدادات الحساب";
|
||||
"Scene.Settings.Section.BoringZone.Privacy" = "سياسة الخصوصية";
|
||||
"Scene.Settings.Section.BoringZone.Terms" = "شروط الخدمة";
|
||||
"Scene.Settings.Section.BoringZone.Title" = "The Boring Zone";
|
||||
"Scene.Settings.Section.BoringZone.Title" = "المنطقة المملة";
|
||||
"Scene.Settings.Section.Notifications.Boosts" = "Reblogs my post";
|
||||
"Scene.Settings.Section.Notifications.Favorites" = "Favorites my post";
|
||||
"Scene.Settings.Section.Notifications.Follows" = "Follows me";
|
||||
"Scene.Settings.Section.Notifications.Follows" = "يتابعني";
|
||||
"Scene.Settings.Section.Notifications.Mentions" = "Mentions me";
|
||||
"Scene.Settings.Section.Notifications.Title" = "الإشعارات";
|
||||
"Scene.Settings.Section.Notifications.Trigger.Anyone" = "anyone";
|
||||
"Scene.Settings.Section.Notifications.Trigger.Follow" = "anyone I follow";
|
||||
"Scene.Settings.Section.Notifications.Trigger.Follower" = "a follower";
|
||||
"Scene.Settings.Section.Notifications.Trigger.Follower" = "مشترِك";
|
||||
"Scene.Settings.Section.Notifications.Trigger.Noone" = "no one";
|
||||
"Scene.Settings.Section.Notifications.Trigger.Title" = "Notify me when";
|
||||
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Disable animated avatars";
|
||||
|
@ -328,13 +331,16 @@ any server.";
|
|||
"Scene.Settings.Section.Preference.Title" = "التفضيلات";
|
||||
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "True black dark mode";
|
||||
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Use default browser to open links";
|
||||
"Scene.Settings.Section.SpicyZone.Clear" = "Clear Media Cache";
|
||||
"Scene.Settings.Section.SpicyZone.Clear" = "مسح ذاكرة التخزين المؤقت للوسائط";
|
||||
"Scene.Settings.Section.SpicyZone.Signout" = "تسجيل الخروج";
|
||||
"Scene.Settings.Section.SpicyZone.Title" = "The Spicy Zone";
|
||||
"Scene.Settings.Section.SpicyZone.Title" = "المنطقة الحارة";
|
||||
"Scene.Settings.Title" = "الإعدادات";
|
||||
"Scene.SuggestionAccount.FollowExplain" = "When you follow someone, you’ll see their posts in your home feed.";
|
||||
"Scene.SuggestionAccount.Title" = "Find People to Follow";
|
||||
"Scene.SuggestionAccount.Title" = "ابحث عن أشخاص لمتابعتهم";
|
||||
"Scene.Thread.BackTitle" = "Post";
|
||||
"Scene.Thread.Title" = "Post from %@";
|
||||
"Scene.Welcome.Slogan" = "Social networking
|
||||
back in your hands.";
|
||||
back in your hands.";
|
||||
"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard";
|
||||
"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button.";
|
||||
"Scene.Wizard.NewInMastodon" = "New in Mastodon";
|
|
@ -2,6 +2,30 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>two</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>few</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>many</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -133,6 +133,9 @@ El teu perfil els sembla així.";
|
|||
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Carregant les publicacions que falten...";
|
||||
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Mostra més respostes";
|
||||
"Common.Controls.Timeline.Timestamp.Now" = "Ara";
|
||||
"Scene.AccountList.AddAccount" = "Afegir compte";
|
||||
"Scene.AccountList.DismissAccountSwitcher" = "Descartar el commutador de comptes";
|
||||
"Scene.AccountList.TabBarHint" = "Perfil actual seleccionat: %@. Toca dues vegades i manté el dit per a mostrar el commutador de comptes";
|
||||
"Scene.Compose.Accessibility.AppendAttachment" = "Afegeix Adjunt";
|
||||
"Scene.Compose.Accessibility.AppendPoll" = "Afegir enquesta";
|
||||
"Scene.Compose.Accessibility.CustomEmojiPicker" = "Selector d'Emoji Personalitzat";
|
||||
|
@ -337,4 +340,7 @@ qualsevol servidor.";
|
|||
"Scene.Thread.BackTitle" = "Publicació";
|
||||
"Scene.Thread.Title" = "Publicació de %@";
|
||||
"Scene.Welcome.Slogan" = "Xarxa social
|
||||
de nou a les teves mans.";
|
||||
de nou a les teves mans.";
|
||||
"Scene.Wizard.AccessibilityHint" = "Toca dues vegades per descartar l'assistent";
|
||||
"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Commuta entre diversos comptes mantenint premut el botó del perfil.";
|
||||
"Scene.Wizard.NewInMastodon" = "Nou a Mastodon";
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 notificació per llegir</string>
|
||||
<key>other</key>
|
||||
<string>%ld notificacions per llegir</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -133,6 +133,9 @@ Dein Profil sieht für diesen Benutzer auch so aus.";
|
|||
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Lade fehlende Beiträge...";
|
||||
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Weitere Antworten anzeigen";
|
||||
"Common.Controls.Timeline.Timestamp.Now" = "Gerade";
|
||||
"Scene.AccountList.AddAccount" = "Add Account";
|
||||
"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher";
|
||||
"Scene.AccountList.TabBarHint" = "Current selected profile: %@. Double tap then hold to show account switcher";
|
||||
"Scene.Compose.Accessibility.AppendAttachment" = "Anhang hinzufügen";
|
||||
"Scene.Compose.Accessibility.AppendPoll" = "Umfrage hinzufügen";
|
||||
"Scene.Compose.Accessibility.CustomEmojiPicker" = "Benutzerdefinierter Emojiwähler";
|
||||
|
@ -336,4 +339,7 @@ beliebigen Server.";
|
|||
"Scene.SuggestionAccount.Title" = "Finde Personen zum Folgen";
|
||||
"Scene.Thread.BackTitle" = "Beitrag";
|
||||
"Scene.Thread.Title" = "Beitrag von %@";
|
||||
"Scene.Welcome.Slogan" = "Soziale Netzwerke wieder in deinen Händen.";
|
||||
"Scene.Welcome.Slogan" = "Soziale Netzwerke wieder in deinen Händen.";
|
||||
"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard";
|
||||
"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button.";
|
||||
"Scene.Wizard.NewInMastodon" = "New in Mastodon";
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -133,6 +133,9 @@ Your profile looks like this to them.";
|
|||
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Loading missing posts...";
|
||||
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Show more replies";
|
||||
"Common.Controls.Timeline.Timestamp.Now" = "Now";
|
||||
"Scene.AccountList.AddAccount" = "Add Account";
|
||||
"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher";
|
||||
"Scene.AccountList.TabBarHint" = "Current selected profile: %@. Double tap then hold to show account switcher";
|
||||
"Scene.Compose.Accessibility.AppendAttachment" = "Add Attachment";
|
||||
"Scene.Compose.Accessibility.AppendPoll" = "Add Poll";
|
||||
"Scene.Compose.Accessibility.CustomEmojiPicker" = "Custom Emoji Picker";
|
||||
|
@ -337,4 +340,7 @@ any server.";
|
|||
"Scene.Thread.BackTitle" = "Post";
|
||||
"Scene.Thread.Title" = "Post from %@";
|
||||
"Scene.Welcome.Slogan" = "Social networking
|
||||
back in your hands.";
|
||||
back in your hands.";
|
||||
"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard";
|
||||
"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button.";
|
||||
"Scene.Wizard.NewInMastodon" = "New in Mastodon";
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -133,6 +133,9 @@ Tu perfil le aparece así a este usuario.";
|
|||
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Cargando mensajes faltantes…";
|
||||
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Mostrar más respuestas";
|
||||
"Common.Controls.Timeline.Timestamp.Now" = "Ahora";
|
||||
"Scene.AccountList.AddAccount" = "Agregar cuenta";
|
||||
"Scene.AccountList.DismissAccountSwitcher" = "Descartar cambio de cuenta";
|
||||
"Scene.AccountList.TabBarHint" = "Perfil seleccionado actualmente: %@. Tocá dos veces y mantenelo presionado para cambiar de cuenta";
|
||||
"Scene.Compose.Accessibility.AppendAttachment" = "Agregar archivo adjunto";
|
||||
"Scene.Compose.Accessibility.AppendPoll" = "Agregar encuesta";
|
||||
"Scene.Compose.Accessibility.CustomEmojiPicker" = "Selector de emoji personalizado";
|
||||
|
@ -337,4 +340,7 @@ el que quieras.";
|
|||
"Scene.Thread.BackTitle" = "Mensaje";
|
||||
"Scene.Thread.Title" = "Mensaje de %@";
|
||||
"Scene.Welcome.Slogan" = "La red social,
|
||||
nuevamente en tu poder.";
|
||||
nuevamente en tu poder.";
|
||||
"Scene.Wizard.AccessibilityHint" = "Tocá dos veces para descartar este asistente";
|
||||
"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Cambiá entre varias cuentas manteniendo presionado el botón del perfil.";
|
||||
"Scene.Wizard.NewInMastodon" = "Novedad en Mastodon";
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 notificación sin leer</string>
|
||||
<key>other</key>
|
||||
<string>%ld notificaciones sin leer</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -133,6 +133,9 @@ Tu perfil se ve así para él.";
|
|||
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Cargando publicaciones faltantes...";
|
||||
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Mostrar más respuestas";
|
||||
"Common.Controls.Timeline.Timestamp.Now" = "Ahora";
|
||||
"Scene.AccountList.AddAccount" = "Add Account";
|
||||
"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher";
|
||||
"Scene.AccountList.TabBarHint" = "Current selected profile: %@. Double tap then hold to show account switcher";
|
||||
"Scene.Compose.Accessibility.AppendAttachment" = "Añadir Adjunto";
|
||||
"Scene.Compose.Accessibility.AppendPoll" = "Añadir Encuesta";
|
||||
"Scene.Compose.Accessibility.CustomEmojiPicker" = "Selector de Emojis Personalizados";
|
||||
|
@ -337,4 +340,7 @@ cualquier servidor.";
|
|||
"Scene.Thread.BackTitle" = "Publicación";
|
||||
"Scene.Thread.Title" = "Publicación de %@";
|
||||
"Scene.Welcome.Slogan" = "Las redes sociales
|
||||
de nuevo en tus manos.";
|
||||
de nuevo en tus manos.";
|
||||
"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard";
|
||||
"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button.";
|
||||
"Scene.Wizard.NewInMastodon" = "New in Mastodon";
|
|
@ -2,6 +2,22 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
|
|
|
@ -81,12 +81,12 @@ Veuillez vérifier votre accès à Internet.";
|
|||
"Common.Controls.Keyboard.Common.SwitchToTab" = "Basculer vers %@";
|
||||
"Common.Controls.Keyboard.SegmentedControl.NextSection" = "Prochaine section";
|
||||
"Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "Section précédente";
|
||||
"Common.Controls.Keyboard.Timeline.NextStatus" = "Article suivant";
|
||||
"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "Ouvrir le profil de l'auteur";
|
||||
"Common.Controls.Keyboard.Timeline.NextStatus" = "Publication suivante";
|
||||
"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "Ouvrir le profil de l’auteur·rice";
|
||||
"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "Ouvrir le profil du rebloggeur";
|
||||
"Common.Controls.Keyboard.Timeline.OpenStatus" = "Ouvrir la publication";
|
||||
"Common.Controls.Keyboard.Timeline.PreviewImage" = "Prévisualiser l’image";
|
||||
"Common.Controls.Keyboard.Timeline.PreviousStatus" = "Article précédent";
|
||||
"Common.Controls.Keyboard.Timeline.PreviousStatus" = "Publication précédente";
|
||||
"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Répondre à la publication";
|
||||
"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Basculer l’avertissement de contenu";
|
||||
"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Basculer le favori lors de la publication";
|
||||
|
@ -102,14 +102,14 @@ Veuillez vérifier votre accès à Internet.";
|
|||
"Common.Controls.Status.Poll.Closed" = "Fermé";
|
||||
"Common.Controls.Status.Poll.Vote" = "Voter";
|
||||
"Common.Controls.Status.ShowPost" = "Montrer la publication";
|
||||
"Common.Controls.Status.ShowUserProfile" = "Montrer le profil de l’utilisateur";
|
||||
"Common.Controls.Status.ShowUserProfile" = "Montrer le profil de l’utilisateur·rice";
|
||||
"Common.Controls.Status.Tag.Email" = "Courriel";
|
||||
"Common.Controls.Status.Tag.Emoji" = "Émoji";
|
||||
"Common.Controls.Status.Tag.Hashtag" = "Hashtag";
|
||||
"Common.Controls.Status.Tag.Link" = "Lien";
|
||||
"Common.Controls.Status.Tag.Mention" = "Mention";
|
||||
"Common.Controls.Status.Tag.Url" = "URL";
|
||||
"Common.Controls.Status.UserReblogged" = "%@ à reblogué";
|
||||
"Common.Controls.Status.UserReblogged" = "%@ a reblogué";
|
||||
"Common.Controls.Status.UserRepliedTo" = "À répondu à %@";
|
||||
"Common.Controls.Tabs.Home" = "Accueil";
|
||||
"Common.Controls.Tabs.Notification" = "Notification";
|
||||
|
@ -124,17 +124,21 @@ Votre profil ressemble à ça pour lui.";
|
|||
"Common.Controls.Timeline.Header.NoStatusFound" = "Aucune publication trouvée";
|
||||
"Common.Controls.Timeline.Header.SuspendedWarning" = "Cet utilisateur a été suspendu.";
|
||||
"Common.Controls.Timeline.Header.UserBlockedWarning" = "Vous ne pouvez pas voir le profil de %@
|
||||
tant qu'il ne vous aura pas débloqué.";
|
||||
"Common.Controls.Timeline.Header.UserBlockingWarning" = "Vous ne pouvez pas voir le profil de %@ tant que vous ne l’avez pas débloqué
|
||||
tant qu’il ne vous aura pas débloqué.";
|
||||
"Common.Controls.Timeline.Header.UserBlockingWarning" = "Vous ne pouvez pas voir le profil de %@
|
||||
tant que vous ne l’avez pas débloqué
|
||||
Votre profil ressemble à ça pour lui.";
|
||||
"Common.Controls.Timeline.Header.UserSuspendedWarning" = "Le compte de %@ à été suspendu.";
|
||||
"Common.Controls.Timeline.Loader.LoadMissingPosts" = "Charger les messages manquants";
|
||||
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Chargement des publications manquantes...";
|
||||
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Charger plus de réponses";
|
||||
"Common.Controls.Timeline.Timestamp.Now" = "À l’instant";
|
||||
"Scene.AccountList.AddAccount" = "Add Account";
|
||||
"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher";
|
||||
"Scene.AccountList.TabBarHint" = "Current selected profile: %@. Double tap then hold to show account switcher";
|
||||
"Scene.Compose.Accessibility.AppendAttachment" = "Joindre un document";
|
||||
"Scene.Compose.Accessibility.AppendPoll" = "Ajouter un Sondage";
|
||||
"Scene.Compose.Accessibility.CustomEmojiPicker" = "Sélecteur d’émojis personnalisé";
|
||||
"Scene.Compose.Accessibility.CustomEmojiPicker" = "Sélecteur d’émojis personnalisés";
|
||||
"Scene.Compose.Accessibility.DisableContentWarning" = "Désactiver l'avertissement de contenu";
|
||||
"Scene.Compose.Accessibility.EnableContentWarning" = "Basculer l’avertissement de contenu";
|
||||
"Scene.Compose.Accessibility.PostVisibilityMenu" = "Menu de Visibilité de la publication";
|
||||
|
@ -195,12 +199,12 @@ tapotez le lien pour confirmer votre compte.";
|
|||
"Scene.Notification.Keyobard.ShowMentions" = "Afficher les mentions";
|
||||
"Scene.Notification.Title.Everything" = "Tout";
|
||||
"Scene.Notification.Title.Mentions" = "Mentions";
|
||||
"Scene.Notification.UserFavorited Your Post" = "%@ favorited your post";
|
||||
"Scene.Notification.UserFollowedYou" = "%@ followed you";
|
||||
"Scene.Notification.UserMentionedYou" = "%@ mentioned you";
|
||||
"Scene.Notification.UserRebloggedYourPost" = "%@ reblogged your post";
|
||||
"Scene.Notification.UserRequestedToFollowYou" = "%@ requested to follow you";
|
||||
"Scene.Notification.UserYourPollHasEnded" = "%@ Your poll has ended";
|
||||
"Scene.Notification.UserFavorited Your Post" = "%@ a mis votre pouet en favori";
|
||||
"Scene.Notification.UserFollowedYou" = "%@ s’est abonné à vous";
|
||||
"Scene.Notification.UserMentionedYou" = "%@ vous a mentionné";
|
||||
"Scene.Notification.UserRebloggedYourPost" = "%@ a partagé votre publication";
|
||||
"Scene.Notification.UserRequestedToFollowYou" = "%@ a demandé à vous suivre";
|
||||
"Scene.Notification.UserYourPollHasEnded" = "%@ votre sondage est terminé";
|
||||
"Scene.Preview.Keyboard.ClosePreview" = "Fermer l'aperçu";
|
||||
"Scene.Preview.Keyboard.ShowNext" = "Afficher le suivant";
|
||||
"Scene.Preview.Keyboard.ShowPrevious" = "Afficher le précédent";
|
||||
|
@ -212,7 +216,7 @@ tapotez le lien pour confirmer votre compte.";
|
|||
"Scene.Profile.Fields.Placeholder.Label" = "Étiquette";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Confirmer le déblocage de %@";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Débloquer le compte";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Êtes-vous sûr de vouloir mettre en sourdine %@";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Êtes-vous sûr de vouloir désactiver la sourdine de %@";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Ne plus mettre en sourdine ce compte";
|
||||
"Scene.Profile.SegmentedControl.Media" = "Média";
|
||||
"Scene.Profile.SegmentedControl.Posts" = "Publications";
|
||||
|
@ -222,7 +226,7 @@ tapotez le lien pour confirmer votre compte.";
|
|||
"Scene.Register.Error.Item.Locale" = "Lieu";
|
||||
"Scene.Register.Error.Item.Password" = "Mot de passe";
|
||||
"Scene.Register.Error.Item.Reason" = "Raison";
|
||||
"Scene.Register.Error.Item.Username" = "Nom d'utilisateur";
|
||||
"Scene.Register.Error.Item.Username" = "Nom d’utilisateur";
|
||||
"Scene.Register.Error.Reason.Accepted" = "%@ doit être accepté";
|
||||
"Scene.Register.Error.Reason.Blank" = "%@ est requis";
|
||||
"Scene.Register.Error.Reason.Blocked" = "%@ contient un fournisseur courriel proscrit";
|
||||
|
@ -293,7 +297,7 @@ tapotez le lien pour confirmer votre compte.";
|
|||
"Scene.ServerPicker.Input.Placeholder" = "Trouvez un serveur ou rejoignez le vôtre...";
|
||||
"Scene.ServerPicker.Label.Category" = "CATÉGORIE";
|
||||
"Scene.ServerPicker.Label.Language" = "LANGUE";
|
||||
"Scene.ServerPicker.Label.Users" = "UTILISATEURS";
|
||||
"Scene.ServerPicker.Label.Users" = "UTILISATEUR·RICE·S";
|
||||
"Scene.ServerPicker.Title" = "Choisissez un serveur,
|
||||
n'importe quel serveur.";
|
||||
"Scene.ServerRules.Button.Confirm" = "J’accepte";
|
||||
|
@ -323,7 +327,7 @@ n'importe quel serveur.";
|
|||
"Scene.Settings.Section.Notifications.Trigger.Noone" = "personne";
|
||||
"Scene.Settings.Section.Notifications.Trigger.Title" = "Me notifier lorsque";
|
||||
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Désactiver les avatars animés";
|
||||
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Désactiver les émoticônes animées";
|
||||
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Désactiver les émojis animées";
|
||||
"Scene.Settings.Section.Preference.Title" = "Préférences";
|
||||
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Vrai mode sombre";
|
||||
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Utiliser le navigateur par défaut pour ouvrir les liens";
|
||||
|
@ -335,4 +339,7 @@ n'importe quel serveur.";
|
|||
"Scene.SuggestionAccount.Title" = "Trouver des personnes à suivre";
|
||||
"Scene.Thread.BackTitle" = "Publication";
|
||||
"Scene.Thread.Title" = "Publication de %@";
|
||||
"Scene.Welcome.Slogan" = "Le réseau social qui vous rend le contrôle.";
|
||||
"Scene.Welcome.Slogan" = "Le réseau social qui vous rend le contrôle.";
|
||||
"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard";
|
||||
"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button.";
|
||||
"Scene.Wizard.NewInMastodon" = "New in Mastodon";
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue