Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge upstream changes #2416

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 37 additions & 16 deletions CHANGELOG.md

Large diffs are not rendered by default.

47 changes: 28 additions & 19 deletions app/javascript/mastodon/locales/bn.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,57 +4,57 @@
"about.disclaimer": "ম্যাস্টোডন একটি ফ্রি, ওপেন সোর্স সফটওয়্যার এবং ম্যাস্টোডন জিজিএমবিএইচ এর একটি ট্রেডমার্ক।",
"about.domain_blocks.no_reason_available": "কারণ দর্শানো যাচ্ছে না",
"about.domain_blocks.preamble": "ম্যাস্টোডন সাধারণত আপনাকে ফেদিভার্স এ অন্য কোনও সার্ভারের ব্যবহারকারীদের থেকে সামগ্রী দেখতে এবং তাদের সাথে আলাপচারিতা করার সুযোগ দেয়। এই ব্যতিক্রম যে এই বিশেষ সার্ভারে তৈরি করা হয়েছে।",
"about.domain_blocks.silenced.explanation": "আপনি সাধারণত এই সার্ভার থেকে প্রোফাইল এবং বিষয়বস্তু দেখতে পারবেন না, যদি না আপনি স্পষ্টভাবে এটি দেখেন বা অনুসরণ করে এটি নির্বাচন করেন",
"about.domain_blocks.silenced.explanation": "আপনি সাধারণত এই সার্ভার থেকে প্রোফাইল এবং বিষয়বস্তু দেখতে পারবেন না, যদি না আপনি নিজে থেকেই এটাকে ফলো না করেন.",
"about.domain_blocks.silenced.title": "সীমিত",
"about.domain_blocks.suspended.explanation": "এই সার্ভার থেকে কোনও ডেটা প্রক্রিয়াজাতকরণ, সংরক্ষণ বা আদান-প্রদান করা হবে না, তাই এই সার্ভার ব্যবহারকারীদের সাথে কোনও মিথস্ক্রিয়া বা যোগাযোগকে অসম্ভব করে তুলেছে।",
"about.domain_blocks.suspended.title": "সাসপেন্ড করা হয়েছে",
"about.not_available": "এই তথ্য এই সার্ভারে উপলব্ধ করা হয়নি",
"about.not_available": "এই তথ্য এই সার্ভারে উন্মুক্ত করা হয়নি.",
"about.powered_by": "{mastodon} দ্বারা তৈরি বিকেন্দ্রীভূত সামাজিক মিডিয়া।",
"about.rules": "সার্ভারের নিয়মাবলী",
"account.account_note_header": "বিজ্ঞপ্তি",
"account.add_or_remove_from_list": "তালিকাতে যোগ বা অপসারণ করো",
"account.badges.bot": "বট",
"account.badges.group": "দল",
"account.block": "@{name} কে ব্লক করো",
"account.block_domain": "{domain} থেকে সব লুকাও",
"account.block_short": "অবরোধ",
"account.block_domain": "{domain} কে ব্লক করুন",
"account.block_short": "ব্লক",
"account.blocked": "অবরুদ্ধ",
"account.browse_more_on_origin_server": "মূল প্রোফাইলটিতে আরও ব্রাউজ করুন",
"account.cancel_follow_request": "অনুসরণ অনুরোধ প্রত্যাহার করুন",
"account.direct": "গোপনে মেনশন করুন @{name}",
"account.disable_notifications": "আমাকে জানানো বন্ধ করো যখন @{name} পোস্ট করবে",
"account.domain_blocked": "ডোমেন গোপন করুন",
"account.edit_profile": "প্রোফাইল পরিবর্তন করুন",
"account.domain_blocked": "ডোমেইন ব্লক করা",
"account.edit_profile": "প্রোফাইল সম্পাদনা করুন",
"account.enable_notifications": "আমাকে জানাবে যখন @{name} পোস্ট করবে",
"account.endorse": "নিজের পাতায় দেখান",
"account.endorse": "প্রোফাইলে ফিচার করুন",
"account.featured_tags.last_status_at": "{date} এ সর্বশেষ পোস্ট",
"account.featured_tags.last_status_never": "কোনো পোস্ট নেই",
"account.featured_tags.title": "{name}-এর বৈশিষ্ট্যযুক্ত হ্যাশট্যাগগুলি৷",
"account.featured_tags.title": "{name} এর ফিচার করা Hashtag সমূহ",
"account.follow": "অনুসরণ",
"account.followers": "অনুসরণকারী",
"account.followers.empty": "এই ব্যক্তিকে এখনো কেউ অনুসরণ করে না",
"account.followers.empty": "এই ব্যক্তিকে এখনো কেউ অনুসরণ করে না.",
"account.followers_counter": "{count, plural,one {{counter} জন অনুসরণকারী } other {{counter} জন অনুসরণকারী}}",
"account.following": "অনুসরণ করা হচ্ছে",
"account.following_counter": "{count, plural,one {{counter} জনকে অনুসরণ} other {{counter} জনকে অনুসরণ}}",
"account.follows.empty": "এই সদস্য কাওকে এখনো অনুসরণ করেন না.",
"account.follows_you": "তোমাকে অনুসরণ করে",
"account.follows.empty": "এই সদস্য কাউকে এখনো ফলো করেন না.",
"account.follows_you": "আপনাকে ফলো করে",
"account.go_to_profile": "প্রোফাইলে যান",
"account.hide_reblogs": "@{name}'র সমর্থনগুলি লুকিয়ে ফেলুন",
"account.in_memoriam": "স্মৃতিসৌধে।",
"account.in_memoriam": "স্মৃতিতে.",
"account.joined_short": "যোগ দিয়েছেন",
"account.languages": "সাবস্ক্রাইব করা ভাষা পরিবর্তন করুন",
"account.link_verified_on": "এই লিংকের মালিকানা চেক করা হয়েছে {date} তারিখে",
"account.locked_info": "এই নিবন্ধনের গোপনীয়তার ক্ষেত্র তালা দেওয়া আছে। নিবন্ধনকারী অনুসরণ করার অনুমতি যাদেরকে দেবেন, শুধু তারাই অনুসরণ করতে পারবেন",
"account.locked_info": "এই একাউন্ট লক করা। উনি যাদেরকে ফলো করার অনুমতি যাদেরকে দেবেন, শুধু তারাই ফলো করতে পারবেন.",
"account.media": "মিডিয়া",
"account.mention": "@{name} কে উল্লেখ করুন",
"account.mention": "@{name} কে মেনশন করুন",
"account.moved_to": "{name} নির্দেশ করেছে যে তাদের নতুন অ্যাকাউন্ট এখন হলো:",
"account.mute": "@{name} কে নিঃশব্দ করুন",
"account.mute_notifications_short": "বিজ্ঞপ্তি নিংশব্দ",
"account.mute_short": "নিঃশব্দ",
"account.muted": "নিঃশব্দ",
"account.no_bio": "কোনো বর্ণনা দেওয়া হয়নি",
"account.mute_notifications_short": "নোটিফিকেশন মিউট করুন",
"account.mute_short": "মিউট করুন",
"account.muted": "মিউট করা",
"account.no_bio": "কোনো বর্ণনা দেওয়া হয়নি.",
"account.open_original_page": "মূল পৃষ্ঠা খুলুন",
"account.posts": "টুট",
"account.posts": "পোষ্টসমূহ",
"account.posts_with_replies": "টুট এবং মতামত",
"account.report": "@{name} কে রিপোর্ট করুন",
"account.requested": "অনুমতির অপেক্ষা। অনুসরণ করার অনুরোধ বাতিল করতে এখানে ক্লিক করুন",
Expand All @@ -76,6 +76,9 @@
"admin.dashboard.retention.average": "গড়",
"admin.dashboard.retention.cohort": "সাইন আপের মাস",
"admin.dashboard.retention.cohort_size": "নতুন ব্যবহারকারী",
"admin.impact_report.instance_accounts": "যেসব একাউন্ট এর প্রোফাইল এটি ডিলিট করবে",
"admin.impact_report.instance_followers": "যেসব ফলোয়ারদের আমাদের ইউজাররা হারাবে",
"admin.impact_report.instance_follows": "যেসব ফলোয়ারদের তাদের ইউজার হারাবে",
"alert.rate_limited.message": "{retry_time, time, medium} -এর পরে আবার প্রচেষ্টা করুন।",
"alert.rate_limited.title": "হার সীমিত",
"alert.unexpected.message": "সমস্যা অপ্রত্যাশিত.",
Expand Down Expand Up @@ -131,7 +134,9 @@
"community.column_settings.remote_only": "শুধুমাত্র দূরবর্তী",
"compose.language.change": "ভাষা পরিবর্তন করুন",
"compose.language.search": "ভাষা অনুসন্ধান করুন...",
"compose.published.body": "পোষ্ট publish করা হয়েছে.",
"compose.published.open": "দেখো",
"compose.saved.body": "পোস্ট সংরক্ষণ করা হয়েছে.",
"compose_form.direct_message_warning_learn_more": "আরো জানুন",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "এই পোস্টটি কোনো হ্যাশট্যাগের বিষয় নয় কারণ এটি সর্বজনীনভাবে উপলব্ধ নয়। শুধুমাত্র জনসাধারণের কাছে পোস্ট করা বার্তাই হ্যাশট্যাগ দ্বারা অনুসন্ধান করা যেতে পারে।",
Expand Down Expand Up @@ -165,9 +170,11 @@
"confirmations.delete_list.confirm": "মুছে ফেলুন",
"confirmations.delete_list.message": "আপনি কি নিশ্চিত যে আপনি এই তালিকাটি স্থায়িভাবে মুছে ফেলতে চান ?",
"confirmations.discard_edit_media.confirm": "বাতিল করো",
"confirmations.discard_edit_media.message": "মিডিয়া Description বা Preview তে আপনার আপনার অসংরক্ষিত পরিবর্তন আছে, সেগুলো বাতিল করবেন?",
"confirmations.domain_block.confirm": "এই ডোমেন থেকে সব লুকান",
"confirmations.domain_block.message": "আপনি কি সত্যিই সত্যই নিশ্চিত যে আপনি পুরো {domain}'টি ব্লক করতে চান? বেশিরভাগ ক্ষেত্রে কয়েকটি লক্ষ্যযুক্ত ব্লক বা নীরবতা যথেষ্ট এবং পছন্দসই। আপনি কোনও পাবলিক টাইমলাইন বা আপনার বিজ্ঞপ্তিগুলিতে সেই ডোমেন থেকে সামগ্রী দেখতে পাবেন না। সেই ডোমেন থেকে আপনার অনুসরণকারীদের সরানো হবে।",
"confirmations.edit.confirm": "সম্পাদন",
"confirmations.edit.message": "এখন সম্পাদনা করলে আপনি যে মেসেজ লিখছেন তা overwrite করবে, চালিয়ে যেতে চান?",
"confirmations.logout.confirm": "প্রস্থান",
"confirmations.logout.message": "আপনি লগ আউট করতে চান?",
"confirmations.mute.confirm": "সরিয়ে ফেলুন",
Expand All @@ -187,6 +194,8 @@
"directory.local": "শুধু {domain} থেকে",
"directory.new_arrivals": "নতুন আগত",
"directory.recently_active": "সম্প্রতি সক্রিয়",
"disabled_account_banner.account_settings": "একাউন্ট সেটিংস",
"disabled_account_banner.text": "আপনার একাউন্ট {disabledAccount} বর্তমানে বন্ধ করা.",
"dismissable_banner.dismiss": "সরাও",
"dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
"dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
Expand Down
2 changes: 2 additions & 0 deletions app/javascript/mastodon/locales/sq.json
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,7 @@
"keyboard_shortcuts.direct": "që të hapni shtyllën e përmendjeve private",
"keyboard_shortcuts.down": "Për zbritje poshtë nëpër listë",
"keyboard_shortcuts.enter": "Për hapje postimi",
"keyboard_shortcuts.favourite": "I vini shenjë postimit si të parapëlqyer",
"keyboard_shortcuts.favourites": "Hapni listë të parapëlqyerish",
"keyboard_shortcuts.federated": "Për hapje rrjedhe kohore të të federuarave",
"keyboard_shortcuts.heading": "Shkurtore tastiere",
Expand Down Expand Up @@ -629,6 +630,7 @@
"status.edited": "Përpunuar më {date}",
"status.edited_x_times": "Përpunuar {count, plural, one {{count} herë} other {{count} herë}}",
"status.embed": "Trupëzim",
"status.favourite": "I vini shenjë si të parapëlqyer",
"status.filter": "Filtroje këtë postim",
"status.filtered": "I filtruar",
"status.hide": "Fshihe postimin",
Expand Down
23 changes: 2 additions & 21 deletions app/lib/request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,26 +68,13 @@ class Request
# about 15s in total
TIMEOUT = { connect_timeout: 5, read_timeout: 10, write_timeout: 10, read_deadline: 30 }.freeze

