Update localization

This commit is contained in:
Ilya Laktyushin 2025-05-26 01:05:11 +02:00
parent e27ff72830
commit 3985c538a8
11 changed files with 46 additions and 27 deletions

View File

@ -14341,3 +14341,30 @@ Sorry for the inconvenience.";
"Chat.PauseVoiceMessageTooltip" = "Pause to trim or replay.";
"Chat.PauseVideoMessageTooltip" = "Pause to trim or replay.";
"Chat.TrimVoiceMessageToResume.Title" = "Trim to selected range?";
"Chat.TrimVoiceMessageToResume.Text" = "Audio outside that range will be discarded, and recording will start immediately.";
"Chat.TrimVoiceMessageToResume.Proceed" = "Proceed";
"Contacts.LimitedAccess.Text" = "You have limited Telegram from accessing all of your contacts.";
"Contacts.LimitedAccess.Manage" = "MANAGE";
"Media.PhotoHdOn" = "The photo will be sent in high quality.";
"Media.PhotoHdOff" = "The photo will be sent in standard quality.";
"Attachment.SendInHd" = "Send in High Quality";
"Share.PostToStory" = "Post\nto Story";
"PeerInfo.QRCode.Scan" = "Scan QR Code";
"PeerInfo.Topics.Title" = "Topics";
"PeerInfo.Topics.EnableTopics" = "Enable Topics";
"PeerInfo.Topics.EnableTopicsInfo" = "The group chat will be divided into topics created by admins or users.";
"PeerInfo.Topics.DisplayAs" = "DISPLAY AS";
"PeerInfo.Topics.DisplayAsInfo" = "Choose how topics appear for all members.";
"PeerInfo.Topics.Tabs" = "Tabs";
"PeerInfo.Topics.List" = "List";
"PeerInfo.OptionTopics.Enabled" = "Enabled";
"PeerInfo.OptionTopics.Disabled" = "Disabled";

View File

@ -149,8 +149,7 @@ private enum ContactListNodeEntry: Comparable, Identifiable {
interaction.authorize()
})
case .permissionLimited:
//TODO:localize
return LimitedPermissionItem(presentationData: ItemListPresentationData(presentationData), text: "You have limited Telegram from accessing all of your contacts.", action: {
return LimitedPermissionItem(presentationData: ItemListPresentationData(presentationData), text: presentationData.strings.Contacts_LimitedAccess_Text, action: {
interaction.openContactAccessPicker()
})
case let .option(_, option, header, _, _):

View File

@ -160,8 +160,7 @@ public class LimitedPermissionItemNode: ListViewItemNode {
let attributedText = NSAttributedString(string: item.text, font: textFont, textColor: item.presentationData.theme.list.itemSecondaryTextColor)
//TODO:localize
let (buttonTextLayout, buttonTextApply) = makeButtonTitleLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: "MANAGE", font: Font.semibold(15.0), textColor: item.presentationData.theme.list.itemCheckColors.foregroundColor), backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - rightInset, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets()))
let (buttonTextLayout, buttonTextApply) = makeButtonTitleLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: item.presentationData.strings.Contacts_LimitedAccess_Manage, font: Font.semibold(15.0), textColor: item.presentationData.theme.list.itemCheckColors.foregroundColor), backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - rightInset, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets()))
let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: attributedText, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - rightInset - buttonTextLayout.size.width - 20.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets()))

View File

@ -1239,8 +1239,7 @@
[self tooltipTimerTick];
}
//TODO:localize
NSString *text = hd ? @"The photo will be sent in high quality." : @"The photo will be sent in standard quality.";
NSString *text = hd ? TGLocalized(@"Media.PhotoHdOn") : TGLocalized(@"Media.PhotoHdOff");
[_context presentTooltip:text icon:[TGPhotoEditorInterfaceAssets qualityIconForHighQuality:hd filled: true] sourceRect:rect];
}

View File

