diff --git a/GdeiAssistant-iOS/Core/DesignSystem/DSButton.swift b/GdeiAssistant-iOS/Core/DesignSystem/DSButton.swift index fb9e3ae..6c44a59 100644 --- a/GdeiAssistant-iOS/Core/DesignSystem/DSButton.swift +++ b/GdeiAssistant-iOS/Core/DesignSystem/DSButton.swift @@ -30,9 +30,13 @@ struct DSButton: View { Text(title) .font(.headline) + .lineLimit(2) + .multilineTextAlignment(.center) } + .padding(.horizontal, 16) + .padding(.vertical, 14) .frame(maxWidth: .infinity) - .frame(height: 50) + .frame(minHeight: 50) .foregroundStyle(foregroundColor) .background(backgroundColor) .clipShape(RoundedRectangle(cornerRadius: 14, style: .continuous)) diff --git a/GdeiAssistant-iOS/Core/DesignSystem/DSInputField.swift b/GdeiAssistant-iOS/Core/DesignSystem/DSInputField.swift index 94bc599..74447b8 100644 --- a/GdeiAssistant-iOS/Core/DesignSystem/DSInputField.swift +++ b/GdeiAssistant-iOS/Core/DesignSystem/DSInputField.swift @@ -71,7 +71,8 @@ struct DSInputField: View { } } .padding(.horizontal, 14) - .frame(height: 48) + .padding(.vertical, 12) + .frame(minHeight: 48) .background(Color(.tertiarySystemGroupedBackground)) .clipShape(RoundedRectangle(cornerRadius: 12, style: .continuous)) } diff --git a/GdeiAssistant-iOS/Core/DesignSystem/DSRemoteImageView.swift b/GdeiAssistant-iOS/Core/DesignSystem/DSRemoteImageView.swift index 6d037b0..5732f3e 100644 --- a/GdeiAssistant-iOS/Core/DesignSystem/DSRemoteImageView.swift +++ b/GdeiAssistant-iOS/Core/DesignSystem/DSRemoteImageView.swift @@ -4,6 +4,7 @@ struct DSRemoteImageView: View { let urlString: String? var cornerRadius: CGFloat = 16 var fallbackSystemImage: String = "photo" + var accessibilityLabel: String? = nil var body: some View { Group { @@ -13,7 +14,7 @@ struct DSRemoteImageView: View { case .success(let image): image .resizable() - .scaledToFill() + .scaledToFit() case .empty: placeholderView case .failure: @@ -28,6 +29,7 @@ struct DSRemoteImageView: View { } .background(DSColor.cardBackground) .clipShape(RoundedRectangle(cornerRadius: cornerRadius, style: .continuous)) + .accessibilityLabel(accessibilityLabel ?? localizedString("common.image")) } private var placeholderView: some View { diff --git a/GdeiAssistant-iOS/Core/DesignSystem/SecureFormField.swift b/GdeiAssistant-iOS/Core/DesignSystem/SecureFormField.swift index 4db6bdb..304ec19 100644 --- a/GdeiAssistant-iOS/Core/DesignSystem/SecureFormField.swift +++ b/GdeiAssistant-iOS/Core/DesignSystem/SecureFormField.swift @@ -41,9 +41,11 @@ struct SecureFormField: View { .foregroundStyle(DSColor.subtitle) } .buttonStyle(.plain) + .accessibilityLabel(localizedString(isSecureEntry ? "common.showPassword" : "common.hidePassword")) } .padding(.horizontal, 14) - .frame(height: 48) + .padding(.vertical, 12) + .frame(minHeight: 48) .background(Color(.tertiarySystemGroupedBackground)) .clipShape(RoundedRectangle(cornerRadius: 12, style: .continuous)) } diff --git a/GdeiAssistant-iOS/Features/Dating/Views/DatingView.swift b/GdeiAssistant-iOS/Features/Dating/Views/DatingView.swift index 08b0b54..c8c8099 100644 --- a/GdeiAssistant-iOS/Features/Dating/Views/DatingView.swift +++ b/GdeiAssistant-iOS/Features/Dating/Views/DatingView.swift @@ -76,17 +76,22 @@ struct DatingView: View { } .navigationTitle(localizedString("dating.title")) .toolbar { - ToolbarItemGroup(placement: .topBarTrailing) { - NavigationLink(localizedString("dating.interactionCenter")) { - DatingCenterView(viewModel: container.makeDatingCenterViewModel()) - } + ToolbarItem(placement: .topBarTrailing) { + Menu { + NavigationLink(localizedString("dating.interactionCenter")) { + DatingCenterView(viewModel: container.makeDatingCenterViewModel()) + } - NavigationLink(localizedString("dating.publish")) { - PublishDatingView( - listViewModel: viewModel, - viewModel: container.makePublishDatingViewModel() - ) + NavigationLink(localizedString("dating.publish")) { + PublishDatingView( + listViewModel: viewModel, + viewModel: container.makePublishDatingViewModel() + ) + } + } label: { + Image(systemName: "ellipsis.circle") } + .accessibilityLabel(localizedString("common.more")) } } .task { @@ -597,7 +602,7 @@ private struct PublishDatingView: View { if let uiImage = UIImage(data: image.data) { Image(uiImage: uiImage) .resizable() - .scaledToFill() + .scaledToFit() } else { Rectangle() .fill(Color(.tertiarySystemGroupedBackground)) @@ -608,6 +613,7 @@ private struct PublishDatingView: View { } } .frame(width: 120, height: 120) + .background(Color(.tertiarySystemGroupedBackground)) .clipShape(RoundedRectangle(cornerRadius: 16, style: .continuous)) } diff --git a/GdeiAssistant-iOS/Features/Delivery/Views/DeliveryView.swift b/GdeiAssistant-iOS/Features/Delivery/Views/DeliveryView.swift index f1a3177..a264691 100644 --- a/GdeiAssistant-iOS/Features/Delivery/Views/DeliveryView.swift +++ b/GdeiAssistant-iOS/Features/Delivery/Views/DeliveryView.swift @@ -53,13 +53,18 @@ struct DeliveryView: View { } .navigationTitle(localizedString("delivery.title")) .toolbar { - ToolbarItemGroup(placement: .topBarTrailing) { - NavigationLink(localizedString("delivery.mine")) { - MyDeliveryView(viewModel: viewModel) - } - NavigationLink(localizedString("delivery.publish")) { - PublishDeliveryView(viewModel: container.makePublishDeliveryViewModel(), listViewModel: viewModel) + ToolbarItem(placement: .topBarTrailing) { + Menu { + NavigationLink(localizedString("delivery.mine")) { + MyDeliveryView(viewModel: viewModel) + } + NavigationLink(localizedString("delivery.publish")) { + PublishDeliveryView(viewModel: container.makePublishDeliveryViewModel(), listViewModel: viewModel) + } + } label: { + Image(systemName: "ellipsis.circle") } + .accessibilityLabel(localizedString("common.more")) } } .task { diff --git a/GdeiAssistant-iOS/Features/Express/Views/ExpressView.swift b/GdeiAssistant-iOS/Features/Express/Views/ExpressView.swift index dadb11d..a80220c 100644 --- a/GdeiAssistant-iOS/Features/Express/Views/ExpressView.swift +++ b/GdeiAssistant-iOS/Features/Express/Views/ExpressView.swift @@ -35,14 +35,19 @@ struct ExpressView: View { } .navigationTitle(LocalizedStringKey("express.title")) .toolbar { - ToolbarItemGroup(placement: .topBarTrailing) { - NavigationLink(LocalizedStringKey("express.mine")) { - MyExpressPostsView(viewModel: viewModel) - } + ToolbarItem(placement: .topBarTrailing) { + Menu { + NavigationLink(LocalizedStringKey("express.mine")) { + MyExpressPostsView(viewModel: viewModel) + } - NavigationLink(LocalizedStringKey("express.publish")) { - PublishExpressView(viewModel: container.makePublishExpressViewModel(), listViewModel: viewModel) + NavigationLink(LocalizedStringKey("express.publish")) { + PublishExpressView(viewModel: container.makePublishExpressViewModel(), listViewModel: viewModel) + } + } label: { + Image(systemName: "ellipsis.circle") } + .accessibilityLabel(localizedString("common.more")) } } .task { diff --git a/GdeiAssistant-iOS/Features/LostFound/Views/LostFoundView.swift b/GdeiAssistant-iOS/Features/LostFound/Views/LostFoundView.swift index 201550d..03a7621 100644 --- a/GdeiAssistant-iOS/Features/LostFound/Views/LostFoundView.swift +++ b/GdeiAssistant-iOS/Features/LostFound/Views/LostFoundView.swift @@ -67,17 +67,22 @@ struct LostFoundView: View { } .navigationTitle(localizedString("lostFound.title")) .toolbar { - ToolbarItemGroup(placement: .topBarTrailing) { - NavigationLink(localizedString("lostFound.mine")) { - LostFoundProfileView(viewModel: viewModel) - } + ToolbarItem(placement: .topBarTrailing) { + Menu { + NavigationLink(localizedString("lostFound.mine")) { + LostFoundProfileView(viewModel: viewModel) + } - NavigationLink(localizedString("lostFound.publish")) { - PublishLostFoundView( - listViewModel: viewModel, - publishViewModel: container.makePublishLostFoundViewModel() - ) + NavigationLink(localizedString("lostFound.publish")) { + PublishLostFoundView( + listViewModel: viewModel, + publishViewModel: container.makePublishLostFoundViewModel() + ) + } + } label: { + Image(systemName: "ellipsis.circle") } + .accessibilityLabel(localizedString("common.more")) } } .task { @@ -692,7 +697,7 @@ struct PublishLostFoundView: View { if let uiImage = UIImage(data: image.data) { Image(uiImage: uiImage) .resizable() - .scaledToFill() + .scaledToFit() } else { Rectangle() .fill(Color(.tertiarySystemGroupedBackground)) @@ -703,6 +708,7 @@ struct PublishLostFoundView: View { } } .frame(width: 92, height: 92) + .background(Color(.tertiarySystemGroupedBackground)) .clipShape(RoundedRectangle(cornerRadius: 14, style: .continuous)) } } diff --git a/GdeiAssistant-iOS/Features/Marketplace/Views/MarketplaceView.swift b/GdeiAssistant-iOS/Features/Marketplace/Views/MarketplaceView.swift index 95f5a64..c23a6cb 100644 --- a/GdeiAssistant-iOS/Features/Marketplace/Views/MarketplaceView.swift +++ b/GdeiAssistant-iOS/Features/Marketplace/Views/MarketplaceView.swift @@ -99,16 +99,22 @@ struct MarketplaceView: View { .navigationTitle(AppDestination.marketplace.title) .toolbar { ToolbarItemGroup(placement: .topBarTrailing) { - NavigationLink(localizedString("marketplace.mine")) { + NavigationLink { MarketplaceProfileView(viewModel: viewModel) + } label: { + Image(systemName: "person.crop.circle") } + .accessibilityLabel(localizedString("marketplace.mine")) - NavigationLink(localizedString("marketplace.publish")) { + NavigationLink { PublishMarketplaceView( listViewModel: viewModel, publishViewModel: container.makePublishMarketplaceViewModel() ) + } label: { + Image(systemName: "square.and.pencil") } + .accessibilityLabel(localizedString("marketplace.publish")) .accessibilityIdentifier("marketplace.publishEntry") } } @@ -937,7 +943,7 @@ struct PublishMarketplaceView: View { if let uiImage = UIImage(data: image.data) { Image(uiImage: uiImage) .resizable() - .scaledToFill() + .scaledToFit() } else { Rectangle() .fill(Color(.tertiarySystemGroupedBackground)) @@ -948,6 +954,7 @@ struct PublishMarketplaceView: View { } } .frame(width: 92, height: 92) + .background(Color(.tertiarySystemGroupedBackground)) .clipShape(RoundedRectangle(cornerRadius: 14, style: .continuous)) } } diff --git a/GdeiAssistant-iOS/Features/Photograph/Views/PhotographView.swift b/GdeiAssistant-iOS/Features/Photograph/Views/PhotographView.swift index 332d7a7..91d0862 100644 --- a/GdeiAssistant-iOS/Features/Photograph/Views/PhotographView.swift +++ b/GdeiAssistant-iOS/Features/Photograph/Views/PhotographView.swift @@ -61,13 +61,18 @@ struct PhotographView: View { } .navigationTitle(localizedString("photograph.title")) .toolbar { - ToolbarItemGroup(placement: .topBarTrailing) { - NavigationLink(localizedString("photograph.mine")) { - MyPhotographPostsView(viewModel: viewModel) - } - NavigationLink(localizedString("photograph.publish")) { - PublishPhotographView(viewModel: container.makePublishPhotographViewModel(), listViewModel: viewModel) + ToolbarItem(placement: .topBarTrailing) { + Menu { + NavigationLink(localizedString("photograph.mine")) { + MyPhotographPostsView(viewModel: viewModel) + } + NavigationLink(localizedString("photograph.publish")) { + PublishPhotographView(viewModel: container.makePublishPhotographViewModel(), listViewModel: viewModel) + } + } label: { + Image(systemName: "ellipsis.circle") } + .accessibilityLabel(localizedString("common.more")) } } .task { @@ -577,7 +582,7 @@ private struct PublishPhotographView: View { if let uiImage = UIImage(data: image.data) { Image(uiImage: uiImage) .resizable() - .scaledToFill() + .scaledToFit() } else { Rectangle() .fill(Color(.tertiarySystemGroupedBackground)) @@ -585,6 +590,7 @@ private struct PublishPhotographView: View { } } .frame(width: 92, height: 92) + .background(Color(.tertiarySystemGroupedBackground)) .clipShape(RoundedRectangle(cornerRadius: 14, style: .continuous)) } } diff --git a/GdeiAssistant-iOS/Features/Profile/Views/AvatarEditView.swift b/GdeiAssistant-iOS/Features/Profile/Views/AvatarEditView.swift index 7b85639..e4ad6e1 100644 --- a/GdeiAssistant-iOS/Features/Profile/Views/AvatarEditView.swift +++ b/GdeiAssistant-iOS/Features/Profile/Views/AvatarEditView.swift @@ -26,8 +26,10 @@ struct AvatarEditView: View { PhotosPicker(selection: $selectedPhotoItem, matching: .images) { Label(localizedString("avatar.selectNew"), systemImage: "photo.badge.plus") + .padding(.horizontal, 16) + .padding(.vertical, 12) .frame(maxWidth: .infinity) - .frame(height: 48) + .frame(minHeight: 48) .background(DSColor.cardBackground) .clipShape(RoundedRectangle(cornerRadius: 14, style: .continuous)) } diff --git a/GdeiAssistant-iOS/Features/Schedule/Views/ScheduleView.swift b/GdeiAssistant-iOS/Features/Schedule/Views/ScheduleView.swift index c943edc..de9b137 100644 --- a/GdeiAssistant-iOS/Features/Schedule/Views/ScheduleView.swift +++ b/GdeiAssistant-iOS/Features/Schedule/Views/ScheduleView.swift @@ -57,7 +57,9 @@ struct ScheduleView: View { } private func content(_ schedule: WeeklySchedule) -> some View { - ScrollView { + let nonEmptyDays = schedule.days.filter { !$0.courses.isEmpty } + + return ScrollView { VStack(spacing: 14) { DSCard { HStack { @@ -102,6 +104,7 @@ struct ScheduleView: View { } else { ForEach(viewModel.todayCourses) { course in courseSummaryRow(course) + .onTapGesture { selectedCourse = course } } } } @@ -119,6 +122,28 @@ struct ScheduleView: View { ) } } + + DSCard { + VStack(alignment: .leading, spacing: 12) { + Text(LocalizedStringKey("schedule.fullList")) + .font(.headline) + .foregroundStyle(DSColor.title) + + Text(LocalizedStringKey("schedule.fullListHint")) + .font(.subheadline) + .foregroundStyle(DSColor.subtitle) + + if nonEmptyDays.isEmpty { + Text(LocalizedStringKey("schedule.noCourses")) + .font(.subheadline) + .foregroundStyle(DSColor.subtitle) + } else { + ForEach(nonEmptyDays) { day in + dayCourseList(day) + } + } + } + } } .padding(16) } @@ -146,6 +171,28 @@ struct ScheduleView: View { .padding(10) .background(Color(.tertiarySystemGroupedBackground)) .clipShape(RoundedRectangle(cornerRadius: 10, style: .continuous)) + .contentShape(RoundedRectangle(cornerRadius: 10, style: .continuous)) + } + + private func dayCourseList(_ day: CourseDaySection) -> some View { + VStack(alignment: .leading, spacing: 8) { + HStack(spacing: 8) { + Text(day.dayTitle) + .font(.subheadline.weight(.semibold)) + .foregroundStyle(DSColor.primary) + + if !day.dateText.isEmpty { + Text(day.dateText) + .font(.caption) + .foregroundStyle(DSColor.subtitle) + } + } + + ForEach(day.courses) { course in + courseSummaryRow(course) + .onTapGesture { selectedCourse = course } + } + } } private func importBackground(from item: PhotosPickerItem?) async { diff --git a/GdeiAssistant-iOS/Features/Secret/Views/SecretView.swift b/GdeiAssistant-iOS/Features/Secret/Views/SecretView.swift index 7330a1a..21ef41c 100644 --- a/GdeiAssistant-iOS/Features/Secret/Views/SecretView.swift +++ b/GdeiAssistant-iOS/Features/Secret/Views/SecretView.swift @@ -46,17 +46,22 @@ struct SecretView: View { } .navigationTitle(localizedString("secret.title")) .toolbar { - ToolbarItemGroup(placement: .topBarTrailing) { - NavigationLink(localizedString("secret.mine")) { - MySecretPostsView(viewModel: viewModel) - } + ToolbarItem(placement: .topBarTrailing) { + Menu { + NavigationLink(localizedString("secret.mine")) { + MySecretPostsView(viewModel: viewModel) + } - NavigationLink(localizedString("secret.publish")) { - PublishSecretView( - listViewModel: viewModel, - publishViewModel: container.makePublishSecretViewModel() - ) + NavigationLink(localizedString("secret.publish")) { + PublishSecretView( + listViewModel: viewModel, + publishViewModel: container.makePublishSecretViewModel() + ) + } + } label: { + Image(systemName: "ellipsis.circle") } + .accessibilityLabel(localizedString("common.more")) } } .task { diff --git a/GdeiAssistant-iOS/Features/Topic/Views/TopicView.swift b/GdeiAssistant-iOS/Features/Topic/Views/TopicView.swift index f4d6bdd..5fa6fc2 100644 --- a/GdeiAssistant-iOS/Features/Topic/Views/TopicView.swift +++ b/GdeiAssistant-iOS/Features/Topic/Views/TopicView.swift @@ -54,14 +54,19 @@ struct TopicView: View { } .navigationTitle(localizedString("topic.title")) .toolbar { - ToolbarItemGroup(placement: .topBarTrailing) { - NavigationLink(localizedString("topic.mine")) { - MyTopicPostsView(viewModel: viewModel) - } + ToolbarItem(placement: .topBarTrailing) { + Menu { + NavigationLink(localizedString("topic.mine")) { + MyTopicPostsView(viewModel: viewModel) + } - NavigationLink(localizedString("topic.publish")) { - PublishTopicView(viewModel: container.makePublishTopicViewModel(), listViewModel: viewModel) + NavigationLink(localizedString("topic.publish")) { + PublishTopicView(viewModel: container.makePublishTopicViewModel(), listViewModel: viewModel) + } + } label: { + Image(systemName: "ellipsis.circle") } + .accessibilityLabel(localizedString("common.more")) } } .task { @@ -439,7 +444,7 @@ private struct PublishTopicView: View { if let uiImage = UIImage(data: image.data) { Image(uiImage: uiImage) .resizable() - .scaledToFill() + .scaledToFit() } else { Rectangle() .fill(Color(.tertiarySystemGroupedBackground)) @@ -447,6 +452,7 @@ private struct PublishTopicView: View { } } .frame(width: 92, height: 92) + .background(Color(.tertiarySystemGroupedBackground)) .clipShape(RoundedRectangle(cornerRadius: 14, style: .continuous)) } } diff --git a/GdeiAssistant-iOS/Resources/en.lproj/Localizable.strings b/GdeiAssistant-iOS/Resources/en.lproj/Localizable.strings index 3496f10..fe50fde 100644 --- a/GdeiAssistant-iOS/Resources/en.lproj/Localizable.strings +++ b/GdeiAssistant-iOS/Resources/en.lproj/Localizable.strings @@ -37,6 +37,8 @@ "common.delete" = "Delete"; "common.submit" = "Submit"; "common.done" = "Done"; +"common.image" = "Image"; +"common.more" = "More"; "profile.privacy" = "Privacy"; "profile.loginRecords" = "Login Records"; @@ -191,6 +193,8 @@ "schedule.todayCourses" = "Today's Courses"; "schedule.noCourses" = "No courses today"; "schedule.weeklyGrid" = "Weekly Schedule"; +"schedule.fullList" = "Full Course List"; +"schedule.fullListHint" = "Grouped by day, with long names, locations and teachers shown in full."; "schedule.selectBackground" = "Select Background"; "schedule.changeBackground" = "Change Background"; "schedule.clearBackground" = "Clear Background"; diff --git a/GdeiAssistant-iOS/Resources/ja.lproj/Localizable.strings b/GdeiAssistant-iOS/Resources/ja.lproj/Localizable.strings index c4eee2d..6300656 100644 --- a/GdeiAssistant-iOS/Resources/ja.lproj/Localizable.strings +++ b/GdeiAssistant-iOS/Resources/ja.lproj/Localizable.strings @@ -37,6 +37,8 @@ "common.delete" = "削除"; "common.submit" = "送信"; "common.done" = "完了"; +"common.image" = "画像"; +"common.more" = "その他"; "profile.privacy" = "プライバシー"; "profile.loginRecords" = "ログイン履歴"; @@ -191,6 +193,8 @@ "schedule.todayCourses" = "今日の授業"; "schedule.noCourses" = "今日の授業はありません"; "schedule.weeklyGrid" = "週間時間割"; +"schedule.fullList" = "全授業リスト"; +"schedule.fullListHint" = "曜日ごとに表示し、長い科目名・場所・教員名も確認できます。"; "schedule.selectBackground" = "背景画像を選択"; "schedule.changeBackground" = "背景画像を変更"; "schedule.clearBackground" = "背景画像を削除"; diff --git a/GdeiAssistant-iOS/Resources/ko.lproj/Localizable.strings b/GdeiAssistant-iOS/Resources/ko.lproj/Localizable.strings index 57212b2..57e7b9c 100644 --- a/GdeiAssistant-iOS/Resources/ko.lproj/Localizable.strings +++ b/GdeiAssistant-iOS/Resources/ko.lproj/Localizable.strings @@ -37,6 +37,8 @@ "common.delete" = "삭제"; "common.submit" = "제출"; "common.done" = "완료"; +"common.image" = "이미지"; +"common.more" = "더보기"; "profile.privacy" = "개인정보"; "profile.loginRecords" = "로그인 기록"; @@ -191,6 +193,8 @@ "schedule.todayCourses" = "오늘 수업"; "schedule.noCourses" = "오늘 수업이 없습니다"; "schedule.weeklyGrid" = "주간 시간표"; +"schedule.fullList" = "전체 수업 목록"; +"schedule.fullListHint" = "요일별로 펼쳐 긴 수업명, 장소와 교수 정보를 확인할 수 있습니다."; "schedule.selectBackground" = "배경 이미지 선택"; "schedule.changeBackground" = "배경 이미지 변경"; "schedule.clearBackground" = "배경 이미지 삭제"; diff --git a/GdeiAssistant-iOS/Resources/zh-HK.lproj/Localizable.strings b/GdeiAssistant-iOS/Resources/zh-HK.lproj/Localizable.strings index b0397b0..c53e6f3 100644 --- a/GdeiAssistant-iOS/Resources/zh-HK.lproj/Localizable.strings +++ b/GdeiAssistant-iOS/Resources/zh-HK.lproj/Localizable.strings @@ -37,6 +37,8 @@ "common.delete" = "刪除"; "common.submit" = "提交"; "common.done" = "完成"; +"common.image" = "圖片"; +"common.more" = "更多"; "profile.privacy" = "私隱設定"; "profile.loginRecords" = "登入紀錄"; @@ -191,6 +193,8 @@ "schedule.todayCourses" = "今日課程"; "schedule.noCourses" = "今天沒有課程安排"; "schedule.weeklyGrid" = "周課表"; +"schedule.fullList" = "完整課程列表"; +"schedule.fullListHint" = "按星期展開,長課程名、地點和教師會完整顯示。"; "schedule.selectBackground" = "選擇背景圖"; "schedule.changeBackground" = "更換背景圖"; "schedule.clearBackground" = "清除背景圖"; diff --git a/GdeiAssistant-iOS/Resources/zh-Hans.lproj/Localizable.strings b/GdeiAssistant-iOS/Resources/zh-Hans.lproj/Localizable.strings index 223b9c3..4a0a4a7 100644 --- a/GdeiAssistant-iOS/Resources/zh-Hans.lproj/Localizable.strings +++ b/GdeiAssistant-iOS/Resources/zh-Hans.lproj/Localizable.strings @@ -37,6 +37,8 @@ "common.delete" = "删除"; "common.submit" = "提交"; "common.done" = "完成"; +"common.image" = "图片"; +"common.more" = "更多"; "profile.privacy" = "隐私设置"; "profile.loginRecords" = "登录记录"; @@ -191,6 +193,8 @@ "schedule.todayCourses" = "今日课程"; "schedule.noCourses" = "今天没有课程安排"; "schedule.weeklyGrid" = "周课表"; +"schedule.fullList" = "完整课程列表"; +"schedule.fullListHint" = "按星期展开,长课程名、地点和教师会完整显示。"; "schedule.selectBackground" = "选择背景图"; "schedule.changeBackground" = "更换背景图"; "schedule.clearBackground" = "清除背景图"; diff --git a/GdeiAssistant-iOS/Resources/zh-TW.lproj/Localizable.strings b/GdeiAssistant-iOS/Resources/zh-TW.lproj/Localizable.strings index 66c8ebd..f6e97d2 100644 --- a/GdeiAssistant-iOS/Resources/zh-TW.lproj/Localizable.strings +++ b/GdeiAssistant-iOS/Resources/zh-TW.lproj/Localizable.strings @@ -37,6 +37,8 @@ "common.delete" = "刪除"; "common.submit" = "送出"; "common.done" = "完成"; +"common.image" = "圖片"; +"common.more" = "更多"; "profile.privacy" = "隱私權設定"; "profile.loginRecords" = "登入紀錄"; @@ -191,6 +193,8 @@ "schedule.todayCourses" = "今日課程"; "schedule.noCourses" = "今天沒有課程安排"; "schedule.weeklyGrid" = "週課表"; +"schedule.fullList" = "完整課程列表"; +"schedule.fullListHint" = "按星期展開,長課程名、地點和教師會完整顯示。"; "schedule.selectBackground" = "選擇背景圖"; "schedule.changeBackground" = "更換背景圖"; "schedule.clearBackground" = "清除背景圖";