# Workaround for overly-eager decoding of percent-encoded characters in Addressable::URI#normalized_path
# https://github.com/sporkmonger/addressable/issues/366
URI_NORMALIZER = lambda do |uri|
uri = HTTP::URI.parse(uri)

HTTP::URI.new(
scheme: uri.normalized_scheme,
authority: uri.normalized_authority,
path: Addressable::URI.normalize_path(encode_non_ascii(uri.path)).presence || '/',
query: encode_non_ascii(uri.query)
)
end

include RoutingHelper

def initialize(verb, url, **options)
raise ArgumentError if url.blank?

@verb = verb
@url = URI_NORMALIZER.call(url)
@url = Addressable::URI.parse(url).normalize
@http_client = options.delete(:http_client)
@allow_local = options.delete(:allow_local)
@options = options.merge(socket_class: use_proxy? || @allow_local ? ProxySocket : Socket)
Expand Down Expand Up @@ -151,14 +138,8 @@ def valid_url?(url)
%w(http https).include?(parsed_url.scheme) && parsed_url.host.present?
end

NON_ASCII_PATTERN = /[^\x00-\x7F]+/

def encode_non_ascii(str)
str&.gsub(NON_ASCII_PATTERN) { |substr| CGI.escape(substr.encode(Encoding::UTF_8)) }
end

