mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-07-27 05:30:50 +00:00
Update localization
This commit is contained in:
parent
e27ff72830
commit
3985c538a8
@ -14341,3 +14341,30 @@ Sorry for the inconvenience.";
|
|||||||
|
|
||||||
"Chat.PauseVoiceMessageTooltip" = "Pause to trim or replay.";
|
"Chat.PauseVoiceMessageTooltip" = "Pause to trim or replay.";
|
||||||
"Chat.PauseVideoMessageTooltip" = "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";
|
||||||
|
@ -149,8 +149,7 @@ private enum ContactListNodeEntry: Comparable, Identifiable {
|
|||||||
interaction.authorize()
|
interaction.authorize()
|
||||||
})
|
})
|
||||||
case .permissionLimited:
|
case .permissionLimited:
|
||||||
//TODO:localize
|
return LimitedPermissionItem(presentationData: ItemListPresentationData(presentationData), text: presentationData.strings.Contacts_LimitedAccess_Text, action: {
|
||||||
return LimitedPermissionItem(presentationData: ItemListPresentationData(presentationData), text: "You have limited Telegram from accessing all of your contacts.", action: {
|
|
||||||
interaction.openContactAccessPicker()
|
interaction.openContactAccessPicker()
|
||||||
})
|
})
|
||||||
case let .option(_, option, header, _, _):
|
case let .option(_, option, header, _, _):
|
||||||
|
@ -160,8 +160,7 @@ public class LimitedPermissionItemNode: ListViewItemNode {
|
|||||||
|
|
||||||
let attributedText = NSAttributedString(string: item.text, font: textFont, textColor: item.presentationData.theme.list.itemSecondaryTextColor)
|
let attributedText = NSAttributedString(string: item.text, font: textFont, textColor: item.presentationData.theme.list.itemSecondaryTextColor)
|
||||||
|
|
||||||
//TODO:localize
|
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 (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 (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()))
|
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()))
|
||||||
|
|
||||||
|
@ -1239,8 +1239,7 @@
|
|||||||
[self tooltipTimerTick];
|
[self tooltipTimerTick];
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO:localize
|
NSString *text = hd ? TGLocalized(@"Media.PhotoHdOn") : TGLocalized(@"Media.PhotoHdOff");
|
||||||
NSString *text = hd ? @"The photo will be sent in high quality." : @"The photo will be sent in standard quality.";
|
|
||||||
[_context presentTooltip:text icon:[TGPhotoEditorInterfaceAssets qualityIconForHighQuality:hd filled: true] sourceRect:rect];
|
[_context presentTooltip:text icon:[TGPhotoEditorInterfaceAssets qualityIconForHighQuality:hd filled: true] sourceRect:rect];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2719,7 +2719,7 @@ public final class MediaPickerScreenImpl: ViewController, MediaPickerScreen, Att
|
|||||||
}
|
}
|
||||||
if price == nil {
|
if price == nil {
|
||||||
//TODO:localize
|
//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)
|
return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/QualityHd"), color: theme.contextMenu.primaryColor)
|
||||||
}, action: { [weak self] _, f in
|
}, action: { [weak self] _, f in
|
||||||
f(.default)
|
f(.default)
|
||||||
|
@ -190,8 +190,7 @@ public final class SelectablePeerNode: ASDisplayNode {
|
|||||||
|
|
||||||
switch storyMode {
|
switch storyMode {
|
||||||
case .createStory:
|
case .createStory:
|
||||||
//TODO:localize
|
title = strings.Share_PostToStory
|
||||||
title = "Post\nto Story"
|
|
||||||
overrideImage = .storyIcon
|
overrideImage = .storyIcon
|
||||||
case .repostStory:
|
case .repostStory:
|
||||||
title = strings.Share_RepostStory
|
title = strings.Share_RepostStory
|
||||||
|
@ -898,9 +898,8 @@ private class ChatQrCodeScreenNode: ViewControllerTracingNode, ASScrollViewDeleg
|
|||||||
self.doneButton.title = self.presentationData.strings.Share_ShareMessage
|
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 = 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.scanButton.icon = UIImage(bundleImageName: "Settings/ScanQr")
|
||||||
|
|
||||||
self.listNode = ListView()
|
self.listNode = ListView()
|
||||||
|
@ -75,7 +75,7 @@ final class ForumModeComponent: Component {
|
|||||||
ItemComponent(
|
ItemComponent(
|
||||||
theme: component.theme,
|
theme: component.theme,
|
||||||
animation: "ForumTabs",
|
animation: "ForumTabs",
|
||||||
title: "Tabs",
|
title: component.strings.PeerInfo_Topics_Tabs,
|
||||||
isSelected: component.mode == .tabs
|
isSelected: component.mode == .tabs
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
@ -104,7 +104,7 @@ final class ForumModeComponent: Component {
|
|||||||
ItemComponent(
|
ItemComponent(
|
||||||
theme: component.theme,
|
theme: component.theme,
|
||||||
animation: "ForumList",
|
animation: "ForumList",
|
||||||
title: "List",
|
title: component.strings.PeerInfo_Topics_List,
|
||||||
isSelected: component.mode == .list
|
isSelected: component.mode == .list
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
@ -153,7 +153,7 @@ final class ForumSettingsScreenComponent: Component {
|
|||||||
if case .legacyGroup = peer {
|
if case .legacyGroup = peer {
|
||||||
let context = component.context
|
let context = component.context
|
||||||
let signal: Signal<EnginePeer.Id?, NoError> = context.engine.peers.convertGroupToSupergroup(peerId: peer.id, additionalProcessing: { upgradedPeerId -> Signal<Never, NoError> in
|
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)
|
|> map(Optional.init)
|
||||||
|> `catch` { [weak self] error -> Signal<PeerId?, NoError> in
|
|> `catch` { [weak self] error -> Signal<PeerId?, NoError> in
|
||||||
@ -244,11 +244,10 @@ final class ForumSettingsScreenComponent: Component {
|
|||||||
|
|
||||||
let presentationData = component.context.sharedContext.currentPresentationData.with { $0 }
|
let presentationData = component.context.sharedContext.currentPresentationData.with { $0 }
|
||||||
|
|
||||||
//TODO:localize
|
|
||||||
let navigationTitleSize = self.navigationTitle.update(
|
let navigationTitleSize = self.navigationTitle.update(
|
||||||
transition: transition,
|
transition: transition,
|
||||||
component: AnyComponent(MultilineTextComponent(
|
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
|
horizontalAlignment: .center
|
||||||
)),
|
)),
|
||||||
environment: {},
|
environment: {},
|
||||||
@ -293,7 +292,7 @@ final class ForumSettingsScreenComponent: Component {
|
|||||||
|
|
||||||
contentHeight += 124.0
|
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),
|
body: MarkdownAttributeSet(font: Font.regular(15.0), textColor: environment.theme.list.freeTextColor),
|
||||||
bold: MarkdownAttributeSet(font: Font.semibold(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),
|
link: MarkdownAttributeSet(font: Font.regular(15.0), textColor: environment.theme.list.itemAccentColor),
|
||||||
@ -344,7 +343,7 @@ final class ForumSettingsScreenComponent: Component {
|
|||||||
title: AnyComponent(VStack([
|
title: AnyComponent(VStack([
|
||||||
AnyComponentWithIdentity(id: AnyHashable(0), component: AnyComponent(MultilineTextComponent(
|
AnyComponentWithIdentity(id: AnyHashable(0), component: AnyComponent(MultilineTextComponent(
|
||||||
text: .plain(NSAttributedString(
|
text: .plain(NSAttributedString(
|
||||||
string: "Enable Topics",
|
string: environment.strings.PeerInfo_Topics_EnableTopics,
|
||||||
font: Font.regular(presentationData.listsFontSize.baseDisplaySize),
|
font: Font.regular(presentationData.listsFontSize.baseDisplaySize),
|
||||||
textColor: environment.theme.list.itemPrimaryTextColor
|
textColor: environment.theme.list.itemPrimaryTextColor
|
||||||
)),
|
)),
|
||||||
@ -389,7 +388,7 @@ final class ForumSettingsScreenComponent: Component {
|
|||||||
theme: environment.theme,
|
theme: environment.theme,
|
||||||
header: AnyComponent(MultilineTextComponent(
|
header: AnyComponent(MultilineTextComponent(
|
||||||
text: .plain(NSAttributedString(
|
text: .plain(NSAttributedString(
|
||||||
string: "DISPLAY AS",
|
string: environment.strings.PeerInfo_Topics_DisplayAs,
|
||||||
font: Font.regular(presentationData.listsFontSize.itemListBaseHeaderFontSize),
|
font: Font.regular(presentationData.listsFontSize.itemListBaseHeaderFontSize),
|
||||||
textColor: environment.theme.list.freeTextColor
|
textColor: environment.theme.list.freeTextColor
|
||||||
)),
|
)),
|
||||||
@ -397,7 +396,7 @@ final class ForumSettingsScreenComponent: Component {
|
|||||||
)),
|
)),
|
||||||
footer: AnyComponent(MultilineTextComponent(
|
footer: AnyComponent(MultilineTextComponent(
|
||||||
text: .markdown(
|
text: .markdown(
|
||||||
text: "Choose how topics appear for all members.",
|
text: environment.strings.PeerInfo_Topics_DisplayAsInfo,
|
||||||
attributes: MarkdownAttributes(
|
attributes: MarkdownAttributes(
|
||||||
body: MarkdownAttributeSet(font: Font.regular(presentationData.listsFontSize.itemListBaseHeaderFontSize), textColor: environment.theme.list.freeTextColor),
|
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),
|
bold: MarkdownAttributeSet(font: Font.semibold(presentationData.listsFontSize.itemListBaseHeaderFontSize), textColor: environment.theme.list.freeTextColor),
|
||||||
|
@ -2581,8 +2581,7 @@ private func editingItems(data: PeerInfoScreenData?, boostStatus: ChannelBoostSt
|
|||||||
}
|
}
|
||||||
|
|
||||||
if canSetupTopics {
|
if canSetupTopics {
|
||||||
//TODO:localize
|
let label = channel.flags.contains(.isForum) ? presentationData.strings.PeerInfo_OptionTopics_Enabled : presentationData.strings.PeerInfo_OptionTopics_Disabled
|
||||||
let label = channel.flags.contains(.isForum) ? "Enabled" : "Disabled"
|
|
||||||
items[.peerDataSettings]!.append(PeerInfoScreenDisclosureItem(id: ItemTopics, label: .text(label), text: presentationData.strings.PeerInfo_OptionTopics, icon: UIImage(bundleImageName: "Settings/Menu/Topics"), action: {
|
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 {
|
if let topicsLimitedReason = topicsLimitedReason {
|
||||||
interaction.displayTopicsLimited(topicsLimitedReason)
|
interaction.displayTopicsLimited(topicsLimitedReason)
|
||||||
@ -2710,8 +2709,7 @@ private func editingItems(data: PeerInfoScreenData?, boostStatus: ChannelBoostSt
|
|||||||
}
|
}
|
||||||
|
|
||||||
if canSetupTopics {
|
if canSetupTopics {
|
||||||
//TODO:localize
|
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: {
|
||||||
items[.peerPublicSettings]!.append(PeerInfoScreenDisclosureItem(id: ItemTopics, label: .text("Disabled"), text: presentationData.strings.PeerInfo_OptionTopics, icon: UIImage(bundleImageName: "Settings/Menu/Topics"), action: {
|
|
||||||
if let topicsLimitedReason = topicsLimitedReason {
|
if let topicsLimitedReason = topicsLimitedReason {
|
||||||
interaction.displayTopicsLimited(topicsLimitedReason)
|
interaction.displayTopicsLimited(topicsLimitedReason)
|
||||||
} else {
|
} else {
|
||||||
|
@ -505,11 +505,11 @@ extension ChatControllerImpl {
|
|||||||
self.present(
|
self.present(
|
||||||
textAlertController(
|
textAlertController(
|
||||||
context: self.context,
|
context: self.context,
|
||||||
title: "Trim to selected range?",
|
title: self.presentationData.strings.Chat_TrimVoiceMessageToResume_Title,
|
||||||
text: "Audio outside that range will be discarded, and recording will start immediately.",
|
text: self.presentationData.strings.Chat_TrimVoiceMessageToResume_Text,
|
||||||
actions: [
|
actions: [
|
||||||
TextAlertAction(type: .genericAction, title: self.presentationData.strings.Common_Cancel, action: {}),
|
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()
|
proceed()
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user