From c129e8a45462df005e405b40c4ece718ff3e270f Mon Sep 17 00:00:00 2001 From: Alex Grebenyuk Date: Mon, 1 Dec 2025 17:01:27 -0500 Subject: [PATCH 1/5] Fix an issue with duplicated subscriptions for Jetpack-connected sites (#25026) * Fix an issue with subscribing to Jetpack-connected site from search leading to duplicated subscriptions * Simpler and more resilient parsing * Update tests --- Modules/Sources/WordPressKit/ReaderFeed.swift | 211 ++++++++++++------ RELEASE-NOTES.txt | 1 + .../Reader/reader-search-response-01.json | 133 +++++++++++ .../Reader/reader-search-response-02.json | 151 +++++++++++++ .../Reader/reader-search-response-03.json | 39 ++++ ...reader-site-search-no-blog-or-feed-id.json | 2 - .../ReaderSiteSearchServiceRemoteTests.swift | 14 +- .../Tests/ReederFeedTests.swift | 200 +++++++---------- .../Reader/Controllers/ReaderFeedCell.swift | 6 +- WordPress/WordPress.xcodeproj/project.pbxproj | 15 ++ 10 files changed, 571 insertions(+), 201 deletions(-) create mode 100644 Tests/WordPressKitTests/WordPressKitTests/Mock Data/Reader/reader-search-response-01.json create mode 100644 Tests/WordPressKitTests/WordPressKitTests/Mock Data/Reader/reader-search-response-02.json create mode 100644 Tests/WordPressKitTests/WordPressKitTests/Mock Data/Reader/reader-search-response-03.json diff --git a/Modules/Sources/WordPressKit/ReaderFeed.swift b/Modules/Sources/WordPressKit/ReaderFeed.swift index 1875c2ede838..5ac93b34165b 100644 --- a/Modules/Sources/WordPressKit/ReaderFeed.swift +++ b/Modules/Sources/WordPressKit/ReaderFeed.swift @@ -4,87 +4,132 @@ import Foundation /// Encapsulates details of a single feed returned by the Reader feed search API /// (read/feed?q=query) /// +/// The API returns different structures depending on the site type: +/// - WordPress.com sites: Data at root level (URL, title, blog_ID) +/// - Jetpack sites: Data in meta.data.feed +/// - External RSS feeds: Data in meta.data.feed, blog_ID is "0" +/// public struct ReaderFeed: Decodable { - public let url: URL? - public let title: String? - public let feedDescription: String? - public let feedID: String? - public let blogID: String? - public let blavatarURL: URL? + public var feedID: String? { + let id = feed?.feedID ?? site?.feedID.map(String.init) + return id?.nonEmptyID + } - private enum CodingKeys: String, CodingKey { - case url = "URL" - case title = "title" - case feedID = "feed_ID" - case blogID = "blog_ID" - case meta = "meta" + public var blogID: String? { + let id = feed?.blogID ?? site?.id.map(String.init) + return id?.nonEmptyID } - private enum MetaKeys: CodingKey { - case data + /// Site/Feed URL with fallback: data.site → data.feed + /// Prioritizes site URL over feed URL for canonical representation + public var url: URL? { + site?.url ?? feed?.url } - private enum DataKeys: CodingKey { - case site - case feed + /// Site/Feed title with fallback: data.site → data.feed + /// Prioritizes site name over feed name + public var title: String? { + site?.name ?? feed?.name } + /// Feed description with fallback: data.site → data.feed + public var description: String? { + site?.description ?? feed?.description + } + + /// Site icon/avatar URL, prioritizing data.site.icon.img over data.feed.image + public var iconURL: URL? { + site?.iconURL ?? feed?.imageURL + } + + // MARK: - Decodable + + /// Feed data from meta.data.feed + private var feed: FeedData? + + /// Site data from meta.data.site + private var site: SiteData? + public init(from decoder: Decoder) throws { - // We have to manually decode the feed from the JSON, for a couple of reasons: - // - Some feeds have no `icon` dictionary - // - Some feeds have no `data` dictionary - // - We want to decode whatever we can get, and not fail if neither of those exist - let rootContainer = try decoder.container(keyedBy: CodingKeys.self) - - var feedURL = try? rootContainer.decodeIfPresent(URL.self, forKey: .url) - var title = try? rootContainer.decodeIfPresent(String.self, forKey: .title) - feedID = try? rootContainer.decode(String.self, forKey: .feedID) - blogID = try? rootContainer.decode(String.self, forKey: .blogID) - - var feedDescription: String? - var blavatarURL: URL? - - // Try to parse both site and feed data from meta.data - do { - let metaContainer = try rootContainer.nestedContainer(keyedBy: MetaKeys.self, forKey: .meta) - let dataContainer = try metaContainer.nestedContainer(keyedBy: DataKeys.self, forKey: .data) - - let siteData = try? dataContainer.decode(SiteOrFeedData.self, forKey: .site) - let feedData = try? dataContainer.decode(SiteOrFeedData.self, forKey: .feed) - - // Use data from either source, preferring site data when both are available - feedDescription = siteData?.description ?? feedData?.description - blavatarURL = siteData?.iconURL ?? feedData?.iconURL - - // Fixes CMM-1002: in some cases, the backend fails to embed certain fields - // directly in the feed object - if feedURL == nil { - feedURL = siteData?.url ?? feedData?.url - } - if title == nil { - title = siteData?.title ?? feedData?.title - } - } catch { + let parsed = try ReaderFeedJSON(from: decoder) + self.feed = parsed.meta?.data?.feed + self.site = parsed.meta?.data?.site + + // If feed data not found, try parsing inline data from root (WordPress.com format) + if self.feed == nil, let inlineData = try? InlineData(from: decoder) { + self.feed = FeedData(from: inlineData) } + } +} - self.url = feedURL - self.title = title - self.feedDescription = feedDescription - self.blavatarURL = blavatarURL +private struct ReaderFeedJSON: Decodable { + struct Meta: Decodable { + struct Data: Decodable { + var feed: FeedData? + var site: SiteData? + } + + var data: Data? } + + var meta: Meta? } -private struct SiteOrFeedData: Decodable { - var title: String? - var description: String? - var iconURL: URL? - var url: URL? +/// Represents feed-specific data from meta.data.feed +private struct FeedData: Decodable { + let feedID: String? + let blogID: String? + let name: String? + let url: URL? + let description: String? + let imageURL: URL? - enum CodingKeys: String, CodingKey { - case description - case icon + private enum CodingKeys: String, CodingKey { + case feedID = "feed_ID" + case blogID = "blog_ID" + case name = "name" case url = "URL" - case name + case description = "description" + case imageURL = "image" + } + + init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + + feedID = try? container.decodeIfPresent(String.self, forKey: .feedID) + blogID = try? container.decodeIfPresent(String.self, forKey: .blogID) + name = try? container.decodeIfPresent(String.self, forKey: .name) + url = try? container.decodeIfPresent(URL.self, forKey: .url) + description = try? container.decodeIfPresent(String.self, forKey: .description) + imageURL = try? container.decodeIfPresent(URL.self, forKey: .imageURL) + } + + init(from inlineData: InlineData) { + self.feedID = inlineData.feedID + self.blogID = inlineData.blogID + self.name = inlineData.title + self.url = inlineData.url + self.description = nil + self.imageURL = nil + } +} + +/// Represents site-specific data from meta.data.site +private struct SiteData: Decodable { + let feedID: Int? + let id: Int? + let name: String? + let url: URL? + let description: String? + let iconURL: URL? + + private enum CodingKeys: String, CodingKey { + case feedID = "feed_ID" + case id = "ID" + case name = "name" + case url = "URL" + case description = "description" + case icon = "icon" } private enum IconKeys: CodingKey { @@ -94,19 +139,43 @@ private struct SiteOrFeedData: Decodable { init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) - title = try? container.decodeIfPresent(String.self, forKey: .name) - description = try? container.decodeIfPresent(String.self, forKey: .description) + feedID = try? container.decodeIfPresent(Int.self, forKey: .feedID) + id = try? container.decodeIfPresent(Int.self, forKey: .id) + name = try? container.decodeIfPresent(String.self, forKey: .name) url = try? container.decodeIfPresent(URL.self, forKey: .url) + description = try? container.decodeIfPresent(String.self, forKey: .description) - // Try to decode the icon URL from the nested icon dictionary + // Decode icon.img if icon dictionary exists if let iconContainer = try? container.nestedContainer(keyedBy: IconKeys.self, forKey: .icon) { iconURL = try? iconContainer.decode(URL.self, forKey: .img) + } else { + iconURL = nil } } } -extension ReaderFeed: CustomStringConvertible { - public var description: String { - return "" +/// Represents inline feed data (WordPress.com sites) +/// Used when feed data appears at root level instead of nested in meta.data.feed. +/// In practice, it should never be necessary. It's a fallback. +private struct InlineData: Decodable { + let feedID: String? + let blogID: String? + let title: String? + let url: URL? + + private enum CodingKeys: String, CodingKey { + case feedID = "feed_ID" + case blogID = "blog_ID" + case title = "title" + case url = "URL" + } +} + +private extension String { + var nonEmptyID: String? { + guard !isEmpty && self != "0" else { + return nil + } + return self } } diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 1eb9adfb1ca9..856f44119b32 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -25,6 +25,7 @@ * [*] Fix overly long related post titles in Reader [#25011] * [*] Increase number of lines for post tiles in Reader to three [#25019] * [*] Fix horizontal insets in Reader article view [#25010] +* [*] Fix an issue with duplicated subscriptions for Jetpack-connected sites [#25026] * [*] Fixed several reader bugs causing posts to load strangely, or not at all [#25016] 26.4 diff --git a/Tests/WordPressKitTests/WordPressKitTests/Mock Data/Reader/reader-search-response-01.json b/Tests/WordPressKitTests/WordPressKitTests/Mock Data/Reader/reader-search-response-01.json new file mode 100644 index 000000000000..d33b67daefb7 --- /dev/null +++ b/Tests/WordPressKitTests/WordPressKitTests/Mock Data/Reader/reader-search-response-01.json @@ -0,0 +1,133 @@ +{ + "feeds": [ + { + "subscribe_URL": "https://ma.tt/feed/", + "feed_ID": "188407", + "meta": { + "links": { + "feed": "https://public-api.wordpress.com/rest/v1.1/read/feed/188407", + "site": "https://public-api.wordpress.com/rest/v1.1/read/sites/1047865" + }, + "data": { + "feed": { + "blog_ID": "1047865", + "feed_ID": "188407", + "blog_owner": { + "ID": 5, + "name": "Matt" + }, + "name": "Matt Mullenweg", + "URL": "https://ma.tt/", + "feed_URL": "http://ma.tt/feed", + "subscribers_count": 4520, + "is_following": false, + "last_update": "2025-11-27T07:18:10+00:00", + "last_checked": "2025-11-27T19:04:42+00:00", + "marked_for_refresh": false, + "next_refresh_time": null, + "organization_id": 0, + "subscription_id": null, + "unseen_count": 0, + "meta": { + "links": { + "self": "https://public-api.wordpress.com/rest/v1.1/read/feed/188407", + "site": "https://public-api.wordpress.com/rest/v1.1/read/sites/1047865" + } + }, + "resolved_feed_url": "https://ma.tt/feed/", + "image": "https://i0.wp.com/ma.tt/files/2024/01/cropped-matt-favicon.png?fit=32%2C32&quality=80&ssl=1", + "description": "Unlucky in Cards" + }, + "site": { + "ID": 1047865, + "name": "Matt Mullenweg", + "description": "Unlucky in Cards", + "URL": "https://ma.tt", + "jetpack": true, + "jetpack_connection": true, + "post_count": 5600, + "subscribers_count": 4520, + "lang": "en-US", + "icon": { + "img": "https://ma.tt/files/2024/01/cropped-matt-favicon.png", + "ico": "https://ma.tt/files/2024/01/cropped-matt-favicon.png?w=16" + }, + "logo": { + "id": 0, + "sizes": [], + "url": "" + }, + "visible": true, + "is_private": false, + "is_coming_soon": false, + "is_following": false, + "organization_id": 0, + "meta": { + "links": { + "self": "https://public-api.wordpress.com/rest/v1.1/read/sites/1047865", + "help": "https://public-api.wordpress.com/rest/v1.1/read/sites/1047865/help", + "posts": "https://public-api.wordpress.com/rest/v1.1/read/sites/1047865/posts/", + "comments": "https://public-api.wordpress.com/rest/v1.1/sites/1047865/comments/", + "xmlrpc": "https://ma.tt/blog/xmlrpc.php" + } + }, + "launch_status": false, + "site_migration": { + "is_complete": false, + "in_progress": false + }, + "is_fse_active": false, + "is_fse_eligible": false, + "is_core_site_editor_enabled": false, + "is_wpcom_atomic": false, + "is_wpcom_staging_site": false, + "is_deleted": false, + "is_a4a_client": false, + "is_a4a_dev_site": false, + "is_wpcom_flex": false, + "capabilities": { + "edit_pages": false, + "edit_posts": false, + "edit_others_posts": false, + "edit_theme_options": false, + "list_users": false, + "manage_categories": false, + "manage_options": false, + "publish_posts": false, + "upload_files": false, + "view_stats": false + }, + "is_multi_author": true, + "feed_ID": 188407, + "feed_URL": "http://ma.tt/feed", + "header_image": false, + "owner": { + "ID": 5, + "login": "matt", + "name": "Matt", + "first_name": "Matt", + "last_name": "Mullenweg", + "nice_name": "matt", + "URL": "https://matt.blog/", + "avatar_URL": "https://0.gravatar.com/avatar/33252cd1f33526af53580fcb1736172f06e6716f32afdd1be19ec3096d15dea5?s=96&d=retro&r=G", + "profile_URL": "https://gravatar.com/matt", + "ip_address": false, + "site_visible": true, + "has_avatar": true + }, + "subscription": { + "delivery_methods": { + "email": null, + "notification": { + "send_posts": false + } + } + }, + "is_blocked": false, + "unseen_count": 0 + } + } + } + } + ] +} diff --git a/Tests/WordPressKitTests/WordPressKitTests/Mock Data/Reader/reader-search-response-02.json b/Tests/WordPressKitTests/WordPressKitTests/Mock Data/Reader/reader-search-response-02.json new file mode 100644 index 000000000000..ef5fea1cb5d5 --- /dev/null +++ b/Tests/WordPressKitTests/WordPressKitTests/Mock Data/Reader/reader-search-response-02.json @@ -0,0 +1,151 @@ +{ + "feeds": [ + { + "URL": "http://veselin.blog", + "subscribe_URL": "http://veselin.blog", + "blog_ID": "125098293", + "title": "Veselin.blog", + "railcar": { + "railcar": "KkQSHUkMCD@Z", + "fetch_algo": "reader/manage/search:0", + "fetch_position": 0, + "rec_blog_id": 125098293, + "fetch_lang": "en", + "fetch_query": "Veselin.blog" + }, + "meta": { + "links": { + "feed": "https://public-api.wordpress.com/rest/v1.1/read/feed/152023972", + "site": "https://public-api.wordpress.com/rest/v1.1/read/sites/125098293" + }, + "data": { + "feed": { + "blog_ID": "125098293", + "feed_ID": "152023972", + "blog_owner": { + "ID": 217470, + "name": "Veselin" + }, + "name": "Veselin.blog", + "URL": "http://veselin.blog/", + "feed_URL": "http://veselin.blog", + "subscribers_count": 534, + "is_following": true, + "last_update": "2025-11-26T22:19:29+00:00", + "last_checked": "2025-11-26T22:19:33+00:00", + "marked_for_refresh": false, + "next_refresh_time": null, + "organization_id": 0, + "subscription_id": "824304679", + "unseen_count": 0, + "meta": { + "links": { + "self": "https://public-api.wordpress.com/rest/v1.1/read/feed/152023972", + "site": "https://public-api.wordpress.com/rest/v1.1/read/sites/125098293" + } + }, + "image": "https://veselinblogblog.files.wordpress.com/2024/04/cropped-avatar-18.jpg?w=32", + "description": "Cats, good books, AI, and religious walking in the city of Sofia" + }, + "site": { + "ID": 125098293, + "name": "Veselin.blog", + "description": "Cats, good books, AI, and religious walking in the city of Sofia", + "URL": "http://veselin.blog", + "jetpack": false, + "jetpack_connection": false, + "post_count": 791, + "subscribers_count": 534, + "lang": "en", + "icon": { + "img": "https://veselinblogblog.wordpress.com/wp-content/uploads/2024/04/cropped-avatar-18.jpg?w=96", + "ico": "https://veselinblogblog.wordpress.com/wp-content/uploads/2024/04/cropped-avatar-18.jpg?w=96" + }, + "logo": { + "id": 0, + "sizes": [], + "url": "" + }, + "visible": true, + "is_private": false, + "is_coming_soon": false, + "is_following": true, + "organization_id": 0, + "meta": { + "links": { + "self": "https://public-api.wordpress.com/rest/v1.1/read/sites/125098293", + "help": "https://public-api.wordpress.com/rest/v1.1/read/sites/125098293/help", + "posts": "https://public-api.wordpress.com/rest/v1.1/read/sites/125098293/posts/", + "comments": "https://public-api.wordpress.com/rest/v1.1/sites/125098293/comments/", + "xmlrpc": "https://veselinblogblog.wordpress.com/xmlrpc.php" + } + }, + "launch_status": false, + "site_migration": { + "is_complete": false, + "in_progress": false + }, + "is_fse_active": false, + "is_fse_eligible": false, + "is_core_site_editor_enabled": false, + "is_wpcom_atomic": false, + "is_wpcom_staging_site": false, + "is_deleted": false, + "is_a4a_client": false, + "is_a4a_dev_site": false, + "is_wpcom_flex": false, + "capabilities": { + "edit_pages": false, + "edit_posts": false, + "edit_others_posts": false, + "edit_theme_options": false, + "list_users": false, + "manage_categories": false, + "manage_options": false, + "publish_posts": false, + "upload_files": false, + "view_stats": false + }, + "is_multi_author": false, + "feed_ID": 152023972, + "feed_URL": "http://veselin.blog", + "header_image": false, + "owner": { + "ID": 217470, + "login": "dzver", + "name": "Veselin", + "first_name": "Veselin", + "last_name": "Nikolov", + "nice_name": "dzver", + "URL": "https://veselin.blog", + "avatar_URL": "https://2.gravatar.com/avatar/5f0ee9d86c04bc37653bb6adfeba93e6d5b57f2356d32c06fd2de25ad4adfbe6?s=96&d=identicon&r=G", + "profile_URL": "https://gravatar.com/dzver", + "ip_address": false, + "site_visible": true, + "has_avatar": true + }, + "subscription": { + "delivery_methods": { + "email": { + "send_posts": true, + "send_comments": false, + "post_delivery_frequency": "instantly", + "date_subscribed": "2025-11-27 19:08:50" + }, + "notification": { + "send_posts": false + } + } + }, + "is_blocked": false, + "unseen_count": 0 + } + } + }, + "feed_ID": "152023972", + "subscribers_count": 532 + } + ], + "total": 1, + "algorithm": "reader/manage/search:0" +} diff --git a/Tests/WordPressKitTests/WordPressKitTests/Mock Data/Reader/reader-search-response-03.json b/Tests/WordPressKitTests/WordPressKitTests/Mock Data/Reader/reader-search-response-03.json new file mode 100644 index 000000000000..2962bab66653 --- /dev/null +++ b/Tests/WordPressKitTests/WordPressKitTests/Mock Data/Reader/reader-search-response-03.json @@ -0,0 +1,39 @@ +{ + "feeds": [ + { + "subscribe_URL": "http://daringfireball.net/feeds/main", + "feed_ID": "20787116", + "meta": { + "links": { + "feed": "https://public-api.wordpress.com/rest/v1.1/read/feed/20787116" + }, + "data": { + "feed": { + "blog_ID": "0", + "feed_ID": "20787116", + "blog_owner": null, + "name": "Daring Fireball", + "URL": "https://daringfireball.net/", + "feed_URL": "http://daringfireball.net/feeds/main", + "subscribers_count": 408, + "is_following": false, + "last_update": "2025-11-27T00:31:44+00:00", + "last_checked": "2025-11-27T15:47:03+00:00", + "marked_for_refresh": false, + "next_refresh_time": null, + "organization_id": 0, + "subscription_id": null, + "unseen_count": 0, + "meta": { + "links": { + "self": "https://public-api.wordpress.com/rest/v1.1/read/feed/20787116" + } + }, + "resolved_feed_url": "https://daringfireball.net/feeds/main", + "description": "By John Gruber" + } + } + } + } + ] +} diff --git a/Tests/WordPressKitTests/WordPressKitTests/Mock Data/reader-site-search-no-blog-or-feed-id.json b/Tests/WordPressKitTests/WordPressKitTests/Mock Data/reader-site-search-no-blog-or-feed-id.json index 08e2e9000bdd..656eb496d9bc 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Mock Data/reader-site-search-no-blog-or-feed-id.json +++ b/Tests/WordPressKitTests/WordPressKitTests/Mock Data/reader-site-search-no-blog-or-feed-id.json @@ -19,7 +19,6 @@ }, "data": { "site": { - "ID": 489937, "name": "The Daily Post", "description": "The Art and Craft of Blogging", "URL": "https://dailypost.wordpress.com", @@ -60,7 +59,6 @@ "view_stats": false }, "is_multi_author": true, - "feed_ID": 27030, "feed_URL": "http://dailypost.wordpress.com", "header_image": false, "owner": { diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderSiteSearchServiceRemoteTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderSiteSearchServiceRemoteTests.swift index 161a845c8259..9f95dde5d2b4 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderSiteSearchServiceRemoteTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/ReaderSiteSearchServiceRemoteTests.swift @@ -71,8 +71,8 @@ class ReaderSiteSearchServiceRemoteTests: RemoteTestCase, RESTTestable { XCTAssertEqual(feed.title, "The Daily Post") XCTAssertEqual(feed.feedID, "27030") XCTAssertEqual(feed.url, URL(string: "https://dailypost.wordpress.com")!) - XCTAssertEqual(feed.feedDescription, "The Art and Craft of Blogging") - XCTAssertNil(feed.blavatarURL) + XCTAssertEqual(feed.description, "The Art and Craft of Blogging") + XCTAssertNil(feed.iconURL) expect.fulfill() }, failure: { _ in @@ -101,8 +101,8 @@ class ReaderSiteSearchServiceRemoteTests: RemoteTestCase, RESTTestable { XCTAssertEqual(feed.title, "The Daily Post") XCTAssertEqual(feed.feedID, "27030") XCTAssertEqual(feed.url, URL(string: "https://dailypost.wordpress.com")!) - XCTAssertNil(feed.blavatarURL) - XCTAssertNil(feed.feedDescription) + XCTAssertNil(feed.iconURL) + XCTAssertNil(feed.description) expect.fulfill() @@ -164,10 +164,10 @@ class ReaderSiteSearchServiceRemoteTests: RemoteTestCase, RESTTestable { } XCTAssertEqual(feed.title, "The Daily Post") - XCTAssertNil(feed.feedID) + XCTAssertEqual(feed.feedID, "27030") XCTAssertEqual(feed.blogID, "489937") XCTAssertEqual(feed.url, URL(string: "https://dailypost.wordpress.com")!) - XCTAssertEqual(feed.feedDescription, "The Art and Craft of Blogging") + XCTAssertEqual(feed.description, "The Art and Craft of Blogging") expect.fulfill() }, failure: { _ in @@ -196,7 +196,7 @@ class ReaderSiteSearchServiceRemoteTests: RemoteTestCase, RESTTestable { XCTAssertEqual(feed.title, "Discover") XCTAssertEqual(feed.feedID, "41325786") XCTAssertEqual(feed.url, URL(string: "https://discover.wordpress.com")!) - XCTAssertEqual(feed.feedDescription, "A daily selection of the best content published on WordPress, collected for you by humans who love to read.") + XCTAssertEqual(feed.description, "A daily selection of the best content published on WordPress, collected for you by humans who love to read.") expect.fulfill() }, failure: { _ in diff --git a/Tests/WordPressKitTests/WordPressKitTests/Tests/ReederFeedTests.swift b/Tests/WordPressKitTests/WordPressKitTests/Tests/ReederFeedTests.swift index 8b2a3aa1d6ad..fd308bab2cda 100644 --- a/Tests/WordPressKitTests/WordPressKitTests/Tests/ReederFeedTests.swift +++ b/Tests/WordPressKitTests/WordPressKitTests/Tests/ReederFeedTests.swift @@ -5,141 +5,105 @@ import Testing struct ReaderFeedTests { - @Test func decodesReaderFeedEnvelopeWithSiteFallbacks() throws { - // GIVEN: JSON response where URL and title are not embedded at root level - let jsonData = try #require(readerFeedJSON.data(using: .utf8)) + // MARK: - Jetpack-connected Sites + + /// Tests decoding a Jetpack-connected WordPress site feed where URL, title, and description + /// must fall back to meta.data.feed fields since they're not present at root level. + @Test func decodesJetpackConnectedSiteFeed() throws { + // GIVEN: Search response for a Jetpack site (ma.tt) + let jsonData = try loadMockJSON(filename: "reader-search-response-01") // WHEN: Decoding the envelope let decoder = JSONDecoder() let envelope = try decoder.decode(ReaderFeedEnvelope.self, from: jsonData) - // THEN: Envelope contains feeds array + // THEN: Envelope contains one feed with no total count #expect(envelope.feeds.count == 1) + #expect(envelope.total == nil) let feed = try #require(envelope.feeds.first) - // THEN: Feed ID is decoded from root level + // THEN: IDs are decoded correctly #expect(feed.feedID == "188407") + #expect(feed.blogID == "1047865") - // THEN: URL falls back to data.site.URL since not present at root + // THEN: Feed metadata falls back to meta.data.feed fields #expect(feed.url?.absoluteString == "https://ma.tt") - - // THEN: Title falls back to data.site.name since not present at root #expect(feed.title == "Matt Mullenweg") + #expect(feed.description == "Unlucky in Cards") + #expect(feed.iconURL?.absoluteString == "https://ma.tt/files/2024/01/cropped-matt-favicon.png") + } + + // MARK: - WordPress.com Sites - // THEN: Description is decoded from data.site.description - #expect(feed.feedDescription == "Unlucky in Cards") + /// Tests decoding a WordPress.com site feed where URL and title are present at root level, + /// and the envelope includes a total count field. + @Test func decodesWordPressComSiteFeed() throws { + // GIVEN: Search response for a WordPress.com site (veselin.blog) + let jsonData = try loadMockJSON(filename: "reader-search-response-02") + + // WHEN: Decoding the envelope + let decoder = JSONDecoder() + let envelope = try decoder.decode(ReaderFeedEnvelope.self, from: jsonData) - // THEN: Blavatar URL is decoded from data.site.icon.img - #expect(feed.blavatarURL?.absoluteString == "https://ma.tt/files/2024/01/cropped-matt-favicon.png") + // THEN: Envelope contains one feed with total count + #expect(envelope.feeds.count == 1) + #expect(envelope.total == 1) + + let feed = try #require(envelope.feeds.first) + + // THEN: IDs are decoded from root level + #expect(feed.feedID == "152023972") + #expect(feed.blogID == "125098293") + + // THEN: URL and title are at root level + #expect(feed.url?.absoluteString == "http://veselin.blog") + #expect(feed.title == "Veselin.blog") + + // THEN: Description and icon fall back to meta.data fields + #expect(feed.description == "Cats, good books, AI, and religious walking in the city of Sofia") + #expect(feed.iconURL?.absoluteString == "https://veselinblogblog.wordpress.com/wp-content/uploads/2024/04/cropped-avatar-18.jpg?w=96") } -} -// MARK: - Test Data - -private let readerFeedJSON = """ -{ - "feeds": [ - { - "subscribe_URL": "https://ma.tt/feed/", - "feed_ID": "188407", - "meta": { - "links": { - "feed": "https://public-api.wordpress.com/rest/v1.1/read/feed/188407", - "site": "https://public-api.wordpress.com/rest/v1.1/read/sites/1047865" - }, - "data": { - "site": { - "ID": 1047865, - "name": "Matt Mullenweg", - "description": "Unlucky in Cards", - "URL": "https://ma.tt", - "jetpack": true, - "jetpack_connection": true, - "post_count": 5599, - "subscribers_count": 4520, - "lang": "en-US", - "icon": { - "img": "https://ma.tt/files/2024/01/cropped-matt-favicon.png", - "ico": "https://ma.tt/files/2024/01/cropped-matt-favicon.png?w=16" - }, - "logo": { - "id": 0, - "sizes": [], - "url": "" - }, - "visible": true, - "is_private": false, - "is_coming_soon": false, - "is_following": false, - "organization_id": 0, - "meta": { - "links": { - "self": "https://public-api.wordpress.com/rest/v1.1/read/sites/1047865", - "help": "https://public-api.wordpress.com/rest/v1.1/read/sites/1047865/help", - "posts": "https://public-api.wordpress.com/rest/v1.1/read/sites/1047865/posts/", - "comments": "https://public-api.wordpress.com/rest/v1.1/sites/1047865/comments/", - "xmlrpc": "https://ma.tt/blog/xmlrpc.php" - } - }, - "launch_status": false, - "site_migration": { - "is_complete": false, - "in_progress": false - }, - "is_fse_active": false, - "is_fse_eligible": false, - "is_core_site_editor_enabled": false, - "is_wpcom_atomic": false, - "is_wpcom_staging_site": false, - "is_deleted": false, - "is_a4a_client": false, - "is_a4a_dev_site": false, - "is_wpcom_flex": false, - "capabilities": { - "edit_pages": false, - "edit_posts": false, - "edit_others_posts": false, - "edit_theme_options": false, - "list_users": false, - "manage_categories": false, - "manage_options": false, - "publish_posts": false, - "upload_files": false, - "view_stats": false - }, - "is_multi_author": true, - "feed_ID": 188407, - "feed_URL": "http://ma.tt/feed", - "header_image": false, - "owner": { - "ID": 5, - "login": "matt", - "name": "Matt", - "first_name": "Matt", - "last_name": "Mullenweg", - "nice_name": "matt", - "URL": "https://matt.blog/", - "avatar_URL": "https://0.gravatar.com/avatar/33252cd1f33526af53580fcb1736172f06e6716f32afdd1be19ec3096d15dea5?s=96&d=retro&r=G", - "profile_URL": "https://gravatar.com/matt", - "ip_address": false, - "site_visible": true, - "has_avatar": true - }, - "subscription": { - "delivery_methods": { - "email": null, - "notification": { - "send_posts": false - } - } - }, - "is_blocked": false, - "unseen_count": 0 - } + // MARK: - External RSS Feeds + + /// Tests decoding an external RSS feed (not a WordPress site) where blogID is "0" + /// and only feed metadata is available (no site data). + @Test func decodesExternalRSSFeed() throws { + // GIVEN: Search response for an external RSS feed (Daring Fireball) + let jsonData = try loadMockJSON(filename: "reader-search-response-03") + + // WHEN: Decoding the envelope + let decoder = JSONDecoder() + let envelope = try decoder.decode(ReaderFeedEnvelope.self, from: jsonData) + + // THEN: Envelope contains one feed with no total count + #expect(envelope.feeds.count == 1) + #expect(envelope.total == nil) + + let feed = try #require(envelope.feeds.first) + + // THEN: Feed ID is present but blog ID is "0" for external RSS feeds + #expect(feed.feedID == "20787116") + #expect(feed.blogID == nil) + + // THEN: Feed metadata falls back to meta.data.feed fields + #expect(feed.url?.absoluteString == "https://daringfireball.net/") + #expect(feed.title == "Daring Fireball") + #expect(feed.description == "By John Gruber") + + // THEN: No icon available for this external RSS feed + #expect(feed.iconURL == nil) + } + + // MARK: - Helpers + + private func loadMockJSON(filename: String) throws -> Data { + // Use the test bundle by referencing a class from the test target + let bundle = Bundle(for: RemoteTestCase.self) + guard let url = bundle.url(forResource: filename, withExtension: "json") else { + throw NSError(domain: "ReaderFeedTests", code: 1, userInfo: [NSLocalizedDescriptionKey: "Mock file not found: \(filename).json"]) } - } + return try Data(contentsOf: url) } - ] } -""" diff --git a/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderFeedCell.swift b/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderFeedCell.swift index 530f6f6c74d2..681236faaf53 100644 --- a/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderFeedCell.swift +++ b/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderFeedCell.swift @@ -30,7 +30,7 @@ struct ReaderFeedCell: View { } private func loadFaviconIfNeeded() async { - guard feed.blavatarURL == nil, let url = feed.url else { + guard feed.iconURL == nil, let url = feed.url else { return } @@ -49,7 +49,7 @@ struct ReaderFeedCell: View { } var subtitle: String? { - if let description = feed.feedDescription, !description.isEmpty { + if let description = feed.description, !description.isEmpty { return description.stringByDecodingXMLCharacters() } return feed.urlForDisplay @@ -59,7 +59,7 @@ struct ReaderFeedCell: View { extension SiteIconViewModel { init(feed: ReaderFeed, faviconURL: URL? = nil, size: Size = .regular) { self.init(size: size) - if let iconURL = feed.blavatarURL { + if let iconURL = feed.iconURL { self.imageURL = SiteIconViewModel.optimizedURL(for: iconURL.absoluteString, imageSize: size.size) } else if let faviconURL { self.imageURL = faviconURL diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 9e61fa0ab56d..67d435ad6b0f 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -1243,6 +1243,18 @@ }; /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ +/* Begin PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ + 0C798C582ED8DD2E0012F3E2 /* Exceptions for "WordPressKitTests" folder in "Compile Sources" phase from "WordPressKitTests" target */ = { + isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; + buildPhase = 4A8280F92E5FE9B60037E180 /* Sources */; + membershipExceptions = ( + "WordPressKitTests/Mock Data/Reader/reader-search-response-01.json", + "WordPressKitTests/Mock Data/Reader/reader-search-response-02.json", + "WordPressKitTests/Mock Data/Reader/reader-search-response-03.json", + ); + }; +/* End PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ + /* Begin PBXFileSystemSynchronizedRootGroup section */ 0C1CB0CD2D95C63C00494A8C /* Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; @@ -1362,6 +1374,9 @@ }; 4A8280FE2E5FE9B60037E180 /* WordPressKitTests */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + 0C798C582ED8DD2E0012F3E2 /* Exceptions for "WordPressKitTests" folder in "Compile Sources" phase from "WordPressKitTests" target */, + ); path = WordPressKitTests; sourceTree = ""; }; From a2dd64a56b659b825c66cdc6ed3a233acbcdfc00 Mon Sep 17 00:00:00 2001 From: Automattic Release Bot Date: Sun, 7 Dec 2025 13:07:58 -0800 Subject: [PATCH 2/5] =?UTF-8?q?Update=20app=20translations=20=E2=80=93=20`?= =?UTF-8?q?Localizable.strings`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WordPress/Resources/ar.lproj/Localizable.strings | 14 +++++++++++++- WordPress/Resources/es.lproj/Localizable.strings | 8 +++++++- WordPress/Resources/fr.lproj/Localizable.strings | 11 ++++++++++- WordPress/Resources/he.lproj/Localizable.strings | 8 +++++++- WordPress/Resources/id.lproj/Localizable.strings | 8 +++++++- WordPress/Resources/it.lproj/Localizable.strings | 8 +++++++- WordPress/Resources/ja.lproj/Localizable.strings | 8 +++++++- WordPress/Resources/ko.lproj/Localizable.strings | 8 +++++++- WordPress/Resources/nl.lproj/Localizable.strings | 8 +++++++- WordPress/Resources/ro.lproj/Localizable.strings | 8 +++++++- WordPress/Resources/ru.lproj/Localizable.strings | 11 ++++++++++- WordPress/Resources/sv.lproj/Localizable.strings | 8 +++++++- WordPress/Resources/tr.lproj/Localizable.strings | 11 ++++++++++- .../Resources/zh-Hans.lproj/Localizable.strings | 8 +++++++- 14 files changed, 113 insertions(+), 14 deletions(-) diff --git a/WordPress/Resources/ar.lproj/Localizable.strings b/WordPress/Resources/ar.lproj/Localizable.strings index be0e199ed8e5..043d93353f5d 100644 --- a/WordPress/Resources/ar.lproj/Localizable.strings +++ b/WordPress/Resources/ar.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-24 16:54:10+0000 */ +/* Translation-Revision-Date: 2025-12-03 15:54:10+0000 */ /* Plural-Forms: nplurals=6; plural=(n == 0) ? 0 : ((n == 1) ? 1 : ((n == 2) ? 2 : ((n % 100 >= 3 && n % 100 <= 10) ? 3 : ((n % 100 >= 11 && n % 100 <= 99) ? 4 : 5)))); */ /* Generator: GlotPress/4.0.3 */ /* Language: ar */ @@ -10539,6 +10539,9 @@ Example: Reply to Pamela Nguyen */ /* Title of alert when trying to save a deleted page */ "postSettings.pageDeleted.title" = "تم حذف الصفحة"; +/* Label for the parent page field */ +"postSettings.parentPage.label" = "الصفحة الأصلية"; + /* Cell title for the Top Level option case */ "postSettings.parentPage.topLevel" = "أعلى مستوى"; @@ -10557,6 +10560,9 @@ Example: Reply to Pamela Nguyen */ /* Accessibility label for show password button */ "postSettings.passwordEntry.showPassword" = "عرض كلمة المرور"; +/* Label for the pending review toggle in Post Settings */ +"postSettings.pendingReview.label" = "قيد المراجعة"; + /* Label for the permalink field in Post Settings */ "postSettings.permalink.label" = "رابط دائم"; @@ -11306,6 +11312,12 @@ Feel free to replace it with other bracket types that you think looks better for /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "مثال للوسوم"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "كبير جدًا جدًا جدًا"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "كبير جدًا جدًا"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "كبير جدًا"; diff --git a/WordPress/Resources/es.lproj/Localizable.strings b/WordPress/Resources/es.lproj/Localizable.strings index f59aee97dc9d..a6771ceb3403 100644 --- a/WordPress/Resources/es.lproj/Localizable.strings +++ b/WordPress/Resources/es.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-27 04:51:42+0000 */ +/* Translation-Revision-Date: 2025-12-01 16:54:08+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/4.0.3 */ /* Language: es */ @@ -11348,6 +11348,12 @@ Feel free to replace it with other bracket types that you think looks better for /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "Etiquetas de ejemplo"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "Triple extra grande"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "Doble extra grande"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "Muy grande"; diff --git a/WordPress/Resources/fr.lproj/Localizable.strings b/WordPress/Resources/fr.lproj/Localizable.strings index ee361eb3bcac..34aefa5c7f5f 100644 --- a/WordPress/Resources/fr.lproj/Localizable.strings +++ b/WordPress/Resources/fr.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-25 11:54:11+0000 */ +/* Translation-Revision-Date: 2025-12-01 16:54:08+0000 */ /* Plural-Forms: nplurals=2; plural=n > 1; */ /* Generator: GlotPress/4.0.3 */ /* Language: fr */ @@ -11204,6 +11204,12 @@ Feel free to replace it with other bracket types that you think looks better for /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "Exemple d’étiquettes"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "Très très très grand"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "Très très grand"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "Très grande"; @@ -11802,6 +11808,9 @@ Feel free to replace it with other bracket types that you think looks better for /* Title for confirmation navigation bar button item */ "siteMediaPicker.add" = "Ajouter"; +/* Button selection media in media picker */ +"siteMediaPicker.select" = "Sélectionnez"; + /* Media screen navigation title */ "siteMediaPicker.title" = "Médias"; diff --git a/WordPress/Resources/he.lproj/Localizable.strings b/WordPress/Resources/he.lproj/Localizable.strings index 1317e479a7b9..fb10621a674e 100644 --- a/WordPress/Resources/he.lproj/Localizable.strings +++ b/WordPress/Resources/he.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-25 14:54:11+0000 */ +/* Translation-Revision-Date: 2025-12-02 13:54:10+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/4.0.3 */ /* Language: he_IL */ @@ -11315,6 +11315,12 @@ Example: given a notice format "Following %@" and empty site name, this will be /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "תגיות לדוגמה"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "גדול במיוחד"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "גדול במיוחד"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "גדול מאוד"; diff --git a/WordPress/Resources/id.lproj/Localizable.strings b/WordPress/Resources/id.lproj/Localizable.strings index 6fbf894fbe5d..f51fa1de58cd 100644 --- a/WordPress/Resources/id.lproj/Localizable.strings +++ b/WordPress/Resources/id.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-25 10:54:12+0000 */ +/* Translation-Revision-Date: 2025-12-02 10:54:09+0000 */ /* Plural-Forms: nplurals=2; plural=n > 1; */ /* Generator: GlotPress/4.0.3 */ /* Language: id */ @@ -11291,6 +11291,12 @@ Feel free to replace it with other bracket types that you think looks better for /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "Contoh tag"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "Ekstra Ekstra Ekstra Besar"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "Ekstra Ekstra Besar"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "Ekstra Besar"; diff --git a/WordPress/Resources/it.lproj/Localizable.strings b/WordPress/Resources/it.lproj/Localizable.strings index bb84815de7ea..c1e44ee43f23 100644 --- a/WordPress/Resources/it.lproj/Localizable.strings +++ b/WordPress/Resources/it.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-26 10:54:09+0000 */ +/* Translation-Revision-Date: 2025-12-02 11:54:10+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/4.0.3 */ /* Language: it */ @@ -11291,6 +11291,12 @@ Feel free to replace it with other bracket types that you think looks better for /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "Tag di esempio"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "Molto molto molto grande"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "Molto molto grande"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "Molto grande"; diff --git a/WordPress/Resources/ja.lproj/Localizable.strings b/WordPress/Resources/ja.lproj/Localizable.strings index 45b6c12d16ac..9619034b7106 100644 --- a/WordPress/Resources/ja.lproj/Localizable.strings +++ b/WordPress/Resources/ja.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-25 10:54:12+0000 */ +/* Translation-Revision-Date: 2025-12-02 09:54:11+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/4.0.3 */ /* Language: ja_JP */ @@ -11282,6 +11282,12 @@ Example: given a notice format "Following %@" and empty site name, this will be /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "タグ例"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "XXXL"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "XXL"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "特大"; diff --git a/WordPress/Resources/ko.lproj/Localizable.strings b/WordPress/Resources/ko.lproj/Localizable.strings index 2d51b7d70ae0..00646a0670dc 100644 --- a/WordPress/Resources/ko.lproj/Localizable.strings +++ b/WordPress/Resources/ko.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-27 06:45:56+0000 */ +/* Translation-Revision-Date: 2025-12-02 01:17:31+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/4.0.3 */ /* Language: ko_KR */ @@ -11348,6 +11348,12 @@ Feel free to replace it with other bracket types that you think looks better for /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "예시 태그"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "Extra Extra Extra Large"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "Extra Extra Large"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "더 크게"; diff --git a/WordPress/Resources/nl.lproj/Localizable.strings b/WordPress/Resources/nl.lproj/Localizable.strings index ff9f182877ff..94c2bbd11dbf 100644 --- a/WordPress/Resources/nl.lproj/Localizable.strings +++ b/WordPress/Resources/nl.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-24 11:42:53+0000 */ +/* Translation-Revision-Date: 2025-12-02 14:54:08+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/4.0.3 */ /* Language: nl */ @@ -11348,6 +11348,12 @@ Feel free to replace it with other bracket types that you think looks better for /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "Voorbeeld tags"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "Extra extra extra groot"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "Extra extra groot"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "Extra groot"; diff --git a/WordPress/Resources/ro.lproj/Localizable.strings b/WordPress/Resources/ro.lproj/Localizable.strings index 6fc5602634f0..520cd49f9adc 100644 --- a/WordPress/Resources/ro.lproj/Localizable.strings +++ b/WordPress/Resources/ro.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-24 11:33:04+0000 */ +/* Translation-Revision-Date: 2025-12-07 10:52:11+0000 */ /* Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n == 0 || n % 100 >= 2 && n % 100 <= 19) ? 1 : 2); */ /* Generator: GlotPress/4.0.3 */ /* Language: ro */ @@ -11348,6 +11348,12 @@ Feel free to replace it with other bracket types that you think looks better for /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "Exemple de etichete"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "Foarte, foarte, foarte mare"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "Foarte, foarte mare"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "Foarte mare"; diff --git a/WordPress/Resources/ru.lproj/Localizable.strings b/WordPress/Resources/ru.lproj/Localizable.strings index 4a8b85666c24..323c490b33d0 100644 --- a/WordPress/Resources/ru.lproj/Localizable.strings +++ b/WordPress/Resources/ru.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-25 17:54:10+0000 */ +/* Translation-Revision-Date: 2025-12-05 16:16:28+0000 */ /* Plural-Forms: nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2); */ /* Generator: GlotPress/4.0.3 */ /* Language: ru */ @@ -7802,6 +7802,9 @@ Note that the word 'go' here should have a closer meaning to 'start' rather than /* Site Address title on the support form */ "com.jetpack.support.siteAddress" = "Адрес сайта"; +/* Placeholder for site address field */ +"com.jetpack.support.siteAddressPlaceholder" = "https:\/\/yoursite.com"; + /* Description encouraging user to start a new conversation */ "com.jetpack.support.startNewConversation" = "Начать новую беседу, нажав кнопку выше"; @@ -11345,6 +11348,12 @@ Feel free to replace it with other bracket types that you think looks better for /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "Примеры тегов"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "Очень-очень-очень крупный"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "Очень крупный"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "Очень крупный"; diff --git a/WordPress/Resources/sv.lproj/Localizable.strings b/WordPress/Resources/sv.lproj/Localizable.strings index fd20a9a5414e..c477ed2d2df1 100644 --- a/WordPress/Resources/sv.lproj/Localizable.strings +++ b/WordPress/Resources/sv.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-25 11:54:10+0000 */ +/* Translation-Revision-Date: 2025-12-01 16:54:08+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/4.0.3 */ /* Language: sv_SE */ @@ -11345,6 +11345,12 @@ Feel free to replace it with other bracket types that you think looks better for /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "Exempeletiketter"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "Extra extra extra stor"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "Extra extra stor"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "Extra stor"; diff --git a/WordPress/Resources/tr.lproj/Localizable.strings b/WordPress/Resources/tr.lproj/Localizable.strings index 49e2050b4f02..acdef86c64a5 100644 --- a/WordPress/Resources/tr.lproj/Localizable.strings +++ b/WordPress/Resources/tr.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-25 20:54:10+0000 */ +/* Translation-Revision-Date: 2025-12-02 20:20:58+0000 */ /* Plural-Forms: nplurals=2; plural=n > 1; */ /* Generator: GlotPress/4.0.3 */ /* Language: tr */ @@ -7802,6 +7802,9 @@ Note that the word 'go' here should have a closer meaning to 'start' rather than /* Site Address title on the support form */ "com.jetpack.support.siteAddress" = "Site Adresi"; +/* Placeholder for site address field */ +"com.jetpack.support.siteAddressPlaceholder" = "https:\/\/siteniz.com"; + /* Description encouraging user to start a new conversation */ "com.jetpack.support.startNewConversation" = "Yukarıdaki düğmeyi kullanarak yeni bir sohbet başlatın"; @@ -11342,6 +11345,12 @@ Feel free to replace it with other bracket types that you think looks better for /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "Örnek etiketler"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "Ekstra Ekstra Ekstra Büyük"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "Ekstra Ekstra Büyük"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "Ekstra Büyük"; diff --git a/WordPress/Resources/zh-Hans.lproj/Localizable.strings b/WordPress/Resources/zh-Hans.lproj/Localizable.strings index 99f3f0132be0..493a9c1c43c2 100644 --- a/WordPress/Resources/zh-Hans.lproj/Localizable.strings +++ b/WordPress/Resources/zh-Hans.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-25 09:54:12+0000 */ +/* Translation-Revision-Date: 2025-12-02 11:54:10+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/4.0.3 */ /* Language: zh_CN */ @@ -11333,6 +11333,12 @@ Feel free to replace it with other bracket types that you think looks better for /* Accessibility label for a list of tags in the preview section. */ "reader.preferences.preview.tagsList.a11y" = "示例标签"; +/* Accessibility label for the Extra Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraExtraLarge" = "超大号"; + +/* Accessibility label for the Extra Extra Large size option, used in the Reader's reading preferences. */ +"reader.preferences.size.extraExtraLarge" = "特大号"; + /* Accessibility label for the Extra Large size option, used in the Reader's reading preferences. */ "reader.preferences.size.extraLarge" = "特大"; From 0d75bd7c04a2f31e62541b6c213e063f2e93975a Mon Sep 17 00:00:00 2001 From: Automattic Release Bot Date: Sun, 7 Dec 2025 13:08:03 -0800 Subject: [PATCH 3/5] Update WordPress metadata translations --- fastlane/metadata/ar-SA/release_notes.txt | 15 +++++++++++++++ fastlane/metadata/de-DE/release_notes.txt | 15 +++++++++++++++ fastlane/metadata/es-ES/release_notes.txt | 15 +++++++++++++++ fastlane/metadata/fr-FR/release_notes.txt | 15 +++++++++++++++ fastlane/metadata/he/release_notes.txt | 15 +++++++++++++++ fastlane/metadata/id/release_notes.txt | 15 +++++++++++++++ fastlane/metadata/it/release_notes.txt | 15 +++++++++++++++ fastlane/metadata/ja/release_notes.txt | 15 +++++++++++++++ fastlane/metadata/ko/release_notes.txt | 15 +++++++++++++++ fastlane/metadata/ru/release_notes.txt | 15 +++++++++++++++ fastlane/metadata/tr/release_notes.txt | 15 +++++++++++++++ fastlane/metadata/zh-Hans/release_notes.txt | 15 +++++++++++++++ fastlane/metadata/zh-Hant/release_notes.txt | 15 +++++++++++++++ 13 files changed, 195 insertions(+) create mode 100644 fastlane/metadata/ar-SA/release_notes.txt create mode 100644 fastlane/metadata/de-DE/release_notes.txt create mode 100644 fastlane/metadata/es-ES/release_notes.txt create mode 100644 fastlane/metadata/fr-FR/release_notes.txt create mode 100644 fastlane/metadata/he/release_notes.txt create mode 100644 fastlane/metadata/id/release_notes.txt create mode 100644 fastlane/metadata/it/release_notes.txt create mode 100644 fastlane/metadata/ja/release_notes.txt create mode 100644 fastlane/metadata/ko/release_notes.txt create mode 100644 fastlane/metadata/ru/release_notes.txt create mode 100644 fastlane/metadata/tr/release_notes.txt create mode 100644 fastlane/metadata/zh-Hans/release_notes.txt create mode 100644 fastlane/metadata/zh-Hant/release_notes.txt diff --git a/fastlane/metadata/ar-SA/release_notes.txt b/fastlane/metadata/ar-SA/release_notes.txt new file mode 100644 index 000000000000..61254634b912 --- /dev/null +++ b/fastlane/metadata/ar-SA/release_notes.txt @@ -0,0 +1,15 @@ +تنبيه لصانعي المحتوى—لقد كنا نعمل جاهدين على إدخال تغييرات كبيرة في شاشة إعدادات التدوينات. + +- أضفنا حقل "الحالة" الذي يساعدك على نقل التدوينات بسرعة بين الحالات المسودة والمعلقة والخاصة والمجدولة والمنشورة. +- قمنا باستعادة منطقة "تاريخ النشر" للمسودات والتدوينات المعلقة. بهذه الطريقة يمكنك اختيار تاريخ النشر مسبقًا دون جدولة التدوينة رسميًا. +- يستخدم حقل كلمة المرور خطًا مختلفًا (Menlo، إذا كنت مهتمًا) بحيث يسهل قراءة الأحرف المتشابهة. +- امنح متابعيك معاملة رفيعة المستوى عن طريق تحديد مستويات الوصول إلى التدوينات لجميع المشتركين، والمشتركين الذين قاموا بالدفع، وعامة الجمهور. +- قم بتشغيل أو إيقاف تشغيل تعليقات التدوينات والتنبيهات في إعدادات "المناقشة". + +وبينما كنا نعمل على ذلك، أجرينا العديد من التحديثات المفيدة الأخرى في مجالات مختلفة من التطبيق. + +- على شاشة "النشر"، يمكنك تفعيل خيار "البريد الإلكتروني للمشتركين" لإخطار مشتركيك تلقائيًا عند نشر تدوينة. ابدأ المطابع. +- يحتوي محرر الاسم اللطيف على معاينة للرابط الدائم لإظهار شكل عنوان الموقع النهائي للتدوينة. +- أضفنا "الفئات" إلى إعدادات الموقع حتى تتمكن من إدارة مجموعات المحتوى الخاصة بك على مستوى الموقع. +- بفضل بعض إصلاحات التصميم في أداة اختيار "الفئات"، أصبح من الواضح أكثر أنه يمكنك اختيار تصنيفات متعددة للتدوينة. +- أصبحت أحجام الملفات مرئية الآن في منطقة تفاصيل وسائط الموقع. لا مزيد من التخمين. diff --git a/fastlane/metadata/de-DE/release_notes.txt b/fastlane/metadata/de-DE/release_notes.txt new file mode 100644 index 000000000000..49a2740b7154 --- /dev/null +++ b/fastlane/metadata/de-DE/release_notes.txt @@ -0,0 +1,15 @@ +Content Creator aufgepasst – wir haben einige wichtige Änderungen am Bildschirm „Beitragseinstellungen“ vorgenommen. + +- Wir haben ein „Status“-Feld hinzugefügt, mit dem du Beiträge schnell zwischen dem Status „Entwurf“, „Ausstehend“, „Privat“, „Geplant“ und „Veröffentlicht“ verschieben kannst. +- Wir haben den Bereich „Veröffentlichungsdatum“ für Entwürfe und ausstehende Beiträge wieder hinzugefügt. Auf diese Weise kannst du ein Veröffentlichungsdatum im Voraus auswählen, ohne den Beitrag offiziell zu planen. +- Das Passwort-Feld verwendet eine andere Schriftart (Menlo, falls es dich interessiert), sodass ähnlich aussehende Zeichen leichter zu lesen sind. +- Gewähre deinen Followern VIP-Behandlung, indem du für alle Abonnenten, zahlende Abonnenten und die allgemeine Öffentlichkeit Zugriffsebenen für Beiträge festlegst. +- Aktiviere oder deaktiviere in den Diskussionseinstellungen Beitragskommentare und Pingbacks. + +Außerdem haben wir weitere hilfreiche Updates in verschiedenen Bereichen der App vorgenommen. + +- Im Bildschirm zu Veröffentlichungen kannst du „E-Mail an Abonnenten“ umschalten, um deine Abonnenten automatisch zu benachrichtigen, wenn ein Beitrag veröffentlicht wird. Weitere wichtige Neuerungen. +- Der Titelform-Editor verfügt über eine Permalink-Vorschau, um anzuzeigen, wie die endgültige URL eines Beitrags aussieht. +- Wir haben „Taxonomien“ zu den Website-Einstellungen hinzugefügt, damit du deine Inhaltsgruppen auf Website-Ebene verwalten kannst. +- Dank einiger Design-Korrekturen in der Auswahl „Kategorien“ ist es jetzt einfacher zu erkennen, dass du mehrere Kategorien für einen Beitrag auswählen kannst. +- Dateigrößen werden jetzt im Bereich „Website-Mediendetails“ angezeigt. Kein Rätselraten mehr. diff --git a/fastlane/metadata/es-ES/release_notes.txt b/fastlane/metadata/es-ES/release_notes.txt new file mode 100644 index 000000000000..5357288dd2dc --- /dev/null +++ b/fastlane/metadata/es-ES/release_notes.txt @@ -0,0 +1,15 @@ +¡Atención, creadores de contenido! Hemos trabajado duro para implementar algunos cambios importantes en la pantalla Ajustes de entrada. + +- Hemos añadido el campo «Estado» que te ayuda a configurar rápidamente las entradas como «Borrador», «Pendiente», «Privada», «Programada» y «Publicada». +- Hemos recuperado la sección «Fecha de publicación» para las entradas en borrador y pendientes. De esta manera, puedes elegir una fecha de publicación con antelación sin programar oficialmente la entrada. +- El campo Contraseña utiliza una fuente diferente (Menlo, por si tenías curiosidad) para que sea más fácil leer caracteres que se parezcan. +- Dale a tus seguidores un tratamiento VIP definiendo niveles de acceso a las entradas para todos los suscriptores, los suscriptores de pago y el público en general. +- Activa o desactiva los comentarios y pingbacks de las entradas con los ajustes de «Debate». + +Mientras hacíamos todo esto, llevamos a cabo otras actualizaciones útiles en varias áreas de la aplicación. + +- En la pantalla «Publicar», puedes activar «Enviar correo electrónico a los suscriptores» para avisar automáticamente a tus suscriptores cuando se publique una entrada. ¡Paren las rotativas! +- El editor de slug dispone de una vista previa de los enlaces permanentes que muestra cómo se verá la URL final de una entrada. +- Hemos añadido «Taxonomías» a Ajustes del sitio para que puedas gestionar tus grupos de contenido a nivel de sitio. +- Gracias a algunas correcciones de diseño en el selector de «Categorías», es más obvio que puedes elegir varias categorías para una entrada. +- Los tamaños de archivo ahora se pueden ver en el área Detalles de medios del sitio. No tendrás que hacer conjeturas. diff --git a/fastlane/metadata/fr-FR/release_notes.txt b/fastlane/metadata/fr-FR/release_notes.txt new file mode 100644 index 000000000000..d6fb3cb88368 --- /dev/null +++ b/fastlane/metadata/fr-FR/release_notes.txt @@ -0,0 +1,15 @@ +Oyez, oyez, créateurs de contenu, nous avons travaillé dur pour apporter d’importantes modifications à l’écran Réglages de l’article. + +- Nous avons ajouté un champ « État » qui vous permet de déplacer rapidement les articles entre les états brouillon, en attente, privé, planifié et publié. +- Nous avons rétabli la zone « Date de publication » pour les brouillons et les articles en attente. De cette manière, vous pouvez choisir une date de publication à l’avance sans planifier officiellement la publication. +- Le champ du mot de passe utilise une police différente (Menlo, si cela vous intéresse) pour lire plus facilement des caractères similaires. +- Offrez à vos abonnés le traitement VIP en définissant des niveaux d’accès aux publications pour tous les abonnés, les abonnés payants et le grand public. +- Activez ou désactivez les commentaires et pings d’articles à l’aide des réglages « Discussion ». + +Pendant que nous y étions, nous avons fait plusieurs autres mises à jour utiles dans divers domaines de l’application. + +- Sur l’écran « Publication », vous pouvez activer « Envoyer un e-mail aux abonnés » pour avertir automatiquement vos abonnés lorsqu’un article est publié. Démarrez les presses. +- L’éditeur de slug dispose d’un aperçu de permalien pour afficher l’URL finale d’un article. +- Nous avons ajouté « Taxonomies » aux réglages du site afin que vous puissiez gérer vos groupes de contenu au niveau du site. +- Grâce à quelques correctifs de design dans le sélecteur de « Catégories », il est plus évident que vous pouvez choisir plusieurs catégories pour un article. +- Les tailles de fichiers sont désormais visibles dans la zone Détails du média du site. Fini les conjectures. diff --git a/fastlane/metadata/he/release_notes.txt b/fastlane/metadata/he/release_notes.txt new file mode 100644 index 000000000000..aebacaa38062 --- /dev/null +++ b/fastlane/metadata/he/release_notes.txt @@ -0,0 +1,15 @@ +יוצרי תוכן, שימו לב – אנחנו פועלים במרץ כדי לבצע שינויים נרחבים במסך 'הגדרות פוסט'. + +- הוספנו שדה 'סטטוס' שיעזור להעביר במהירות פוסטים בין מצב 'טיוטה', 'בהמתנה', 'פרטי', 'מתוזמן' ו'פורסם'. +- החזרנו את האזור 'תאריך פרסום' לטיוטה ולפוסטים בהמתנה. כך אפשר לבחור תאריך פרסום מראש, ללא תזמון רשמי של הפוסט. +- שדה הסיסמאות משתמש בגופן אחר (Menlo, אם זה מעניין אותך) כדי שיהיה קל יותר לקרוא תווים עם מראה דומה. +- אפשר לפנק את העוקבים עם טיפול VIP על ידי הגדרת רמות גישה לפוסט בשביל כל המנויים, מנויים משלמים או בשביל הציבור הרחב. +- ניתן להפעיל או להשבית את תגובות הפוסט והפינגבק באמצעות הגדרות 'דיון'. + +וניצלנו את ההזדמנות גם כדי להוסיף עוד כמה עדכונים מועילים באזורים שונים של האפליקציה. + +- במסך 'פרסום' ניתן לשנות את ההגדרה 'אימייל למנויים' כדי להודיע באופן אוטומטי למנויים כאשר הפוסט מתפרסם. קדימה, ההודעה לציבור (המנויים) מחכה. +- לעורך של מזהה הכתובת יש תצוגה מקדימה של הקישור הקבוע כדי להראות איך תיראה כתובת ה-URL הסופית של הפוסט. +- הוספנו 'טקסונומיות' להגדרות האתר כדי לאפשר לך לנהל קבוצות תוכן ברמת האתר. +- הודות למספר תיקונים בעיצוב הבוחר של 'קטגוריות', האפשרות לבחור מספר קטגוריות לפוסט מופיעה בצורה ברורה יותר. +- הקבצים מוצגים כעת באזור 'פרטים' ב'המדיה של האתר'. כבר לא צריך לנחש את המיקום. diff --git a/fastlane/metadata/id/release_notes.txt b/fastlane/metadata/id/release_notes.txt new file mode 100644 index 000000000000..9a05fb67d0e8 --- /dev/null +++ b/fastlane/metadata/id/release_notes.txt @@ -0,0 +1,15 @@ +Harap ketahui, para pembuat konten—kami telah bekerja keras untuk melakukan beberapa perubahan besar pada layar Pengaturan Pos. + +- Kami menambahkan kolom "Status" yang membantu Anda memindahkan pos dengan cepat antara status konsep, tertunda, privat, terjadwal, dan dipublikasikan. +- Kami mengembalikan area "Tanggal Publikasi" untuk konsep dan pos tertunda. Dengan cara tersebut, Anda dapat memilih tanggal publikasi sebelumnya tanpa menjadwalkan pos secara resmi. +- Kolom kata sandi menggunakan font berbeda (Menlo, jika Anda tertarik) sehingga lebih mudah untuk membaca karakter yang tampak mirip. +- Berikan perlakuan VIP kepada pengikut Anda dengan mengatur tingkat akses pos untuk semua pelanggan, pelanggan berbayar, dan masyarakat umum. +- Aktifkan atau nonaktifkan komentar dan pingback pos menggunakan pengaturan "Diskusi". + +Selama bekerja, kami telah membuat beberapa pembaruan penting lainnya di berbagai area aplikasi. + +- Pada layar "Penerbitan", Anda dapat mengaktifkan "Email ke Pelanggan" untuk memberi tahu pelanggan secara otomatis saat ada pos yang dipublikasikan. Mulai terbitkan. +- Editor slug memiliki pratinjau permalink untuk menunjukkan tampilan akhir URL sebuah pos. +- Kami menambahkan "Taksonomi" ke Pengaturan Situs agar Anda dapat mengelola grup konten Anda di tingkat situs. +- Berkat beberapa perbaikan desain di pemilih "Kategori", lebih jelas bahwa Anda dapat memilih beberapa kategori untuk sebuah pos. +- Ukuran berkas sekarang dapat dilihat di area Detail Media Situs. Tidak perlu lagi menebak. diff --git a/fastlane/metadata/it/release_notes.txt b/fastlane/metadata/it/release_notes.txt new file mode 100644 index 000000000000..635949f4644c --- /dev/null +++ b/fastlane/metadata/it/release_notes.txt @@ -0,0 +1,15 @@ +Attenzione, creatori di contenuti: abbiamo lavorato sodo per apportare alcune grandi modifiche alla schermata delle impostazioni dell'articolo. + +- Abbiamo aggiunto un campo "Stato" che ti aiuta a spostare rapidamente gli articoli tra gli stati bozza, in attesa, privato, programmato e pubblicato. +- Abbiamo ripristinato l'area "Data di pubblicazione" per le bozze e gli articoli in sospeso. In questo modo puoi scegliere una data di pubblicazione in anticipo senza programmare ufficialmente l'articolo. +- Il campo della password utilizza un font diverso (Menlo, se ti interessa), così è più facile leggere caratteri simili. +- Offri ai tuoi follower un trattamento da VIP impostando livelli di accesso agli articoli per tutti gli abbonati, gli abbonati a pagamento e il pubblico in generale. +- Attiva o disattiva i commenti agli articoli e i pingback usando le impostazioni "Discussione". + +Già che c'eravamo, abbiamo fatto diversi altri aggiornamenti utili in varie aree dell'app. + +- Nella schermata "Pubblicazione", puoi attivare o disattivare "Invia e-mail agli abbonati" per avvisare automaticamente i tuoi abbonati quando un articolo viene pubblicato. Comincia a scrivere. +- L'editor degli slug ha un'anteprima permalink per mostrare come sarà l'URL finale di un articolo. +- Abbiamo aggiunto "Tassonomie" alle impostazioni del sito in modo che tu possa gestire i gruppi di contenuti a livello di sito. +- Grazie ad alcune correzioni di design nel selettore "Categorie", ora è più intuitivo poter scegliere più categorie per un articolo. +- Le dimensioni dei file sono ora visibili nell'area dei dettagli degli elementi multimediali del sito. Niente più congetture. diff --git a/fastlane/metadata/ja/release_notes.txt b/fastlane/metadata/ja/release_notes.txt new file mode 100644 index 000000000000..a962c910bf00 --- /dev/null +++ b/fastlane/metadata/ja/release_notes.txt @@ -0,0 +1,15 @@ +コンテンツクリエイターの皆様にお知らせです。これまで、投稿設定の画面を大幅に変更する作業を進めてきました。 + +– 下書き、保留中、非公開、予約済み、公開済みの各ステータスの投稿をすばやく移動できる「ステータス」フィールドを追加しました。 +– 下書きおよび保留中の投稿の「公開日」エリアを復活させました。 そのため、投稿を正式に予約しなくても公開日を事前に選択できます。 +– パスワードフィールドに別のフォント (Menlo) を使用し、似ている文字を判読しやすくしました。 +– 投稿のアクセスレベルをすべての購読者、有料購読者、一般の人に設定し、フォロワーに VIP 待遇を提供できます。 +–「ディスカッション」設定を使用して、投稿コメントとピンバックのオンとオフを切り替えます。 + +その間、アプリのさまざまな領域で有益な更新をいくつか行いました。 + +–「公開」画面で「購読者へのメール」を切り替えて、投稿が公開されたら購読者に自動で通知できます。 公開を始めましょう。 +– スラッグエディターに、投稿の最終的な URL がどのようになるかを確認できるパーマリンクプレビューが導入されました。 +– サイト設定に「タクソノミー」を追加し、サイトレベルでコンテンツグループを管理できるようにしました。 +–「カテゴリー」ピッカーのデザインを一部修正し、1つの投稿に複数カテゴリーを選択できることが理解しやすくなりました。 +–「サイトメディアの詳細」エリアにファイルサイズが表示されるようになりました。 もう推測の必要はありません。 diff --git a/fastlane/metadata/ko/release_notes.txt b/fastlane/metadata/ko/release_notes.txt new file mode 100644 index 000000000000..0b757b300e15 --- /dev/null +++ b/fastlane/metadata/ko/release_notes.txt @@ -0,0 +1,15 @@ +콘텐츠 제작자 여러분, 주목해 주세요—게시물 설정 화면에 큰 변화를 주기 위해 열심히 작업해 왔습니다. + +- 게시물을 초안, 대기 중, 비공개, 예약, 게시 상태 사이에서 빠르게 전환할 수 있도록 '상태' 필드를 추가했습니다. +- 초안 및 대기 중인 게시물을 위한 '게시 날짜' 영역을 다시 도입했습니다. 이를 통해 게시물을 공식적으로 예약하지 않고도 미리 게시 날짜를 선택할 수 있습니다. +- 비밀번호 입력란에 다른 글꼴(Menlo, 궁금하시다면)을 적용해 유사한 모양의 문자를 더 쉽게 구분할 수 있게 했습니다. +- 모든 구독자, 유료 구독자, 일반 공개 대상으로 게시물 접근 권한을 설정해 팔로워에게 VIP 대우를 제공하세요. +- "토론" 설정에서 게시물 댓글과 핑백 기능을 켜거나 끌 수 있습니다. + +이번 업데이트에서는 앱의 여러 영역에 걸쳐 유용한 개선 사항을 추가했습니다. + +- "게시" 화면에서 "구독자에게 이메일 발송"을 켜면 게시물 게시 시 구독자에게 자동 알림이 전송됩니다. 이제 보도 자료를 배포하세요. +- 슬러그 편집기에 퍼머링크 미리보기 기능이 추가되어 게시물의 최종 URL을 확인할 수 있습니다. +- 사이트 설정에서 "분류 체계"를 추가하여 사이트 수준에서 콘텐츠 그룹을 관리할 수 있습니다. +- "카테고리" 선택기의 디자인 개선으로 게시물에 여러 카테고리를 선택할 수 있다는 점이 더 명확해졌습니다. +- 사이트 미디어 세부 정보 영역에서 파일 크기를 확인할 수 있습니다. 더 이상 추측할 필요가 없습니다. diff --git a/fastlane/metadata/ru/release_notes.txt b/fastlane/metadata/ru/release_notes.txt new file mode 100644 index 000000000000..ea912b56c4e2 --- /dev/null +++ b/fastlane/metadata/ru/release_notes.txt @@ -0,0 +1,15 @@ +Уважаемые авторы, внимание! Мы как следует потрудились над настройками записи и внесли значительные изменения. + +- Добавлено поле «Статус», которое помогает быстро переводить запись в статусы «Черновик», «На утверждении», «Закрытая», «Запланирована к публикации» и «Опубликована». +- Область «Дата публикации» в черновиках и записях на утверждении вернулась на своё место. Таким образом вы можете выбрать дату публикации заранее, не оформляя планирование записи. +- Пароль вводится особым шрифтом (Menlo, если хотите узнать название), чтобы было проще различать схожие символы. +- Создайте VIP-режим для подписчиков, установив уровни доступа к записям: для всех подписчиков, для платных подписчиков или для широкой аудитории. +- Включайте и выключайте комментарии к записям и уведомления в настройках «Обсуждение». + +А пока над этим шла работа, мы внесли ещё несколько полезных усовершенствований в различных областях приложения. + +- На экране «Публикация» можно включить опцию «Сообщать подписчикам», чтобы автоматически уведомлять подписчиков о публикации записи. Начинайте публиковаться! +- В редакторе слагов имеется постоянная ссылка для просмотра: можно увидеть, как будет выглядеть окончательный URL-адрес записи. +- Мы добавили «Таксономии» в настройки сайта, чтобы вы могли управлять группами контента на уровне сайта. +- Благодаря исправлениям в архитектуре средства выбора «Рубрики» стала нагляднее возможность выбирать несколько рубрик записи. +- Размеры файлов теперь отображаются в области сведений о медиафайлах сайта. Никаких догадок. diff --git a/fastlane/metadata/tr/release_notes.txt b/fastlane/metadata/tr/release_notes.txt new file mode 100644 index 000000000000..0151301519b7 --- /dev/null +++ b/fastlane/metadata/tr/release_notes.txt @@ -0,0 +1,15 @@ +İçerik üreticilerinin dikkatine; Gönderi Ayarları ekranında bazı büyük değişiklikler yapmak için sıkı bir şekilde çalıştık. + +- Gönderileri taslak, beklemede, özel, zamanlanmış ve yayımlanmış durumlar arasında hızla taşımanıza yardımcı olan bir "Durum" alanı ekledik. +- Taslak ve beklemede gönderiler için "Yayımlama Tarihi" alanını geri getirdik. Bu şekilde, gönderiyi resmen zamanlamadan önceden bir yayımlama tarihi seçebilirsiniz. +- Şifre alanında farklı bir yazı tipi (eğer ilgileniyorsanız Menlo) kullanıldığından, benzer görünümlü karakterleri okumak daha kolaydır. +- Tüm aboneler, ücretli aboneler ve genel kamuoyu için gönderi erişim düzeyleri belirleyerek takipçilerinize VIP muamelesi yapın. +- "Tartışma" ayarlarını kullanarak gönderi yorumlarını ve geri bildirimleri açın/kapatın + +Bu esnada uygulamanın çeşitli alanlarında birkaç faydalı güncelleme daha yaptık. + +- "Yayımlama" ekranında, bir gönderi yayımlandığında abonelerinizi otomatik olarak bilgilendirmek için "Abonelere e-posta gönder" seçeneğini açabilirsiniz. Baskıları başlatın. +- Kısaltma düzenleyicide, bir gönderinin son URL'sinin nasıl görüneceğini gösteren bir kalıcı bağlantı önizlemesi vardır. +- Site düzeyinde içerik gruplarınızı yönetebilmeniz için Site Ayarları'na "Sınıflandırmalar" eklendik. +- "Kategoriler" seçicisindeki bazı tasarım düzeltmeleri sayesinde, bir gönderi için birden fazla kategori seçebileceğiniz daha açıktır. +- Dosya boyutları artık Site Ortam Ayrıntıları alanında görünür. Artık tahmin yürütmek yok. diff --git a/fastlane/metadata/zh-Hans/release_notes.txt b/fastlane/metadata/zh-Hans/release_notes.txt new file mode 100644 index 000000000000..a3731cf3d1bc --- /dev/null +++ b/fastlane/metadata/zh-Hans/release_notes.txt @@ -0,0 +1,15 @@ +各位内容创作者请注意,我们一直在努力对“文章设置”屏幕进行重大调整。 + +- 我们添加了一个“状态”字段,可帮助您快速在草稿、待发布、私密、计划发布和已发布之间切换文章状态。 +- 我们为草稿和待发布文章恢复了“发布日期”区域。 这样,您就可以提前选定发布日期,而无需正式安排文章发布时间。 +- 密码字段采用另一种字体(如果您想知道的话,是 Menlo),这样能让您更易于辨认相似字符。 +- 通过设置文章访问级别,区分所有订阅者、付费订阅者和公众,为您的粉丝提供贵宾级待遇。 +- 使用“讨论”设置开启或关闭文章评论和 Pingback。 + +在本次更新过程中,我们还对应用程序的各个方面进行了其他多项实用更新。 + +- 在“发布”屏幕上,您可以开启“向订阅者发送电子邮件”功能,以便在文章发布时自动通知订阅者。 开始发布内容。 +- 别名编辑器提供固定链接预览功能,可显示文章最终 URL 的呈现效果。 +- 我们在“站点设置”中添加了“分类”,以便您在站点层面管理您的内容组。 +- 得益于我们对“分类”选择器进行的若干设计优化,您现在可以更直观地为一篇文章选择多个分类。 +- 文件大小现在可在“站点媒体详细信息”区域查看。 无需再猜测。 diff --git a/fastlane/metadata/zh-Hant/release_notes.txt b/fastlane/metadata/zh-Hant/release_notes.txt new file mode 100644 index 000000000000..a26eedde5bd9 --- /dev/null +++ b/fastlane/metadata/zh-Hant/release_notes.txt @@ -0,0 +1,15 @@ +內容創作者,請注意:我們持續努力對「文章設定」畫面進行重大變更。 + +- 我們新增了「狀態」欄位,協助你在草稿、待確認、私人、已排程和已發表狀態之間快速切換文章狀態。 +- 草稿和待確認文章的「發表日期」區域已恢復。 如此一來,你就能提前挑選發表日期,無須正式排程文章。 +- 密碼欄位採用不同字型 (如果你想知道,是用 Menlo),讓外觀相似的字元更容易閱讀。 +- 設定所有訂閱者、付費訂閱者和一般大眾的文章存取層級,讓追蹤者享有 VIP 待遇。 +- 使用「討論」設定,來回切換文章留言和引用通知開關。 + +我們在進行更新時,也針對多個應用程式區域進行其他有用更新。 + +- 可在「發表」畫面中切換「以電子郵件傳送給訂閱者」選項,當你發表文章時,系統將自動通知訂閱者。 準備大顯身手。 +- 代稱編輯器提供永久連結預覽,可顯示文章最終 URL 的外觀。 +- 「分類法」已加入「網站設定」,方便你在網站層級管理內容群組。 +- 「分類」選擇工具修正部分設計,讓你現在可以更明確地替文章選擇多個類別。 +- 「網站媒體詳細資料」區域現在會顯示檔案大小。 不用再猜了。 From 5e4e44c6c93ea5ecad97cb832ec53c67686f7baa Mon Sep 17 00:00:00 2001 From: Automattic Release Bot Date: Sun, 7 Dec 2025 13:08:07 -0800 Subject: [PATCH 4/5] Update Jetpack metadata translations --- .../jetpack_metadata/ar-SA/release_notes.txt | 22 +++++++++++++++++++ .../jetpack_metadata/de-DE/release_notes.txt | 22 +++++++++++++++++++ .../jetpack_metadata/es-ES/release_notes.txt | 22 +++++++++++++++++++ .../jetpack_metadata/fr-FR/release_notes.txt | 22 +++++++++++++++++++ .../jetpack_metadata/he/release_notes.txt | 22 +++++++++++++++++++ .../jetpack_metadata/id/release_notes.txt | 22 +++++++++++++++++++ .../jetpack_metadata/it/release_notes.txt | 22 +++++++++++++++++++ .../jetpack_metadata/ja/release_notes.txt | 22 +++++++++++++++++++ .../jetpack_metadata/ko/release_notes.txt | 22 +++++++++++++++++++ .../jetpack_metadata/nl-NL/release_notes.txt | 22 +++++++++++++++++++ .../jetpack_metadata/pt-BR/release_notes.txt | 22 +++++++++++++++++++ .../jetpack_metadata/ru/release_notes.txt | 22 +++++++++++++++++++ .../jetpack_metadata/sv/release_notes.txt | 22 +++++++++++++++++++ .../jetpack_metadata/tr/release_notes.txt | 22 +++++++++++++++++++ .../zh-Hans/release_notes.txt | 22 +++++++++++++++++++ .../zh-Hant/release_notes.txt | 22 +++++++++++++++++++ 16 files changed, 352 insertions(+) create mode 100644 fastlane/jetpack_metadata/ar-SA/release_notes.txt create mode 100644 fastlane/jetpack_metadata/de-DE/release_notes.txt create mode 100644 fastlane/jetpack_metadata/es-ES/release_notes.txt create mode 100644 fastlane/jetpack_metadata/fr-FR/release_notes.txt create mode 100644 fastlane/jetpack_metadata/he/release_notes.txt create mode 100644 fastlane/jetpack_metadata/id/release_notes.txt create mode 100644 fastlane/jetpack_metadata/it/release_notes.txt create mode 100644 fastlane/jetpack_metadata/ja/release_notes.txt create mode 100644 fastlane/jetpack_metadata/ko/release_notes.txt create mode 100644 fastlane/jetpack_metadata/nl-NL/release_notes.txt create mode 100644 fastlane/jetpack_metadata/pt-BR/release_notes.txt create mode 100644 fastlane/jetpack_metadata/ru/release_notes.txt create mode 100644 fastlane/jetpack_metadata/sv/release_notes.txt create mode 100644 fastlane/jetpack_metadata/tr/release_notes.txt create mode 100644 fastlane/jetpack_metadata/zh-Hans/release_notes.txt create mode 100644 fastlane/jetpack_metadata/zh-Hant/release_notes.txt diff --git a/fastlane/jetpack_metadata/ar-SA/release_notes.txt b/fastlane/jetpack_metadata/ar-SA/release_notes.txt new file mode 100644 index 000000000000..fc55201c474e --- /dev/null +++ b/fastlane/jetpack_metadata/ar-SA/release_notes.txt @@ -0,0 +1,22 @@ +تنبيه لصانعي المحتوى—لقد كنا نعمل جاهدين على إدخال تغييرات كبيرة في شاشة إعدادات التدوينات. + +- أضفنا حقل "الحالة" الذي يساعدك على نقل التدوينات بسرعة بين الحالات المسودة والمعلقة والخاصة والمجدولة والمنشورة. +- قمنا باستعادة منطقة "تاريخ النشر" للمسودات والتدوينات المعلقة. بهذه الطريقة يمكنك اختيار تاريخ النشر مسبقًا دون جدولة التدوينة رسميًا. +- يستخدم حقل كلمة المرور خطًا مختلفًا (Menlo، إذا كنت مهتمًا) بحيث يسهل قراءة الأحرف المتشابهة. +- امنح متابعيك معاملة رفيعة المستوى عن طريق تحديد مستويات الوصول إلى التدوينات لجميع المشتركين، والمشتركين الذين قاموا بالدفع، وعامة الجمهور. +- قم بتشغيل أو إيقاف تشغيل تعليقات التدوينات والتنبيهات في إعدادات "المناقشة". + +وبينما كنا نعمل على ذلك، أجرينا العديد من التحديثات المفيدة الأخرى في مجالات مختلفة من التطبيق. + +- على شاشة "النشر"، يمكنك تفعيل خيار "البريد الإلكتروني للمشتركين" لإخطار مشتركيك تلقائيًا عند نشر تدوينة. ابدأ المطابع. +- يحتوي محرر الاسم اللطيف على معاينة للرابط الدائم لإظهار شكل عنوان الموقع النهائي للتدوينة. +- أضفنا "الفئات" إلى إعدادات الموقع بحيث يمكنك إدارة مجموعات المحتوى على مستوى الموقع. +- بفضل بعض إصلاحات التصميم في أداة اختيار "الفئات"، أصبح من الواضح أكثر أنه يمكنك اختيار تصنيفات متعددة للتدوينة. +- أصبحت أحجام الملفات مرئية الآن في منطقة تفاصيل وسائط الموقع. لا مزيد من التخمين. + +هل أنت قارئ أكثر من ناشر؟ لا داعي للقلق، لقد أجرينا تغييرات في القارئ أيضًا. + +- عندما تكون عناوين التدوينات ذات الصلة طويلة جدًا، ستظهر نسخة مختصرة مقصوصة منها بدلًا من العنوان الكامل. +- يمكن الآن أن تحتوي مربعات التدوينات على ثلاثة أسطر من النص بدلًا من سطرين فقط، مما يمنحك محتوى أكثر بنسبة 50%. +- لدى المقالات هوامش أفقية أوسع قليلًا. +- لقد قمنا بإصلاح عدة أخطاء كانت تؤثر على طريقة تحميل المقالات. diff --git a/fastlane/jetpack_metadata/de-DE/release_notes.txt b/fastlane/jetpack_metadata/de-DE/release_notes.txt new file mode 100644 index 000000000000..755edae652b5 --- /dev/null +++ b/fastlane/jetpack_metadata/de-DE/release_notes.txt @@ -0,0 +1,22 @@ +Content Creator aufgepasst – wir haben einige wichtige Änderungen am Bildschirm „Beitragseinstellungen“ vorgenommen. + +- Wir haben ein „Status“-Feld hinzugefügt, mit dem du Beiträge schnell zwischen dem Status „Entwurf“, „Ausstehend“, „Privat“, „Geplant“ und „Veröffentlicht“ verschieben kannst. +- Wir haben den Bereich „Veröffentlichungsdatum“ für Entwürfe und ausstehende Beiträge wieder hinzugefügt. Auf diese Weise kannst du ein Veröffentlichungsdatum im Voraus auswählen, ohne den Beitrag offiziell zu planen. +- Das Passwort-Feld verwendet eine andere Schriftart (Menlo, falls es dich interessiert), sodass ähnlich aussehende Zeichen leichter zu lesen sind. +- Gewähre deinen Followern VIP-Behandlung, indem du für alle Abonnenten, zahlende Abonnenten und die allgemeine Öffentlichkeit Zugriffsebenen für Beiträge festlegst. +- Aktiviere oder deaktiviere in den Diskussionseinstellungen Beitragskommentare und Pingbacks. + +Außerdem haben wir weitere hilfreiche Updates in verschiedenen Bereichen der App vorgenommen. + +- Im Bildschirm zu Veröffentlichungen kannst du „E-Mail an Abonnenten“ umschalten, um deine Abonnenten automatisch zu benachrichtigen, wenn ein Beitrag veröffentlicht wird. Weitere wichtige Neuerungen. +- Der Titelform-Editor verfügt über eine Permalink-Vorschau, um anzuzeigen, wie die endgültige URL eines Beitrags aussieht. +- Wir haben „Taxonomien“ zu den Website-Einstellungen hinzugefügt, damit du Inhaltsgruppen auf Website-Ebene verwalten kannst. +- Dank einiger Design-Korrekturen in der Auswahl „Kategorien“ ist es jetzt einfacher zu erkennen, dass du mehrere Kategorien für einen Beitrag auswählen kannst. +- Dateigrößen werden jetzt im Bereich „Website-Mediendetails“ angezeigt. Kein Rätselraten mehr. + +Liest du lieber, als Beiträge zu veröffentlichen? Keine Sorge, wir haben auch im Reader Änderungen vorgenommen. + +- Wenn ähnliche Beitragstitel zu lang sind, wird stattdessen eine kürzere, abgeschnittene Version angezeigt. +- Beitrags-Kacheln können jetzt drei statt nur zwei Textzeilen enthalten. Das bedeutet 50 % mehr Inhalt. +- Die Artikel haben einen etwas größeren horizontalen Außenabstand. +- Wir haben mehrere Fehler bezüglich des Ladens von Artikeln behoben. diff --git a/fastlane/jetpack_metadata/es-ES/release_notes.txt b/fastlane/jetpack_metadata/es-ES/release_notes.txt new file mode 100644 index 000000000000..1988b2f6766a --- /dev/null +++ b/fastlane/jetpack_metadata/es-ES/release_notes.txt @@ -0,0 +1,22 @@ +¡Atención, creadores de contenido! Hemos trabajado duro para implementar algunos cambios importantes en la pantalla Ajustes de entrada. + +- Hemos añadido el campo «Estado» que te ayuda a configurar rápidamente las entradas como «Borrador», «Pendiente», «Privada», «Programada» y «Publicada». +- Hemos recuperado la sección «Fecha de publicación» para las entradas en borrador y pendientes. De esta manera, puedes elegir una fecha de publicación con antelación sin programar oficialmente la entrada. +- El campo Contraseña utiliza una fuente diferente (Menlo, por si tenías curiosidad) para que sea más fácil leer caracteres que se parezcan. +- Dale a tus seguidores un tratamiento VIP definiendo niveles de acceso a las entradas para todos los suscriptores, los suscriptores de pago y el público en general. +- Activa o desactiva los comentarios y pingbacks de las entradas con los ajustes de «Debate». + +Mientras hacíamos todo esto, llevamos a cabo otras actualizaciones útiles en varias áreas de la aplicación. + +- En la pantalla «Publicar», puedes activar «Enviar correo electrónico a los suscriptores» para avisar automáticamente a tus suscriptores cuando se publique una entrada. ¡Paren las rotativas! +- El editor de slug dispone de una vista previa de los enlaces permanentes que muestra cómo se verá la URL final de una entrada. +- Hemos añadido «Taxonomías» a Ajustes del sitio para que puedas gestionar los grupos de contenido a nivel de sitio. +- Gracias a algunas correcciones de diseño en el selector de «Categorías», es más obvio que puedes elegir varias categorías para una entrada. +- Los tamaños de archivo ahora se pueden ver en el área Detalles de medios del sitio. Ya no tendrás que hacer conjeturas. + +¿Prefieres leer a publicar? No te preocupes, también hemos realizado cambios en el Lector. + +- Cuando los títulos de las entradas relacionadas sean demasiado largos, verás una versión más corta y truncada en su lugar. +- Los títulos de las entradas ahora pueden tener tres líneas de texto en lugar de solo dos, lo que te da un 50 % más de contenido de calidad. +- Los artículos tienen márgenes horizontales ligeramente más anchos. +- Hemos solucionado varios errores que afectaban a la forma en la que se cargaban los artículos. diff --git a/fastlane/jetpack_metadata/fr-FR/release_notes.txt b/fastlane/jetpack_metadata/fr-FR/release_notes.txt new file mode 100644 index 000000000000..21045a512abc --- /dev/null +++ b/fastlane/jetpack_metadata/fr-FR/release_notes.txt @@ -0,0 +1,22 @@ +Oyez, oyez, créateurs de contenu, nous avons travaillé dur pour apporter d’importantes modifications à l’écran Réglages de l’article. + +- Nous avons ajouté un champ « État » qui vous permet de déplacer rapidement les articles entre les états brouillon, en attente, privé, planifié et publié. +- Nous avons rétabli la zone « Date de publication » pour les brouillons et les articles en attente. De cette manière, vous pouvez choisir une date de publication à l’avance sans planifier officiellement la publication. +- Le champ du mot de passe utilise une police différente (Menlo, si cela vous intéresse) pour lire plus facilement des caractères similaires. +- Offrez à vos abonnés le traitement VIP en définissant des niveaux d’accès aux publications pour tous les abonnés, les abonnés payants et le grand public. +- Activez ou désactivez les commentaires et pings d’articles à l’aide des réglages « Discussion ». + +Pendant que nous y étions, nous avons fait plusieurs autres mises à jour utiles dans divers domaines de l’application. + +- Sur l’écran « Publication », vous pouvez activer « Envoyer un e-mail aux abonnés » pour avertir automatiquement vos abonnés lorsqu’un article est publié. Démarrer les presses. +- L’éditeur de slug dispose d’un aperçu de permalien pour afficher l’URL finale d’un article. +- Nous avons ajouté « Taxonomies » aux réglages du site afin que vous puissiez gérer les groupes de contenu au niveau du site. +- Grâce à quelques correctifs de design dans le sélecteur de « Catégories », il est plus évident que vous pouvez choisir plusieurs catégories pour un article. +- Les tailles de fichiers sont désormais visibles dans la zone Détails du média du site. Fini les conjectures. + +Vous êtes plus lecteur qu’éditeur ? Ne vous inquiétez pas, nous avons également apporté des modifications au Lecteur. + +- Lorsque les titres des articles similaires sont trop longs, vous verrez une version plus courte et tronquée à la place. +- Les mosaïques d’articles peuvent désormais contenir trois lignes de texte au lieu de deux, ce qui vous permet d’améliorer votre contenu de 50 %. +- Les articles ont des marges horizontales légèrement plus larges. +- Nous avons éliminé plusieurs bugs qui affectaient la façon dont les articles se chargent. diff --git a/fastlane/jetpack_metadata/he/release_notes.txt b/fastlane/jetpack_metadata/he/release_notes.txt new file mode 100644 index 000000000000..3926303f31ee --- /dev/null +++ b/fastlane/jetpack_metadata/he/release_notes.txt @@ -0,0 +1,22 @@ +יוצרי תוכן, שימו לב – אנחנו פועלים במרץ כדי לבצע שינויים נרחבים במסך 'הגדרות פוסט'. + +- הוספנו שדה 'סטטוס' שיעזור להעביר במהירות פוסטים בין מצב 'טיוטה', 'בהמתנה', 'פרטי', 'מתוזמן' ו'פורסם'. +- החזרנו את האזור 'תאריך פרסום' לטיוטה ולפוסטים בהמתנה. כך אפשר לבחור תאריך פרסום מראש, ללא תזמון רשמי של הפוסט. +- שדה הסיסמאות משתמש בגופן אחר (Menlo, אם זה מעניין אותך) כדי שיהיה קל יותר לקרוא תווים עם מראה דומה. +- אפשר לפנק את העוקבים עם טיפול VIP על ידי הגדרת רמות גישה לפוסט בשביל כל המנויים, מנויים משלמים או בשביל הציבור הרחב. +- ניתן להפעיל או להשבית את תגובות הפוסט והפינגבק באמצעות הגדרות 'דיון'. + +וניצלנו את ההזדמנות גם כדי להוסיף עוד כמה עדכונים מועילים באזורים שונים של האפליקציה. + +- במסך 'פרסום' ניתן לשנות את ההגדרה 'אימייל למנויים' כדי להודיע באופן אוטומטי למנויים כאשר הפוסט מתפרסם. קדימה, ההודעה לציבור (המנויים) מחכה. +- לעורך של מזהה הכתובת יש תצוגה מקדימה של הקישור הקבוע כדי להראות איך תיראה כתובת ה-URL הסופית של הפוסט. +- הוספנו 'טקסונומיות' להגדרות האתר כדי לאפשר לך לנהל קבוצות תוכן ברמת האתר. +- הודות למספר תיקונים בעיצוב הבוחר של 'קטגוריות', האפשרות לבחור מספר קטגוריות לפוסט מופיעה בצורה ברורה יותר. +- הקבצים מוצגים כעת באזור 'פרטים' ב'המדיה של האתר'. כבר לא צריך לנחש את המיקום. + +מבלה יותר זמן בקריאה מאשר בפרסום תכנים? אל דאגה, ביצענו שינויים גם ב-Reader. + +- כאשר הכתורות של פוסטים קשורים ארוכות מדי, תופיע גרסה מקוצרת במקומן. +- אריחי פוסטים יכולים להכיל כעת שלוש שורות טקסט במקום שתיים בלבד, מה שיאפשר לך לראות 50% יותר תוכן. +- למאמרים יש שוליים אופקיים מעט רחבים יותר. +- מחצנו כמה באגים שהשפיעו על אופן הטעינה של מאמרים. diff --git a/fastlane/jetpack_metadata/id/release_notes.txt b/fastlane/jetpack_metadata/id/release_notes.txt new file mode 100644 index 000000000000..ad01e8ec5662 --- /dev/null +++ b/fastlane/jetpack_metadata/id/release_notes.txt @@ -0,0 +1,22 @@ +Harap ketahui, para pembuat konten—kami telah bekerja keras untuk melakukan beberapa perubahan besar pada layar Pengaturan Pos. + +- Kami menambahkan kolom "Status" yang membantu Anda memindahkan pos dengan cepat antara status konsep, tertunda, privat, terjadwal, dan dipublikasikan. +- Kami mengembalikan area "Tanggal Publikasi" untuk konsep dan pos tertunda. Dengan cara tersebut, Anda dapat memilih tanggal publikasi sebelumnya tanpa menjadwalkan pos secara resmi. +- Kolom kata sandi menggunakan font berbeda (Menlo, jika Anda tertarik) sehingga lebih mudah untuk membaca karakter yang tampak mirip. +- Berikan perlakuan VIP kepada pengikut Anda dengan mengatur tingkat akses pos untuk semua pelanggan, pelanggan berbayar, dan masyarakat umum. +- Aktifkan atau nonaktifkan komentar dan pingback pos menggunakan pengaturan "Diskusi". + +Selama bekerja, kami telah membuat beberapa pembaruan penting lainnya di berbagai area aplikasi. + +- Pada layar "Penerbitan", Anda dapat mengaktifkan "Email ke Pelanggan" untuk memberi tahu pelanggan secara otomatis saat ada pos yang dipublikasikan. Mulai terbitkan. +- Editor slug memiliki pratinjau permalink untuk menunjukkan tampilan akhir URL sebuah pos. +- Kami menambahkan "Taksonomi" ke Pengaturan Situs agar Anda dapat mengelola grup konten di tingkat situs. +- Berkat beberapa perbaikan desain di pemilih "Kategori", lebih jelas bahwa Anda dapat memilih beberapa kategori untuk sebuah pos. +- Ukuran berkas sekarang dapat dilihat di area Detail Media Situs. Tidak perlu lagi menebak. + +Lebih ke pembaca daripada penerbit? Jangan khawatir, kami juga membuat perubahan di Pembaca. + +- Jika judul pos terkait terlalu panjang, Anda akan melihat versi yang lebih pendek dan ringkas. +- Petak pos kini dapat terdiri dari tiga baris teks alih-alih dua baris, sehingga lebih dari 50% sisi bagus konten Anda ditampilkan. +- Artikel memiliki margin horizontal yang sedikit lebih lebar. +- Kami membasmi beberapa bug yang memengaruhi cara memuat artikel. diff --git a/fastlane/jetpack_metadata/it/release_notes.txt b/fastlane/jetpack_metadata/it/release_notes.txt new file mode 100644 index 000000000000..8bf48bba2587 --- /dev/null +++ b/fastlane/jetpack_metadata/it/release_notes.txt @@ -0,0 +1,22 @@ +Attenzione, creatori di contenuti: abbiamo lavorato sodo per apportare alcune grandi modifiche alla schermata delle impostazioni dell'articolo. + +- Abbiamo aggiunto un campo "Stato" che ti aiuta a spostare rapidamente gli articoli tra gli stati bozza, in attesa, privato, programmato e pubblicato. +- Abbiamo ripristinato l'area "Data di pubblicazione" per le bozze e gli articoli in sospeso. In questo modo puoi scegliere una data di pubblicazione in anticipo senza programmare ufficialmente l'articolo. +- Il campo della password utilizza un font diverso (Menlo, se ti interessa), così è più facile leggere caratteri simili. +- Offri ai tuoi follower un trattamento da VIP impostando livelli di accesso agli articoli per tutti gli abbonati, gli abbonati a pagamento e il pubblico in generale. +- Attiva o disattiva i commenti agli articoli e i pingback usando le impostazioni "Discussione". + +Già che c'eravamo, abbiamo fatto diversi altri aggiornamenti utili in varie aree dell'app. + +- Nella schermata "Pubblicazione", puoi attivare o disattivare "Invia e-mail agli abbonati" per avvisare automaticamente i tuoi abbonati quando un articolo viene pubblicato. Comincia a scrivere. +- L'editor degli slug ha un'anteprima permalink per mostrare come sarà l'URL finale di un articolo. +- Abbiamo aggiunto "Tassonomie" alle impostazioni del sito in modo che tu possa gestire i gruppi di contenuti a livello di sito. +- Grazie ad alcune correzioni di design nel selettore "Categorie", ora è più intuitivo poter scegliere più categorie per un articolo. +- Le dimensioni dei file sono ora visibili nell'area dei dettagli degli elementi multimediali del sito. Niente più congetture. + +Più un lettore che un editore? Non preoccuparti, abbiamo apportato modifiche anche al Reader. + +- Quando i titoli degli articoli correlati sono troppo lunghi, vedrai una versione più breve. +- I riquadri degli articoli ora possono avere tre righe di testo invece di sole due, offrendoti il 50% in più di qualità dei contenuti. +- Gli articoli hanno margini orizzontali leggermente più ampi. +- Abbiamo risolto diversi bug che influenzavano il modo in cui gli articoli si caricano. diff --git a/fastlane/jetpack_metadata/ja/release_notes.txt b/fastlane/jetpack_metadata/ja/release_notes.txt new file mode 100644 index 000000000000..2dfca02c1fcc --- /dev/null +++ b/fastlane/jetpack_metadata/ja/release_notes.txt @@ -0,0 +1,22 @@ +コンテンツクリエイターの皆様にお知らせです。これまで、投稿設定の画面を大幅に変更する作業を進めてきました。 + +– 下書き、保留中、非公開、予約済み、公開済みの各ステータスの投稿をすばやく移動できる「ステータス」フィールドを追加しました。 +– 下書きおよび保留中の投稿の「公開日」エリアを復活させました。 そのため、投稿を正式に予約しなくても公開日を事前に選択できます。 +– パスワードフィールドに別のフォント (Menlo) を使用し、似ている文字を判読しやすくしました。 +– 投稿のアクセスレベルをすべての購読者、有料購読者、一般の人に設定し、フォロワーに VIP 待遇を提供できます。 +–「ディスカッション」設定を使用して、投稿コメントとピンバックのオンとオフを切り替えます。 + +その間、アプリのさまざまな領域で有益な更新をいくつか行いました。 + +–「公開」画面で「購読者へのメール」を切り替えて、投稿が公開されたら購読者に自動で通知できます。 公開を始めましょう。 +– スラッグエディターに、投稿の最終的な URL がどのようになるかを確認できるパーマリンクプレビューが導入されました。 +– サイト設定に「タクソノミー」を追加し、サイトレベルでコンテンツグループを管理できるようにしました。 +–「カテゴリー」ピッカーのデザインを一部修正し、1つの投稿に複数カテゴリーを選択できることが理解しやすくなりました。 +–「サイトメディアの詳細」エリアにファイルサイズが表示されるようになりました。 もう推測の必要はありません。 + +投稿者よりも読者として利用されていますか ? ご安心ください。Reader にも変更を加えています。 + +– 関連記事のタイトルが長すぎる場合、切り捨てられた短いバージョンが表示されます。 +– 投稿タイトルに利用できるテキストの行が2行から3行になり、コンテンツの質が50% 向上しました。 +– 記事の横の余白部分が少し広くなりました。 +– 記事の読み込み方法に影響を与えていた複数のバグを解消しました。 diff --git a/fastlane/jetpack_metadata/ko/release_notes.txt b/fastlane/jetpack_metadata/ko/release_notes.txt new file mode 100644 index 000000000000..9f6003437616 --- /dev/null +++ b/fastlane/jetpack_metadata/ko/release_notes.txt @@ -0,0 +1,22 @@ +콘텐츠 제작자 여러분, 글 설정 화면을 대대적으로 수정했습니다. + +- 임시글, 대기 중, 비공개, 예약됨 및 발행됨 상태 사이에서 글을 빠르게 전환하는 데 도움이 되도록 "상태" 필드를 추가했습니다. +- 임시글 및 대기 중 상태인 글에 대해 "발행일" 영역을 되돌렸습니다. 이제 공식적으로 글을 예약하지 않고도 발행일을 미리 선택할 수 있습니다. +- 비밀번호 필드에는 다른 글꼴이 사용되므로(Menlo) 비슷한 모양의 글자를 더 쉽게 구분하고 읽을 수 있습니다. +- 모든 구독자, 유료 구독자 및 일반 대중을 대상으로 글 접근 수준을 설정하여 팔로워에게 VIP 대우를 제공할 수 있습니다. +- "토론" 설정을 사용하여 글 댓글과 핑백을 켜거나 끌 수 있습니다. + +앱의 다양한 영역에서 몇 가지 다른 유용한 업데이트를 추가했습니다. + +- "발행" 화면에서 "구독자에게 이메일 보내기"를 전환하면 글이 발행되고 구독자에게 자동으로 알림을 보낼 수 있습니다. 발행을 시작하세요. +- 슬러그 편집기에는 글의 최종 URL이 어떻게 표시되는지 보여주는 퍼머링크 미리보기가 있습니다. +- 사이트 수준에서 콘텐츠 그룹을 관리할 수 있도록 사이트 설정에 "분류"를 추가했습니다. +- "카테고리" 선택기에서 몇 가지 디자인을 수정하면서 글에 여러 개의 카테고리를 선택할 수 있습니다. +- 이제 파일 크기가 사이트 미디어 상세 정보 영역에 표시됩니다. 더 이상 추측을 할 필요가 없습니다. + +독자를 위한 업데이트는 없냐고요? 걱정하지 마세요. 독자 측면에서도 변경 사항이 있습니다. + +- 관련 글 제목이 너무 길면 대신 더 짧게 잘린 버전이 표시됩니다. +- 이제 글 타일에 텍스트가 두 줄이 아니라 세 줄로 구성되므로 50% 더 많은 콘텐츠가 제공됩니다. +- 글의 수평 여백이 약간 넓어집니다. +- 글을 로드하는 데 영향을 미치는 여러 가지 버그를 삭제했습니다. diff --git a/fastlane/jetpack_metadata/nl-NL/release_notes.txt b/fastlane/jetpack_metadata/nl-NL/release_notes.txt new file mode 100644 index 000000000000..89dd38d758db --- /dev/null +++ b/fastlane/jetpack_metadata/nl-NL/release_notes.txt @@ -0,0 +1,22 @@ +Let op, contentmakers: we hebben hard gewerkt om een aantal grote wijzigingen aan te brengen in het scherm Berichtinstellingen. + +- We hebben een veld 'Status' toegevoegd waarmee je berichten snel kunt verplaatsen tussen de volgende statussen: concept, in afwachting, privé, ingepland en gepubliceerd. +- We hebben het gedeelte 'Publicatiedatum' teruggezet voor conceptberichten en berichten in afwachting. Op die manier kun je van tevoren een publicatiedatum kiezen zonder het bericht officieel in te plannen. +- Het wachtwoordveld gebruikt een ander lettertype (Menlo, als je geïnteresseerd bent), zodat het gemakkelijker is om gelijkaardige karakters te lezen. +- Geef je volgers de VIP-behandeling door het instellen van toegang tot berichten voor alle abonnees, betaalde abonnees en het grote publiek. +- Schakel berichtreacties en pingbacks in of uit met behulp van de instellingen 'Discussie'. + +Terwijl we bezig waren, hebben we verschillende andere nuttige updates gemaakt op verschillende gebieden van de app. + +- Op het scherm 'Publiceren' kun je 'E-mail aan abonnees' inschakelen om je abonnees automatisch op de hoogte te stellen wanneer een bericht is gepubliceerd. Start de persen. +- De slugeditor heeft een permalinkvoorbeeld om te laten zien hoe de uiteindelijke URL van een bericht eruit zal zien. +- We hebben 'Taxonomieën' toegevoegd aan Site-instellingen, zodat je contentgroepen op site-niveau kunt beheren. +- Dankzij enkele ontwerpfixes in de 'Categorieën' kiezer, is het duidelijker dat je meerdere categorieën voor een bericht kunt kiezen. +- Bestandsgroottes zijn nu zichtbaar in het gebied Mediagegevens van de site. Geen giswerk meer. + +Meer een lezer dan een uitgever? Geen zorgen, we hebben ook wijzigingen aangebracht in de Reader. + +- Wanneer gerelateerde berichttitels te lang zijn, zie je in plaats daarvan een kortere, afgekorte versie. +- Berichttegels kunnen nu drie regels tekst bevatten in plaats van slechts twee, waardoor je 50% meer content hebt. +- Artikelen hebben iets bredere horizontale marges. +- We hebben verschillende bugs aangepakt die de manier waarop artikelen worden geladen hebben beïnvloed. diff --git a/fastlane/jetpack_metadata/pt-BR/release_notes.txt b/fastlane/jetpack_metadata/pt-BR/release_notes.txt new file mode 100644 index 000000000000..fcf8f7f77a6e --- /dev/null +++ b/fastlane/jetpack_metadata/pt-BR/release_notes.txt @@ -0,0 +1,22 @@ +Atenção, criadores de conteúdo: trabalhamos duro para fazer algumas grandes alterações na tela de configurações do post. + +- Adicionamos um campo "Status" que ajuda você a mover rapidamente os posts entre estados de rascunho, pendente, privado, agendado e publicado. +- Retornamos a área "Data de publicação" para rascunhos e posts pendentes. Dessa forma, você pode escolher uma data de publicação com antecedência sem agendar oficialmente o post. +- O campo de senha usa uma fonte diferente (Menlo, se você tiver interesse) para que seja mais fácil ler caracteres com aparência semelhante. +- Dê aos seus seguidores o tratamento VIP, definindo níveis de acesso aos posts para todos os assinantes, assinantes pagos e para o público em geral. +- Ative ou desative os comentários e pingbacks dos posts usando as configurações de "Discussão". + +Enquanto estávamos lá, fizemos várias outras atualizações úteis em várias áreas do aplicativo. + +- Na tela "Publicação", você pode alternar "E-mail para assinantes" para notificar seus assinantes automaticamente quando um post for publicado. Vamos começar. +- O editor de slug tem uma visualização de link permanente para mostrar como a URL final de um post será exibida. +- Adicionamos "Taxonomias" às Configurações do site para que você possa gerenciar grupos de conteúdo no nível do site. +- Graças a algumas correções de design no seletor "Categorias", ficou mais fácil escolher várias categorias para um post. +- Os tamanhos dos arquivos agora estão visíveis na área Detalhes da mídia do site. Chega de suposições. + +Está mais para leitor do que para editor? Não se preocupe, também fizemos alterações no Leitor. + +- Quando os títulos dos posts relacionados forem muito longos, você verá uma versão mais curta e resumida. +- Os blocos de post agora podem ter três linhas de texto em vez de apenas duas, oferecendo 50% mais conteúdo de qualidade. +- Os artigos têm margens horizontais ligeiramente mais amplas. +- Corrigimos vários bugs que afetavam o carregamento dos artigos. diff --git a/fastlane/jetpack_metadata/ru/release_notes.txt b/fastlane/jetpack_metadata/ru/release_notes.txt new file mode 100644 index 000000000000..2827b7aca49e --- /dev/null +++ b/fastlane/jetpack_metadata/ru/release_notes.txt @@ -0,0 +1,22 @@ +Уважаемые авторы, внимание! Мы как следует потрудились над настройками записи и внесли значительные изменения. + +- Добавлено поле «Статус», которое помогает быстро переводить запись в статусы «Черновик», «На утверждении», «Закрытая», «Запланирована к публикации» и «Опубликована». +- Область «Дата публикации» в черновиках и записях на утверждении вернулась на своё место. Таким образом вы можете выбрать дату публикации заранее, не оформляя планирование записи. +- Пароль вводится особым шрифтом (Menlo, если хотите узнать название), чтобы было проще различать схожие символы. +- Создайте VIP-режим для подписчиков, установив уровни доступа к записям: для всех подписчиков, для платных подписчиков или для широкой аудитории. +- Включайте и выключайте комментарии к записям и уведомления в настройках «Обсуждение». + +А пока над этим шла работа, мы внесли ещё несколько полезных усовершенствований в различных областях приложения. + +- На экране «Публикация» можно включить опцию «Сообщать подписчикам», чтобы автоматически уведомлять подписчиков о публикации записи. Начинайте публиковаться! +- В редакторе слагов имеется постоянная ссылка для просмотра: можно увидеть, как будет выглядеть окончательный URL-адрес записи. +- Мы добавили «Таксономии» в настройки сайта, чтобы вы могли управлять группами контента на уровне сайта. +- Благодаря исправлениям в архитектуре средства выбора «Рубрики» стала нагляднее возможность выбирать несколько рубрик записи. +- Размеры файлов теперь отображаются в области сведений о медиафайлах сайта. Никаких догадок. + +Вам больше нравится читать, а не писать? Не беспокойтесь, о «Чтиве» мы тоже позаботились. + +Если заголовки похожих записей слишком длинные, вы увидите более короткую, усечённую версию. +- Теперь плитки записей могут содержать три строки текста вместо двух, что позволит увидеть на 50 % больше контента. +- Горизонтальные поля статей стали чуть шире. +- Мы исправили несколько ошибок, которые мешали загрузке статей. diff --git a/fastlane/jetpack_metadata/sv/release_notes.txt b/fastlane/jetpack_metadata/sv/release_notes.txt new file mode 100644 index 000000000000..e3a466b82c48 --- /dev/null +++ b/fastlane/jetpack_metadata/sv/release_notes.txt @@ -0,0 +1,22 @@ +Lystring alla innehållsskapare! Vi har arbetat hårt med att göra några stora förändringar på skärmen för Inläggsinställningar. + +- Vi har lagt till ett Status-fält som hjälper dig att snabbt ändra status för inlägg mellan utkast, inväntar granskning, privat, tidsinställd och publicerat. +- Vi har återinfört området "Publiceringsdatum" för utkast och inlägg som inväntar granskning. På så sätt kan du välja ett publiceringsdatum på förhand utan att ha någon officiell tidsinställning för inlägget. +- Lösenordsfältet använder ett annat typsnitt (Menlo, om du är nyfiken) så att det blir lättare att läsa snarlika tecken. +- Ge dina följare VIP-behandling genom att ställa in åtkomstnivåer för inlägg för samtliga prenumeranter, betalande prenumeranter och allmänheten. +- Slå på/av inläggskommentarer och pingback med hjälp av inställningarna för "Diskussion". + +Medan vi ändå var igång gjorde vi flera andra användbara uppdateringar i olika delar av appen. + +- På skärmen "Publicering" kan du slå på/av ”E-post till prenumeranter” för att automatiskt meddela dina prenumeranter när ett inlägg publiceras. Starta tryckpressarna. +- Slug-redigeraren har en förhandsgranskning av permalänken som visar hur inläggets slutgiltiga URL kommer att se ut. +Vi har lagt till "Taxonomier" till webbplatsinställningarna så att du kan hantera innehållsgrupper på webbplatsnivå. +- Tack vare några designåtgärder i "Kategori"-väljaren är det nu tydligare att du kan välja flera kategorier för ett inlägg. +- Filstorlekarna visas nu i området Mediedetaljer för webbplatsen. Inget mer gissande. + +Är du mer av en läsare än en utgivare? Oroa dig inte, vi gjorde ändringar i Läsaren också. + +- När rubriker för relaterade inlägg är för långa ser du en förkortad version istället. +- Inläggsrutor kan nu ha tre rader med text istället för bara två, och det ger dig 50 % mer innehåll. +- Artiklarna har något bredare horisontella marginaler. +- Vi åtgärdade flera buggar som påverkade hur artiklar hämtas. diff --git a/fastlane/jetpack_metadata/tr/release_notes.txt b/fastlane/jetpack_metadata/tr/release_notes.txt new file mode 100644 index 000000000000..917212469533 --- /dev/null +++ b/fastlane/jetpack_metadata/tr/release_notes.txt @@ -0,0 +1,22 @@ +İçerik üreticilerinin dikkatine; Gönderi Ayarları ekranında bazı büyük değişiklikler yapmak için sıkı bir şekilde çalıştık. + +- Gönderileri taslak, beklemede, özel, zamanlanmış ve yayımlanmış durumlar arasında hızla taşımanıza yardımcı olan bir "Durum" alanı ekledik. +- Taslak ve beklemede gönderiler için "Yayımlama Tarihi" alanını geri getirdik. Bu şekilde, gönderiyi resmen zamanlamadan önceden bir yayımlama tarihi seçebilirsiniz. +- Şifre alanında farklı bir yazı tipi (eğer ilgileniyorsanız Menlo) kullanıldığından, benzer görünümlü karakterleri okumak daha kolaydır. +- Tüm aboneler, ücretli aboneler ve genel kamuoyu için gönderi erişim düzeyleri belirleyerek takipçilerinize VIP muamelesi yapın. +- "Tartışma" ayarlarını kullanarak gönderi yorumlarını ve geri bildirimleri açın/kapatın + +Bu esnada uygulamanın çeşitli alanlarında birkaç faydalı güncelleme daha yaptık. + +- "Yayımlama" ekranında, bir gönderi yayımlandığında abonelerinizi otomatik olarak bilgilendirmek için "Abonelere e-posta gönder" seçeneğini açabilirsiniz. Baskıları başlatın. +- Kısaltma düzenleyicide, bir gönderinin son URL'sinin nasıl görüneceğini gösteren bir kalıcı bağlantı önizlemesi vardır. +- Site düzeyinde içerik gruplarını yönetebilmeniz için Site Ayarları'na "Sınıflandırmalar" eklendik. +- "Kategoriler" seçicisindeki bazı tasarım düzeltmeleri sayesinde, bir gönderi için birden fazla kategori seçebileceğiniz daha açıktır. +- Dosya boyutları artık Site Ortam Ayrıntıları alanında görünür. Artık tahmin yürütmek yok. + +Yayımlayandan çok okuyucu musunuz? Endişelenmeyin, Okuyucuda da değişiklikler yaptık. + +- Benzer gönderi başlıkları çok uzun olduğunda, bunun yerine daha kısa bir sürüm görürsünüz. +- Gönderi başlıkları artık yalnızca iki yerine üç satırdan oluşabilir ve size %50 daha fazla içerik iyiliği sağlar. +- Makaleler biraz daha geniş yatay kenar boşluklarına sahiptir. +- Makalelerin yüklenme şeklini etkileyen birkaç sorunu giderdik. diff --git a/fastlane/jetpack_metadata/zh-Hans/release_notes.txt b/fastlane/jetpack_metadata/zh-Hans/release_notes.txt new file mode 100644 index 000000000000..397dda3fd6df --- /dev/null +++ b/fastlane/jetpack_metadata/zh-Hans/release_notes.txt @@ -0,0 +1,22 @@ +各位内容创作者请注意,我们一直在努力对“文章设置”屏幕进行重大调整。 + +- 我们添加了一个“状态”字段,可帮助您快速在草稿、待发布、私密、计划发布和已发布之间切换文章状态。 +- 我们为草稿和待发布文章恢复了“发布日期”区域。 这样,您就可以提前选定发布日期,而无需正式安排文章发布时间。 +- 密码字段采用另一种字体(如果您想知道的话,是 Menlo),这样能让您更易于辨认相似字符。 +- 通过设置文章访问级别,区分所有订阅者、付费订阅者和公众,为您的粉丝提供贵宾级待遇。 +- 使用“讨论”设置开启或关闭文章评论和 Pingback。 + +在本次更新过程中,我们还对应用程序的各个方面进行了其他多项实用更新。 + +- 在“发布”屏幕上,您可以开启“向订阅者发送电子邮件”功能,以便在文章发布时自动通知订阅者。 开始发布内容。 +- 别名编辑器提供固定链接预览功能,可显示文章最终 URL 的呈现效果。 +- 我们在“站点设置”中添加了“分类”,以便您在站点层面管理内容组。 +- 得益于我们对“分类”选择器进行的若干设计优化,您现在可以更直观地为一篇文章选择多个分类。 +- 文件大小现在可在“站点媒体详细信息”区域查看。 无需再猜测。 + +更倾向于阅读而非发布内容? 别担心,我们在阅读器中也进行了更改。 + +- 当相关文章标题过长时,您将看到缩短的截断版本。 +- 文章标题现在支持显示三行文本,而不仅仅是两行,这可让内容展示量增加 50%。 +- 文章的水平边距略有增加。 +- 我们修复了若干影响文章加载方式的错误。 diff --git a/fastlane/jetpack_metadata/zh-Hant/release_notes.txt b/fastlane/jetpack_metadata/zh-Hant/release_notes.txt new file mode 100644 index 000000000000..ce1a6b0d54e9 --- /dev/null +++ b/fastlane/jetpack_metadata/zh-Hant/release_notes.txt @@ -0,0 +1,22 @@ +內容創作者,請注意:我們持續努力對「文章設定」畫面進行重大變更。 + +- 我們新增了「狀態」欄位,協助你在草稿、待確認、私人、已排程和已發表狀態之間快速切換文章狀態。 +- 草稿和待確認文章的「發表日期」區域已恢復。 如此一來,你就能提前挑選發表日期,無須正式排程文章。 +- 密碼欄位採用不同字型 (如果你想知道,是用 Menlo),讓外觀相似的字元更容易閱讀。 +- 設定所有訂閱者、付費訂閱者和一般大眾的文章存取層級,讓追蹤者享有 VIP 待遇。 +- 使用「討論」設定,來回切換文章留言和引用通知開關。 + +我們在進行更新時,也針對多個應用程式區域進行其他有用更新。 + +- 可在「發表」畫面中切換「以電子郵件傳送給訂閱者」選項,當你發表文章時,系統將自動通知訂閱者。 準備大顯身手。 +- 代稱編輯器提供永久連結預覽,可顯示文章最終 URL 的外觀。 +- 「分類法」已加入「網站設定」,方便你在網站層級管理內容群組。 +- 「分類」選擇工具修正部分設計,讓你現在可以更明確地替文章選擇多個類別。 +- 「網站媒體詳細資料」區域現在會顯示檔案大小。 不用再猜了。 + +閱讀功能用得比發表功能頻繁? 別擔心,我們也針對閱讀器進行了變更。 + +- 當相關文章標題過長時,你會看到縮短的截斷版本。 +- 「文章」磚現在可以包含三行文字,而非兩行,多增加原先 50% 的內容。 +- 文章的水平邊界稍微加寬。 +- 我們修正了幾個影響文章載入方式的錯誤。 From 357e37f46f60112428ec5d79c3bff33be51b61f1 Mon Sep 17 00:00:00 2001 From: Automattic Release Bot Date: Sun, 7 Dec 2025 13:08:25 -0800 Subject: [PATCH 5/5] Bump version number --- config/Version.public.xcconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/Version.public.xcconfig b/config/Version.public.xcconfig index 0bd9bc670f43..47f99e81d874 100644 --- a/config/Version.public.xcconfig +++ b/config/Version.public.xcconfig @@ -1,2 +1,2 @@ -VERSION_LONG = 26.5.0.2 +VERSION_LONG = 26.5.0.3 VERSION_SHORT = 26.5