def http_client
HTTP.use(:auto_inflate).use(normalize_uri: { normalizer: URI_NORMALIZER }).follow(max_hops: 3)
HTTP.use(:auto_inflate).follow(max_hops: 3)
end
end

Expand Down
6 changes: 3 additions & 3 deletions app/lib/tag_manager.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@ class TagManager
include RoutingHelper

def web_domain?(domain)
domain.nil? || domain.delete('/').casecmp(Rails.configuration.x.web_domain).zero?
domain.nil? || domain.delete_suffix('/').casecmp(Rails.configuration.x.web_domain).zero?
end

def local_domain?(domain)
domain.nil? || domain.delete('/').casecmp(Rails.configuration.x.local_domain).zero?
domain.nil? || domain.delete_suffix('/').casecmp(Rails.configuration.x.local_domain).zero?
end

def normalize_domain(domain)
return if domain.nil?

uri = Addressable::URI.new
uri.host = domain.delete('/')
uri.host = domain.delete_suffix('/')
uri.normalized_host
end

Expand Down
4 changes: 3 additions & 1 deletion app/services/translate_status_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,9 @@ def build_status_translation(translations)

case source
when :content
status_translation.content = unwrap_emoji_shortcodes(translation.text).to_html
node = unwrap_emoji_shortcodes(translation.text)
Sanitize.node!(node, Sanitize::Config::MASTODON_STRICT)
status_translation.content = node.to_html
when :spoiler_text
status_translation.spoiler_text = unwrap_emoji_shortcodes(translation.text).content
when Poll::Option
Expand Down
2 changes: 2 additions & 0 deletions config/locales/doorkeeper.sq.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ sq:
bookmarks: Faqerojtës
conversations: Biseda
crypto: Fshehtëzim skaj-më-skaj
favourites: Të parapëlqyer
filters: Filtra
follow: Ndjekje, Heshtime dhe Bllokime
follows: Ndjekje
Expand Down Expand Up @@ -183,6 +184,7 @@ sq:
write:blocks: të bllokojë llogari dhe përkatësi
write:bookmarks: të faqeruajë gjendje
write:conversations: heshtoni dhe fshini biseda
write:favourites: postime të parapëlqyer
write:filters: të krijojë filtra
write:follows: të ndjekë persona
write:lists: të krijojë lista
Expand Down
Loading
Loading