@ -2719,7 +2719,7 @@ public final class MediaPickerScreenImpl: ViewController, MediaPickerScreen, Att
}
if price == nil {
//TODO:localize
items.append(.action(ContextMenuActionItem(text: "Send in High Quality", icon: { theme in
items.append(.action(ContextMenuActionItem(text: strings.Attachment_SendInHd, icon: { theme in
return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/QualityHd"), color: theme.contextMenu.primaryColor)
}, action: { [weak self] _, f in
f(.default)

View File

@ -190,8 +190,7 @@ public final class SelectablePeerNode: ASDisplayNode {
switch storyMode {
case .createStory:
//TODO:localize
title = "Post\nto Story"
title = strings.Share_PostToStory
overrideImage = .storyIcon
case .repostStory:
title = strings.Share_RepostStory

View File

@ -898,9 +898,8 @@ private class ChatQrCodeScreenNode: ViewControllerTracingNode, ASScrollViewDeleg
self.doneButton.title = self.presentationData.strings.Share_ShareMessage
}
//TODO:localize
self.scanButton = SolidRoundedButtonNode(theme: SolidRoundedButtonTheme(backgroundColor: .clear, foregroundColor: self.presentationData.theme.actionSheet.controlAccentColor), font: .regular, height: 42.0, cornerRadius: 0.0, gloss: false)
self.scanButton.title = "Scan QR Code"
self.scanButton.title = presentationData.strings.PeerInfo_QRCode_Scan
self.scanButton.icon = UIImage(bundleImageName: "Settings/ScanQr")
self.listNode = ListView()

View File

@ -75,7 +75,7 @@ final class ForumModeComponent: Component {
ItemComponent(
theme: component.theme,
animation: "ForumTabs",
title: "Tabs",
title: component.strings.PeerInfo_Topics_Tabs,
isSelected: component.mode == .tabs
)
),
@ -104,7 +104,7 @@ final class ForumModeComponent: Component {
ItemComponent(
theme: component.theme,
animation: "ForumList",
title: "List",
title: component.strings.PeerInfo_Topics_List,
isSelected: component.mode == .list
)
),

View File

@ -153,7 +153,7 @@ final class ForumSettingsScreenComponent: Component {
if case .legacyGroup = peer {
let context = component.context
let signal: Signal<EnginePeer.Id?, NoError> = context.engine.peers.convertGroupToSupergroup(peerId: peer.id, additionalProcessing: { upgradedPeerId -> Signal<Never, NoError> in
return context.engine.peers.setChannelForumMode(id: upgradedPeerId, isForum: true, displayForumAsTabs: false)
return context.engine.peers.setChannelForumMode(id: upgradedPeerId, isForum: true, displayForumAsTabs: displayForumAsTabs)
})
|> map(Optional.init)
|> `catch` { [weak self] error -> Signal<PeerId?, NoError> in
@ -244,11 +244,10 @@ final class ForumSettingsScreenComponent: Component {
let presentationData = component.context.sharedContext.currentPresentationData.with { $0 }
//TODO:localize
let navigationTitleSize = self.navigationTitle.update(
transition: transition,
component: AnyComponent(MultilineTextComponent(
text: .plain(NSAttributedString(string: "Topics", font: Font.semibold(17.0), textColor: environment.theme.rootController.navigationBar.primaryTextColor)),
text: .plain(NSAttributedString(string: environment.strings.PeerInfo_Topics_Title, font: Font.semibold(17.0), textColor: environment.theme.rootController.navigationBar.primaryTextColor)),
horizontalAlignment: .center
)),
environment: {},
@ -293,7 +292,7 @@ final class ForumSettingsScreenComponent: Component {
contentHeight += 124.0
let subtitleString = NSMutableAttributedString(attributedString: parseMarkdownIntoAttributedString("The group chat will be divided into topics created by admins or users.", attributes: MarkdownAttributes(
let subtitleString = NSMutableAttributedString(attributedString: parseMarkdownIntoAttributedString(environment.strings.PeerInfo_Topics_EnableTopicsInfo, attributes: MarkdownAttributes(
body: MarkdownAttributeSet(font: Font.regular(15.0), textColor: environment.theme.list.freeTextColor),
bold: MarkdownAttributeSet(font: Font.semibold(15.0), textColor: environment.theme.list.freeTextColor),
link: MarkdownAttributeSet(font: Font.regular(15.0), textColor: environment.theme.list.itemAccentColor),
@ -344,7 +343,7 @@ final class ForumSettingsScreenComponent: Component {
title: AnyComponent(VStack([
AnyComponentWithIdentity(id: AnyHashable(0), component: AnyComponent(MultilineTextComponent(
text: .plain(NSAttributedString(
string: "Enable Topics",
string: environment.strings.PeerInfo_Topics_EnableTopics,
font: Font.regular(presentationData.listsFontSize.baseDisplaySize),
textColor: environment.theme.list.itemPrimaryTextColor
)),
@ -389,7 +388,7 @@ final class ForumSettingsScreenComponent: Component {
theme: environment.theme,
header: AnyComponent(MultilineTextComponent(
text: .plain(NSAttributedString(
string: "DISPLAY AS",
string: environment.strings.PeerInfo_Topics_DisplayAs,
font: Font.regular(presentationData.listsFontSize.itemListBaseHeaderFontSize),
textColor: environment.theme.list.freeTextColor
)),
@ -397,7 +396,7 @@ final class ForumSettingsScreenComponent: Component {
)),
footer: AnyComponent(MultilineTextComponent(
text: .markdown(
text: "Choose how topics appear for all members.",
text: environment.strings.PeerInfo_Topics_DisplayAsInfo,
attributes: MarkdownAttributes(
body: MarkdownAttributeSet(font: Font.regular(presentationData.listsFontSize.itemListBaseHeaderFontSize), textColor: environment.theme.list.freeTextColor),
bold: MarkdownAttributeSet(font: Font.semibold(presentationData.listsFontSize.itemListBaseHeaderFontSize), textColor: environment.theme.list.freeTextColor),

View File

@ -2581,8 +2581,7 @@ private func editingItems(data: PeerInfoScreenData?, boostStatus: ChannelBoostSt
}
if canSetupTopics {
//TODO:localize
let label = channel.flags.contains(.isForum) ? "Enabled" : "Disabled"
let label = channel.flags.contains(.isForum) ? presentationData.strings.PeerInfo_OptionTopics_Enabled : presentationData.strings.PeerInfo_OptionTopics_Disabled
items[.peerDataSettings]!.append(PeerInfoScreenDisclosureItem(id: ItemTopics, label: .text(label), text: presentationData.strings.PeerInfo_OptionTopics, icon: UIImage(bundleImageName: "Settings/Menu/Topics"), action: {
if let topicsLimitedReason = topicsLimitedReason {
interaction.displayTopicsLimited(topicsLimitedReason)
@ -2710,8 +2709,7 @@ private func editingItems(data: PeerInfoScreenData?, boostStatus: ChannelBoostSt
}
if canSetupTopics {
//TODO:localize
items[.peerPublicSettings]!.append(PeerInfoScreenDisclosureItem(id: ItemTopics, label: .text("Disabled"), text: presentationData.strings.PeerInfo_OptionTopics, icon: UIImage(bundleImageName: "Settings/Menu/Topics"), action: {
items[.peerPublicSettings]!.append(PeerInfoScreenDisclosureItem(id: ItemTopics, label: .text(presentationData.strings.PeerInfo_OptionTopics_Disabled), text: presentationData.strings.PeerInfo_OptionTopics, icon: UIImage(bundleImageName: "Settings/Menu/Topics"), action: {
if let topicsLimitedReason = topicsLimitedReason {
interaction.displayTopicsLimited(topicsLimitedReason)
} else {

View File

@ -505,11 +505,11 @@ extension ChatControllerImpl {
self.present(
textAlertController(
context: self.context,
title: "Trim to selected range?",
text: "Audio outside that range will be discarded, and recording will start immediately.",
title: self.presentationData.strings.Chat_TrimVoiceMessageToResume_Title,
text: self.presentationData.strings.Chat_TrimVoiceMessageToResume_Text,
actions: [
TextAlertAction(type: .genericAction, title: self.presentationData.strings.Common_Cancel, action: {}),
TextAlertAction(type: .defaultAction, title: "Proceed", action: {
TextAlertAction(type: .defaultAction, title: self.presentationData.strings.Chat_TrimVoiceMessageToResume_Proceed, action: {
proceed()
})
]