Merge branch 'main' into develop
This commit is contained in:
commit
2ddd4354ef
|
@ -17,6 +17,6 @@
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.3.1</string>
|
<string>1.3.1</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>110</string>
|
<string>113</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -1,51 +1,51 @@
|
||||||
"16wxgf" = "Post on Mastodon";
|
"16wxgf" = "Pubblica su Mastodon";
|
||||||
|
|
||||||
"751xkl" = "Text Content";
|
"751xkl" = "Contenuto testuale";
|
||||||
|
|
||||||
"CsR7G2" = "Post on Mastodon";
|
"CsR7G2" = "Pubblica su Mastodon";
|
||||||
|
|
||||||
"HZSGTr" = "What content to post?";
|
"HZSGTr" = "Quale contenuto postare?";
|
||||||
|
|
||||||
"HdGikU" = "Posting failed";
|
"HdGikU" = "Pubblicazione non riuscita";
|
||||||
|
|
||||||
"KDNTJ4" = "Failure Reason";
|
"KDNTJ4" = "Motivo del fallimento";
|
||||||
|
|
||||||
"RHxKOw" = "Send Post with text content";
|
"RHxKOw" = "Invia post con contenuto testuale";
|
||||||
|
|
||||||
"RxSqsb" = "Post";
|
"RxSqsb" = "Pubblica";
|
||||||
|
|
||||||
"WCIR3D" = "Post ${content} on Mastodon";
|
"WCIR3D" = "Pubblica ${content} su Mastodon";
|
||||||
|
|
||||||
"ZKJSNu" = "Post";
|
"ZKJSNu" = "Pubblica";
|
||||||
|
|
||||||
"ZS1XaK" = "${content}";
|
"ZS1XaK" = "${content}";
|
||||||
|
|
||||||
"ZbSjzC" = "Visibility";
|
"ZbSjzC" = "Visibilità";
|
||||||
|
|
||||||
"Zo4jgJ" = "Post Visibility";
|
"Zo4jgJ" = "Visibilità del post";
|
||||||
|
|
||||||
"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’.";
|
"apSxMG-dYQ5NN" = "Ci sono ${count} opzioni corrispondenti a 'Pubblico'.";
|
||||||
|
|
||||||
"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’.";
|
"apSxMG-ehFLjY" = "Ci sono ${count} opzioni corrispondenti a ‘Solo Seguaci’.";
|
||||||
|
|
||||||
"ayoYEb-dYQ5NN" = "${content}, Public";
|
"ayoYEb-dYQ5NN" = "${content}, Pubblico";
|
||||||
|
|
||||||
"ayoYEb-ehFLjY" = "${content}, Followers Only";
|
"ayoYEb-ehFLjY" = "${content}, Solo seguaci";
|
||||||
|
|
||||||
"dUyuGg" = "Post on Mastodon";
|
"dUyuGg" = "Pubblica su Mastodon";
|
||||||
|
|
||||||
"dYQ5NN" = "Public";
|
"dYQ5NN" = "Pubblico";
|
||||||
|
|
||||||
"ehFLjY" = "Followers Only";
|
"ehFLjY" = "Solo i seguaci";
|
||||||
|
|
||||||
"gfePDu" = "Posting failed. ${failureReason}";
|
"gfePDu" = "Pubblicazione fallita. ${failureReason}";
|
||||||
|
|
||||||
"k7dbKQ" = "Post was sent successfully.";
|
"k7dbKQ" = "Post inviato con successo.";
|
||||||
|
|
||||||
"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?";
|
"oGiqmY-dYQ5NN" = "Solo per confermare, volevi ‘Pubblico’?";
|
||||||
|
|
||||||
"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?";
|
"oGiqmY-ehFLjY" = "Solo per confermare, volevi 'Solo seguaci'?";
|
||||||
|
|
||||||
"rM6dvp" = "URL";
|
"rM6dvp" = "URL";
|
||||||
|
|
||||||
"ryJLwG" = "Post was sent successfully. ";
|
"ryJLwG" = "Post inviato con successo. ";
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<key>There are ${count} options matching ‘${content}’. - 2</key>
|
<key>There are ${count} options matching ‘${content}’. - 2</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
<key>NSStringLocalizedFormatKey</key>
|
||||||
<string>There are %#@count_option@ matching ‘${content}’.</string>
|
<string>Ci sono %#@count_option@ corrispondenti a «${content}».</string>
|
||||||
<key>count_option</key>
|
<key>count_option</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
<key>NSStringFormatSpecTypeKey</key>
|
||||||
|
@ -13,15 +13,15 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>%ld</string>
|
<string>%ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 option</string>
|
<string>1 opzione</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld options</string>
|
<string>%ld opzioni</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>There are ${count} options matching ‘${visibility}’.</key>
|
<key>There are ${count} options matching ‘${visibility}’.</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
<key>NSStringLocalizedFormatKey</key>
|
||||||
<string>There are %#@count_option@ matching ‘${visibility}’.</string>
|
<string>Ci sono %#@count_option@ corrispondenti a «${visibility}».</string>
|
||||||
<key>count_option</key>
|
<key>count_option</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
<key>NSStringFormatSpecTypeKey</key>
|
||||||
|
@ -29,9 +29,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>%ld</string>
|
<string>%ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 option</string>
|
<string>1 opzione</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld options</string>
|
<string>%ld opzioni</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
|
|
@ -471,15 +471,15 @@
|
||||||
<key>zero</key>
|
<key>zero</key>
|
||||||
<string>مُنذُ لَحظة</string>
|
<string>مُنذُ لَحظة</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>مُنذُ سنة</string>
|
<string>مُنذُ %ldع</string>
|
||||||
<key>two</key>
|
<key>two</key>
|
||||||
<string>مُنذُ سنتين</string>
|
<string>مُنذُ %ldع</string>
|
||||||
<key>few</key>
|
<key>few</key>
|
||||||
<string>مُنذُ %ld سنين</string>
|
<string>مُنذُ %ldع</string>
|
||||||
<key>many</key>
|
<key>many</key>
|
||||||
<string>مُنذُ %ld سنةً</string>
|
<string>مُنذُ %ldع</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>مُنذُ %ld سنة</string>
|
<string>مُنذُ %ldع</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.month.ago.abbr</key>
|
<key>date.month.ago.abbr</key>
|
||||||
|
@ -495,15 +495,15 @@
|
||||||
<key>zero</key>
|
<key>zero</key>
|
||||||
<string>مُنذُ لَحظة</string>
|
<string>مُنذُ لَحظة</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>مُنذُ شهر</string>
|
<string>مُنذُ %ldش</string>
|
||||||
<key>two</key>
|
<key>two</key>
|
||||||
<string>مُنذُ شهرين</string>
|
<string>مُنذُ %ldش</string>
|
||||||
<key>few</key>
|
<key>few</key>
|
||||||
<string>مُنذُ %ld أشهُر</string>
|
<string>مُنذُ %ldش</string>
|
||||||
<key>many</key>
|
<key>many</key>
|
||||||
<string>مُنذُ %ld شهرًا</string>
|
<string>مُنذُ %ldش</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>مُنذُ %ld شهر</string>
|
<string>مُنذُ %ldش</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.day.ago.abbr</key>
|
<key>date.day.ago.abbr</key>
|
||||||
|
@ -519,15 +519,15 @@
|
||||||
<key>zero</key>
|
<key>zero</key>
|
||||||
<string>مُنذُ لَحظة</string>
|
<string>مُنذُ لَحظة</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>مُنذُ يوم</string>
|
<string>مُنذُ %ldي</string>
|
||||||
<key>two</key>
|
<key>two</key>
|
||||||
<string>مُنذُ يومين</string>
|
<string>مُنذُ %ldي</string>
|
||||||
<key>few</key>
|
<key>few</key>
|
||||||
<string>مُنذُ %ld أيام</string>
|
<string>مُنذُ %ldي</string>
|
||||||
<key>many</key>
|
<key>many</key>
|
||||||
<string>مُنذُ %ld يومًا</string>
|
<string>مُنذُ %ldي</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>مُنذُ %ld يوم</string>
|
<string>مُنذُ %ldي</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.hour.ago.abbr</key>
|
<key>date.hour.ago.abbr</key>
|
||||||
|
@ -543,15 +543,15 @@
|
||||||
<key>zero</key>
|
<key>zero</key>
|
||||||
<string>مُنذُ لَحظة</string>
|
<string>مُنذُ لَحظة</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>مُنذُ ساعة</string>
|
<string>مُنذُ %ldس</string>
|
||||||
<key>two</key>
|
<key>two</key>
|
||||||
<string>مُنذُ ساعتين</string>
|
<string>مُنذُ %ldس</string>
|
||||||
<key>few</key>
|
<key>few</key>
|
||||||
<string>مُنذُ %ld ساعات</string>
|
<string>مُنذُ %ldس</string>
|
||||||
<key>many</key>
|
<key>many</key>
|
||||||
<string>مُنذُ %ld ساعةًَ</string>
|
<string>مُنذُ %ldس</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>مُنذُ %ld ساعة</string>
|
<string>مُنذُ %ldس</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.minute.ago.abbr</key>
|
<key>date.minute.ago.abbr</key>
|
||||||
|
@ -567,15 +567,15 @@
|
||||||
<key>zero</key>
|
<key>zero</key>
|
||||||
<string>مُنذُ لَحظة</string>
|
<string>مُنذُ لَحظة</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>مُنذُ دقيقة</string>
|
<string>مُنذُ %ldد</string>
|
||||||
<key>two</key>
|
<key>two</key>
|
||||||
<string>مُنذُ دقيقتان</string>
|
<string>مُنذُ %ldد</string>
|
||||||
<key>few</key>
|
<key>few</key>
|
||||||
<string>مُنذُ %ld دقائق</string>
|
<string>مُنذُ %ldد</string>
|
||||||
<key>many</key>
|
<key>many</key>
|
||||||
<string>مُنذُ %ld دقيقةً</string>
|
<string>مُنذُ %ldد</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>مُنذُ %ld دقيقة</string>
|
<string>مُنذُ %ldد</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.second.ago.abbr</key>
|
<key>date.second.ago.abbr</key>
|
||||||
|
@ -591,15 +591,15 @@
|
||||||
<key>zero</key>
|
<key>zero</key>
|
||||||
<string>مُنذُ لَحظة</string>
|
<string>مُنذُ لَحظة</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>مُنذُ ثانية</string>
|
<string>مُنذُ %ldث</string>
|
||||||
<key>two</key>
|
<key>two</key>
|
||||||
<string>مُنذُ ثانيتين</string>
|
<string>مُنذُ %ldث</string>
|
||||||
<key>few</key>
|
<key>few</key>
|
||||||
<string>مُنذُ %ld ثوان</string>
|
<string>مُنذُ %ldث</string>
|
||||||
<key>many</key>
|
<key>many</key>
|
||||||
<string>مُنذُ %ld ثانية</string>
|
<string>مُنذُ %ldث</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>مُنذُ %ld ثانية</string>
|
<string>مُنذُ %ldث</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "مَحو"
|
"clear": "مَحو"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "المنشورات",
|
||||||
|
"hashtags": "الوسوم",
|
||||||
|
"news": "الأخبار",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "مُفضَّلَتُك"
|
"title": "مُفضَّلَتُك"
|
||||||
},
|
},
|
||||||
|
|
|
@ -41,11 +41,11 @@
|
||||||
"block_entire_domain": "Bloquejar Domini"
|
"block_entire_domain": "Bloquejar Domini"
|
||||||
},
|
},
|
||||||
"save_photo_failure": {
|
"save_photo_failure": {
|
||||||
"title": "Desa l'Error de la Foto",
|
"title": "Error al Desar la Foto",
|
||||||
"message": "Activa el permís d'accés a la biblioteca de fotos per desar-la."
|
"message": "Activa el permís d'accés a la biblioteca de fotos per desar-la."
|
||||||
},
|
},
|
||||||
"delete_post": {
|
"delete_post": {
|
||||||
"title": "Estàs segur que vols suprimir aquesta publicació?",
|
"title": "Esborrar Publicació",
|
||||||
"message": "Estàs segur que vols suprimir aquesta publicació?"
|
"message": "Estàs segur que vols suprimir aquesta publicació?"
|
||||||
},
|
},
|
||||||
"clean_cache": {
|
"clean_cache": {
|
||||||
|
@ -83,7 +83,7 @@
|
||||||
"share_post": "Compartir Publicació",
|
"share_post": "Compartir Publicació",
|
||||||
"open_in_safari": "Obrir a Safari",
|
"open_in_safari": "Obrir a Safari",
|
||||||
"open_in_browser": "Obre al navegador",
|
"open_in_browser": "Obre al navegador",
|
||||||
"find_people": "Busca persones per seguir",
|
"find_people": "Busca persones a seguir",
|
||||||
"manually_search": "Cerca manualment a canvi",
|
"manually_search": "Cerca manualment a canvi",
|
||||||
"skip": "Omet",
|
"skip": "Omet",
|
||||||
"reply": "Respon",
|
"reply": "Respon",
|
||||||
|
@ -110,26 +110,26 @@
|
||||||
"previous_status": "Publicació anterior",
|
"previous_status": "Publicació anterior",
|
||||||
"next_status": "Publicació següent",
|
"next_status": "Publicació següent",
|
||||||
"open_status": "Obre la publicació",
|
"open_status": "Obre la publicació",
|
||||||
"open_author_profile": "Obre el perfil de l'autor",
|
"open_author_profile": "Obre el Perfil de l'Autor",
|
||||||
"open_reblogger_profile": "Obre el perfil del impulsor",
|
"open_reblogger_profile": "Obre el Perfil del Impulsor",
|
||||||
"reply_status": "Respon a la publicació",
|
"reply_status": "Respon a la Publicació",
|
||||||
"toggle_reblog": "Commuta l'impuls de la publicació",
|
"toggle_reblog": "Commuta l'Impuls de la Publicació",
|
||||||
"toggle_favorite": "Commuta el Favorit de la publicació",
|
"toggle_favorite": "Commuta el Favorit de la Publicació",
|
||||||
"toggle_content_warning": "Commuta l'Avís de Contingut",
|
"toggle_content_warning": "Commuta l'Avís de Contingut",
|
||||||
"preview_image": "Vista prèvia de l'Imatge"
|
"preview_image": "Vista prèvia de l'Imatge"
|
||||||
},
|
},
|
||||||
"segmented_control": {
|
"segmented_control": {
|
||||||
"previous_section": "Secció anterior",
|
"previous_section": "Secció Anterior",
|
||||||
"next_section": "Secció següent"
|
"next_section": "Secció Següent"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"status": {
|
"status": {
|
||||||
"user_reblogged": "%s ha impulsat",
|
"user_reblogged": "%s ha impulsat",
|
||||||
"user_replied_to": "Ha respòs a %s",
|
"user_replied_to": "Ha respòs a %s",
|
||||||
"show_post": "Mostra la publicació",
|
"show_post": "Mostra la Publicació",
|
||||||
"show_user_profile": "Mostra el perfil de l'usuari",
|
"show_user_profile": "Mostra el perfil de l'usuari",
|
||||||
"content_warning": "Advertència de Contingut",
|
"content_warning": "Advertència de Contingut",
|
||||||
"media_content_warning": "Toca qualsevol lloc per mostrar",
|
"media_content_warning": "Toca qualsevol lloc per a mostrar",
|
||||||
"tap_to_reveal": "Toca per a mostrar",
|
"tap_to_reveal": "Toca per a mostrar",
|
||||||
"poll": {
|
"poll": {
|
||||||
"vote": "Vota",
|
"vote": "Vota",
|
||||||
|
@ -187,15 +187,15 @@
|
||||||
"now": "Ara"
|
"now": "Ara"
|
||||||
},
|
},
|
||||||
"loader": {
|
"loader": {
|
||||||
"load_missing_posts": "Carrega les publicacions que falten",
|
"load_missing_posts": "Carrega les publicacions faltants",
|
||||||
"loading_missing_posts": "Carregant les publicacions que falten...",
|
"loading_missing_posts": "Carregant les publicacions faltants...",
|
||||||
"show_more_replies": "Mostra més respostes"
|
"show_more_replies": "Mostra més respostes"
|
||||||
},
|
},
|
||||||
"header": {
|
"header": {
|
||||||
"no_status_found": "No s'ha trobat cap publicació",
|
"no_status_found": "No s'ha trobat cap publicació",
|
||||||
"blocking_warning": "No pots veure el perfil d'aquest usuari\n fins que el desbloquegis.\nEl teu perfil els sembla així.",
|
"blocking_warning": "No pots veure el perfil d'aquest usuari\n fins que el desbloquegis.\nEl teu perfil els sembla així.",
|
||||||
"user_blocking_warning": "No pots veure el perfil de %s\n fins que el desbloquegis.\nEl teu perfil els sembla així.",
|
"user_blocking_warning": "No pots veure el perfil de %s\n fins que el desbloquegis.\nEl teu perfil els sembla així.",
|
||||||
"blocked_warning": "No pots veure el perfil d'aquest usuari\n fins que et desbloquegi.",
|
"blocked_warning": "No pots veure el perfil d'aquest usuari\nfins que et desbloquegi.",
|
||||||
"user_blocked_warning": "No pots veure el perfil de %s\n fins que et desbloquegi.",
|
"user_blocked_warning": "No pots veure el perfil de %s\n fins que et desbloquegi.",
|
||||||
"suspended_warning": "Aquest usuari ha estat suspès.",
|
"suspended_warning": "Aquest usuari ha estat suspès.",
|
||||||
"user_suspended_warning": "El compte de %s ha estat suspès."
|
"user_suspended_warning": "El compte de %s ha estat suspès."
|
||||||
|
@ -210,7 +210,7 @@
|
||||||
"log_in": "Inicia sessió"
|
"log_in": "Inicia sessió"
|
||||||
},
|
},
|
||||||
"server_picker": {
|
"server_picker": {
|
||||||
"title": "Tria un servidor,\nqualsevol servidor.",
|
"title": "Mastodon està fet d'usuaris en diferents comunitats.",
|
||||||
"subtitle": "Tria una comunitat segons els teus interessos, regió o una de propòsit general.",
|
"subtitle": "Tria una comunitat segons els teus interessos, regió o una de propòsit general.",
|
||||||
"subtitle_extend": "Tria una comunitat segons els teus interessos, regió o una de propòsit general. Cada comunitat és operada per una organització totalment independent o individualment.",
|
"subtitle_extend": "Tria una comunitat segons els teus interessos, regió o una de propòsit general. Cada comunitat és operada per una organització totalment independent o individualment.",
|
||||||
"button": {
|
"button": {
|
||||||
|
@ -271,7 +271,7 @@
|
||||||
"checked": "verificat",
|
"checked": "verificat",
|
||||||
"unchecked": "no verificat"
|
"unchecked": "no verificat"
|
||||||
},
|
},
|
||||||
"hint": "La teva contrasenya ha de tenir com a mínim buit caràcters"
|
"hint": "La teva contrasenya ha de tenir com a mínim vuit caràcters"
|
||||||
},
|
},
|
||||||
"invite": {
|
"invite": {
|
||||||
"registration_user_invite_request": "Perquè vols unir-te?"
|
"registration_user_invite_request": "Perquè vols unir-te?"
|
||||||
|
@ -299,7 +299,7 @@
|
||||||
"inclusion": "%s no és un valor suportat"
|
"inclusion": "%s no és un valor suportat"
|
||||||
},
|
},
|
||||||
"special": {
|
"special": {
|
||||||
"username_invalid": "El nom d'usuari només ha de contenir caràcters alfanumèrics i guions baixos",
|
"username_invalid": "El nom d'usuari ha de contenir només caràcters alfanumèrics i guions baixos",
|
||||||
"username_too_long": "El nom d'usuari és massa llarg (no pot ser més llarg de 30 caràcters)",
|
"username_too_long": "El nom d'usuari és massa llarg (no pot ser més llarg de 30 caràcters)",
|
||||||
"email_invalid": "Aquesta no és una adreça de correu electrònic vàlida",
|
"email_invalid": "Aquesta no és una adreça de correu electrònic vàlida",
|
||||||
"password_too_short": "La contrasenya és massa curta (ha de tenir 8 caràcters com a mínim)"
|
"password_too_short": "La contrasenya és massa curta (ha de tenir 8 caràcters com a mínim)"
|
||||||
|
@ -318,7 +318,7 @@
|
||||||
},
|
},
|
||||||
"confirm_email": {
|
"confirm_email": {
|
||||||
"title": "Una última cosa.",
|
"title": "Una última cosa.",
|
||||||
"subtitle": "Acabem d'enviar un correu electrònic a %s,\ntoca l'enllaç per a confirmar el teu compte.",
|
"subtitle": "Toca l'enllaç del correu electrònic que t'hem enviat per a confirmar el teu compte.",
|
||||||
"button": {
|
"button": {
|
||||||
"open_email_app": "Obre l'aplicació de correu",
|
"open_email_app": "Obre l'aplicació de correu",
|
||||||
"resend": "Reenvia"
|
"resend": "Reenvia"
|
||||||
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Neteja"
|
"clear": "Neteja"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Publicacions",
|
||||||
|
"hashtags": "Etiquetes",
|
||||||
|
"news": "Notícies",
|
||||||
|
"for_you": "Per a tu"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Els teus Favorits"
|
"title": "Els teus Favorits"
|
||||||
},
|
},
|
||||||
|
@ -543,7 +551,7 @@
|
||||||
"anyone": "algú",
|
"anyone": "algú",
|
||||||
"follower": "un seguidor",
|
"follower": "un seguidor",
|
||||||
"follow": "a qualsevol que segueixi",
|
"follow": "a qualsevol que segueixi",
|
||||||
"noone": "algú",
|
"noone": "ningú",
|
||||||
"title": "Notifica'm quan"
|
"title": "Notifica'm quan"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Clear"
|
"clear": "Clear"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Your Favorites"
|
"title": "Your Favorites"
|
||||||
},
|
},
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Clear"
|
"clear": "Clear"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Your Favorites"
|
"title": "Your Favorites"
|
||||||
},
|
},
|
||||||
|
|
|
@ -125,9 +125,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 reply</string>
|
<string>1 Antwort</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld replies</string>
|
<string>%ld Antworten</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.vote</key>
|
<key>plural.count.vote</key>
|
||||||
|
|
|
@ -130,7 +130,7 @@
|
||||||
"show_user_profile": "Benutzerprofil anzeigen",
|
"show_user_profile": "Benutzerprofil anzeigen",
|
||||||
"content_warning": "Inhaltswarnung",
|
"content_warning": "Inhaltswarnung",
|
||||||
"media_content_warning": "Tippe irgendwo zum Anzeigen",
|
"media_content_warning": "Tippe irgendwo zum Anzeigen",
|
||||||
"tap_to_reveal": "Tap to reveal",
|
"tap_to_reveal": "Zum Anzeigen tippen",
|
||||||
"poll": {
|
"poll": {
|
||||||
"vote": "Abstimmen",
|
"vote": "Abstimmen",
|
||||||
"closed": "Beendet"
|
"closed": "Beendet"
|
||||||
|
@ -143,10 +143,10 @@
|
||||||
"unfavorite": "Aus Favoriten entfernen",
|
"unfavorite": "Aus Favoriten entfernen",
|
||||||
"menu": "Menü",
|
"menu": "Menü",
|
||||||
"hide": "Verstecken",
|
"hide": "Verstecken",
|
||||||
"show_image": "Show image",
|
"show_image": "Bild anzeigen",
|
||||||
"show_gif": "Show GIF",
|
"show_gif": "GIF anzeigen",
|
||||||
"show_video_player": "Show video player",
|
"show_video_player": "Zeige Video-Player",
|
||||||
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
|
"tap_then_hold_to_show_menu": "Halte gedrückt um das Menü anzuzeigen"
|
||||||
},
|
},
|
||||||
"tag": {
|
"tag": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
|
@ -447,10 +447,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"accessibility": {
|
"accessibility": {
|
||||||
"show_avatar_image": "Show avatar image",
|
"show_avatar_image": "Profilbild anzeigen",
|
||||||
"edit_avatar_image": "Edit avatar image",
|
"edit_avatar_image": "Profilbild bearbeiten",
|
||||||
"show_banner_image": "Show banner image",
|
"show_banner_image": "Bannerbild anzeigen",
|
||||||
"double_tap_to_open_the_list": "Double tap to open the list"
|
"double_tap_to_open_the_list": "Doppeltippen, um die Liste zu öffnen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"follower": {
|
"follower": {
|
||||||
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Zurücksetzen"
|
"clear": "Zurücksetzen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Beiträge",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "Nachrichten",
|
||||||
|
"for_you": "Für dich"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Deine Favoriten"
|
"title": "Deine Favoriten"
|
||||||
},
|
},
|
||||||
|
@ -553,7 +561,7 @@
|
||||||
"disable_avatar_animation": "Animierte Profilbilder deaktivieren",
|
"disable_avatar_animation": "Animierte Profilbilder deaktivieren",
|
||||||
"disable_emoji_animation": "Animierte Emojis deaktivieren",
|
"disable_emoji_animation": "Animierte Emojis deaktivieren",
|
||||||
"using_default_browser": "Standardbrowser zum Öffnen von Links verwenden",
|
"using_default_browser": "Standardbrowser zum Öffnen von Links verwenden",
|
||||||
"open_links_in_mastodon": "Open links in Mastodon"
|
"open_links_in_mastodon": "Links in Mastodon öffnen"
|
||||||
},
|
},
|
||||||
"boring_zone": {
|
"boring_zone": {
|
||||||
"title": "Der langweilige Bereich",
|
"title": "Der langweilige Bereich",
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Clear"
|
"clear": "Clear"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Your Favorites"
|
"title": "Your Favorites"
|
||||||
},
|
},
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
"message": "Por favor, habilitá el permiso de acceso a la biblioteca de fotos para guardar la imagen."
|
"message": "Por favor, habilitá el permiso de acceso a la biblioteca de fotos para guardar la imagen."
|
||||||
},
|
},
|
||||||
"delete_post": {
|
"delete_post": {
|
||||||
"title": "¿Estás seguro que querés eliminar este mensaje?",
|
"title": "Eliminar mensaje",
|
||||||
"message": "¿Estás seguro que querés eliminar este mensaje?"
|
"message": "¿Estás seguro que querés eliminar este mensaje?"
|
||||||
},
|
},
|
||||||
"clean_cache": {
|
"clean_cache": {
|
||||||
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Limpiar"
|
"clear": "Limpiar"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Mensajes",
|
||||||
|
"hashtags": "Etiquetas",
|
||||||
|
"news": "Novedades",
|
||||||
|
"for_you": "Para vos"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Tus favoritos"
|
"title": "Tus favoritos"
|
||||||
},
|
},
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Borrar"
|
"clear": "Borrar"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Tus Favoritos"
|
"title": "Tus Favoritos"
|
||||||
},
|
},
|
||||||
|
|
|
@ -125,9 +125,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 reply</string>
|
<string>Erantzun bat</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld replies</string>
|
<string>%ld erantzun</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.vote</key>
|
<key>plural.count.vote</key>
|
||||||
|
|
|
@ -130,7 +130,7 @@
|
||||||
"show_user_profile": "Erakutsi erabiltzailearen profila",
|
"show_user_profile": "Erakutsi erabiltzailearen profila",
|
||||||
"content_warning": "Edukiaren abisua",
|
"content_warning": "Edukiaren abisua",
|
||||||
"media_content_warning": "Ukitu edonon bistaratzeko",
|
"media_content_warning": "Ukitu edonon bistaratzeko",
|
||||||
"tap_to_reveal": "Tap to reveal",
|
"tap_to_reveal": "Sakatu erakusteko",
|
||||||
"poll": {
|
"poll": {
|
||||||
"vote": "Bozkatu",
|
"vote": "Bozkatu",
|
||||||
"closed": "Itxita"
|
"closed": "Itxita"
|
||||||
|
@ -143,10 +143,10 @@
|
||||||
"unfavorite": "Kendu gogokoa",
|
"unfavorite": "Kendu gogokoa",
|
||||||
"menu": "Menua",
|
"menu": "Menua",
|
||||||
"hide": "Ezkutatu",
|
"hide": "Ezkutatu",
|
||||||
"show_image": "Show image",
|
"show_image": "Erakutsi irudia",
|
||||||
"show_gif": "Show GIF",
|
"show_gif": "Erakutsi GIFa",
|
||||||
"show_video_player": "Show video player",
|
"show_video_player": "Erakutsi bideo-erreproduzigailua",
|
||||||
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
|
"tap_then_hold_to_show_menu": "Sakatu eta eutsi menua erakusteko"
|
||||||
},
|
},
|
||||||
"tag": {
|
"tag": {
|
||||||
"url": "URLa",
|
"url": "URLa",
|
||||||
|
@ -447,10 +447,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"accessibility": {
|
"accessibility": {
|
||||||
"show_avatar_image": "Show avatar image",
|
"show_avatar_image": "Erakutsi abatarra",
|
||||||
"edit_avatar_image": "Edit avatar image",
|
"edit_avatar_image": "Editatu abatarra",
|
||||||
"show_banner_image": "Show banner image",
|
"show_banner_image": "Erakutsi banner irudia",
|
||||||
"double_tap_to_open_the_list": "Double tap to open the list"
|
"double_tap_to_open_the_list": "Sakatu birritan zerrenda irekitzeko"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"follower": {
|
"follower": {
|
||||||
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Garbitu"
|
"clear": "Garbitu"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Zure gogokoak"
|
"title": "Zure gogokoak"
|
||||||
},
|
},
|
||||||
|
@ -502,8 +510,8 @@
|
||||||
},
|
},
|
||||||
"notification_description": {
|
"notification_description": {
|
||||||
"followed_you": "zu jarraitzen hasi da",
|
"followed_you": "zu jarraitzen hasi da",
|
||||||
"favorited_your_post": "erabiltzaileak zure bidalketa gogoko du",
|
"favorited_your_post": "(e)k zure bidalketa gogoko du",
|
||||||
"reblogged_your_post": "erabiltzaileak bultzada eman dio zure bidalketari",
|
"reblogged_your_post": "(e)k bultzada eman dio zure bidalketari",
|
||||||
"mentioned_you": "erabiltzaileak aipatu zaitu",
|
"mentioned_you": "erabiltzaileak aipatu zaitu",
|
||||||
"request_to_follow_you": "erabiltzaileak zu jarraitzea eskatu du",
|
"request_to_follow_you": "erabiltzaileak zu jarraitzea eskatu du",
|
||||||
"poll_has_ended": "inkesta amaitu da"
|
"poll_has_ended": "inkesta amaitu da"
|
||||||
|
@ -553,7 +561,7 @@
|
||||||
"disable_avatar_animation": "Desgaitu abatar animatuak",
|
"disable_avatar_animation": "Desgaitu abatar animatuak",
|
||||||
"disable_emoji_animation": "Desgaitu emoji animatuak",
|
"disable_emoji_animation": "Desgaitu emoji animatuak",
|
||||||
"using_default_browser": "Erabili nabigatzaile lehenetsia estekak irekitzeko",
|
"using_default_browser": "Erabili nabigatzaile lehenetsia estekak irekitzeko",
|
||||||
"open_links_in_mastodon": "Open links in Mastodon"
|
"open_links_in_mastodon": "Ireki estekak Mastodonen"
|
||||||
},
|
},
|
||||||
"boring_zone": {
|
"boring_zone": {
|
||||||
"title": "Eremu aspergarria",
|
"title": "Eremu aspergarria",
|
||||||
|
|
|
@ -125,9 +125,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 reply</string>
|
<string>1 réponse</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld replies</string>
|
<string>%ld réponses</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.vote</key>
|
<key>plural.count.vote</key>
|
||||||
|
|
|
@ -130,7 +130,7 @@
|
||||||
"show_user_profile": "Montrer le profil de l’utilisateur·rice",
|
"show_user_profile": "Montrer le profil de l’utilisateur·rice",
|
||||||
"content_warning": "Avertissement de contenu",
|
"content_warning": "Avertissement de contenu",
|
||||||
"media_content_warning": "Tapotez n’importe où pour révéler la publication",
|
"media_content_warning": "Tapotez n’importe où pour révéler la publication",
|
||||||
"tap_to_reveal": "Tap to reveal",
|
"tap_to_reveal": "Appuyer pour afficher",
|
||||||
"poll": {
|
"poll": {
|
||||||
"vote": "Voter",
|
"vote": "Voter",
|
||||||
"closed": "Fermé"
|
"closed": "Fermé"
|
||||||
|
@ -143,9 +143,9 @@
|
||||||
"unfavorite": "Retirer des favoris",
|
"unfavorite": "Retirer des favoris",
|
||||||
"menu": "Menu",
|
"menu": "Menu",
|
||||||
"hide": "Cacher",
|
"hide": "Cacher",
|
||||||
"show_image": "Show image",
|
"show_image": "Afficher l’image",
|
||||||
"show_gif": "Show GIF",
|
"show_gif": "Afficher le GIF",
|
||||||
"show_video_player": "Show video player",
|
"show_video_player": "Afficher le lecteur vidéo",
|
||||||
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
|
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
|
||||||
},
|
},
|
||||||
"tag": {
|
"tag": {
|
||||||
|
@ -447,10 +447,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"accessibility": {
|
"accessibility": {
|
||||||
"show_avatar_image": "Show avatar image",
|
"show_avatar_image": "Afficher l’avatar",
|
||||||
"edit_avatar_image": "Edit avatar image",
|
"edit_avatar_image": "Modifier l’avatar",
|
||||||
"show_banner_image": "Show banner image",
|
"show_banner_image": "Afficher l’image de la bannière",
|
||||||
"double_tap_to_open_the_list": "Double tap to open the list"
|
"double_tap_to_open_the_list": "Appuyer deux fois pour ouvrir la liste"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"follower": {
|
"follower": {
|
||||||
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Effacer"
|
"clear": "Effacer"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Messages",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "Actualité",
|
||||||
|
"for_you": "Pour vous"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Vos favoris"
|
"title": "Vos favoris"
|
||||||
},
|
},
|
||||||
|
@ -553,7 +561,7 @@
|
||||||
"disable_avatar_animation": "Désactiver les avatars animés",
|
"disable_avatar_animation": "Désactiver les avatars animés",
|
||||||
"disable_emoji_animation": "Désactiver les émojis animées",
|
"disable_emoji_animation": "Désactiver les émojis animées",
|
||||||
"using_default_browser": "Utiliser le navigateur par défaut pour ouvrir les liens",
|
"using_default_browser": "Utiliser le navigateur par défaut pour ouvrir les liens",
|
||||||
"open_links_in_mastodon": "Open links in Mastodon"
|
"open_links_in_mastodon": "Ouvrir les liens dans Mastodon"
|
||||||
},
|
},
|
||||||
"boring_zone": {
|
"boring_zone": {
|
||||||
"title": "La zone ennuyante",
|
"title": "La zone ennuyante",
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Falamhaich"
|
"clear": "Falamhaich"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Na h-annsachdan agad"
|
"title": "Na h-annsachdan agad"
|
||||||
},
|
},
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Clear"
|
"clear": "Clear"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Your Favorites"
|
"title": "Your Favorites"
|
||||||
},
|
},
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Hapus"
|
"clear": "Hapus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Your Favorites"
|
"title": "Your Favorites"
|
||||||
},
|
},
|
||||||
|
|
|
@ -95,7 +95,7 @@
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 preferito</string>
|
<string>1 preferito</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld favorites</string>
|
<string>%ld preferiti</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.reblog</key>
|
<key>plural.count.reblog</key>
|
||||||
|
@ -189,9 +189,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 seguace</string>
|
<string>1 following</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld following</string>
|
<string>%ld stanno seguendo</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.follower</key>
|
<key>plural.count.follower</key>
|
||||||
|
@ -205,9 +205,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 follower</string>
|
<string>1 seguace</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld followers</string>
|
<string>%ld seguaci</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.year.left</key>
|
<key>date.year.left</key>
|
||||||
|
@ -221,9 +221,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 year left</string>
|
<string>1 anno rimasto</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld years left</string>
|
<string>%ld anni rimasti</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.month.left</key>
|
<key>date.month.left</key>
|
||||||
|
@ -237,9 +237,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 months left</string>
|
<string>1 mese rimasto</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld months left</string>
|
<string>%ld mesi rimasti</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.day.left</key>
|
<key>date.day.left</key>
|
||||||
|
@ -253,9 +253,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 day left</string>
|
<string>1 giorno rimasto</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld days left</string>
|
<string>%ld giorni rimasti</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.hour.left</key>
|
<key>date.hour.left</key>
|
||||||
|
@ -269,9 +269,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 hour left</string>
|
<string>1 ora rimasta</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld hours left</string>
|
<string>%ld ore rimaste</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.minute.left</key>
|
<key>date.minute.left</key>
|
||||||
|
@ -285,9 +285,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 minute left</string>
|
<string>1 minuto rimasto</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld minutes left</string>
|
<string>%ld minuti rimasti</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.second.left</key>
|
<key>date.second.left</key>
|
||||||
|
@ -301,9 +301,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 second left</string>
|
<string>1 secondo rimasto</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld seconds left</string>
|
<string>%ld secondi rimasti</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.year.ago.abbr</key>
|
<key>date.year.ago.abbr</key>
|
||||||
|
@ -317,9 +317,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1y ago</string>
|
<string>1 anno fa</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ldy ago</string>
|
<string>%ld anni fa</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.month.ago.abbr</key>
|
<key>date.month.ago.abbr</key>
|
||||||
|
@ -333,9 +333,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1M ago</string>
|
<string>1 mese fa</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ldM ago</string>
|
<string>%ld mesi fa</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.day.ago.abbr</key>
|
<key>date.day.ago.abbr</key>
|
||||||
|
@ -349,9 +349,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1d ago</string>
|
<string>1 giorno fa</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ldd ago</string>
|
<string>%ld giorni fa</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.hour.ago.abbr</key>
|
<key>date.hour.ago.abbr</key>
|
||||||
|
@ -365,9 +365,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1h ago</string>
|
<string>1 ora fa</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ldh ago</string>
|
<string>%ld ore fa</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.minute.ago.abbr</key>
|
<key>date.minute.ago.abbr</key>
|
||||||
|
@ -381,9 +381,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1m ago</string>
|
<string>1 minuto fa</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ldm ago</string>
|
<string>%ld minuti fa</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.second.ago.abbr</key>
|
<key>date.second.ago.abbr</key>
|
||||||
|
@ -397,9 +397,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1s ago</string>
|
<string>1 secondo fa</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%lds ago</string>
|
<string>%ld secondi fa</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
|
|
@ -80,71 +80,71 @@
|
||||||
"preview": "Anteprima",
|
"preview": "Anteprima",
|
||||||
"share": "Condividi",
|
"share": "Condividi",
|
||||||
"share_user": "Condividi %s",
|
"share_user": "Condividi %s",
|
||||||
"share_post": "Share Post",
|
"share_post": "Condividi il post",
|
||||||
"open_in_safari": "Open in Safari",
|
"open_in_safari": "Apri su Safari",
|
||||||
"open_in_browser": "Open in Browser",
|
"open_in_browser": "Apri nel browser",
|
||||||
"find_people": "Find people to follow",
|
"find_people": "Trova persone da seguire",
|
||||||
"manually_search": "Manually search instead",
|
"manually_search": "Cerca manualmente invece",
|
||||||
"skip": "Skip",
|
"skip": "Salta",
|
||||||
"reply": "Reply",
|
"reply": "Rispondi",
|
||||||
"report_user": "Report %s",
|
"report_user": "Segnala %s",
|
||||||
"block_domain": "Block %s",
|
"block_domain": "Blocca %s",
|
||||||
"unblock_domain": "Unblock %s",
|
"unblock_domain": "Sblocca %s",
|
||||||
"settings": "Settings",
|
"settings": "Impostazioni",
|
||||||
"delete": "Delete"
|
"delete": "Elimina"
|
||||||
},
|
},
|
||||||
"tabs": {
|
"tabs": {
|
||||||
"home": "Home",
|
"home": "Inizio",
|
||||||
"search": "Search",
|
"search": "Cerca",
|
||||||
"notification": "Notification",
|
"notification": "Notifiche",
|
||||||
"profile": "Profile"
|
"profile": "Profilo"
|
||||||
},
|
},
|
||||||
"keyboard": {
|
"keyboard": {
|
||||||
"common": {
|
"common": {
|
||||||
"switch_to_tab": "Switch to %s",
|
"switch_to_tab": "Passa a %s",
|
||||||
"compose_new_post": "Compose New Post",
|
"compose_new_post": "Componi un nuovo post",
|
||||||
"show_favorites": "Show Favorites",
|
"show_favorites": "Mostra preferiti",
|
||||||
"open_settings": "Open Settings"
|
"open_settings": "Apri Impostazioni"
|
||||||
},
|
},
|
||||||
"timeline": {
|
"timeline": {
|
||||||
"previous_status": "Previous Post",
|
"previous_status": "Post precedente",
|
||||||
"next_status": "Next Post",
|
"next_status": "Post successivo",
|
||||||
"open_status": "Open Post",
|
"open_status": "Apri il post",
|
||||||
"open_author_profile": "Open Author's Profile",
|
"open_author_profile": "Apri il profilo dell'autore",
|
||||||
"open_reblogger_profile": "Open Reblogger's Profile",
|
"open_reblogger_profile": "Apri il profilo di chi ha condiviso",
|
||||||
"reply_status": "Reply to Post",
|
"reply_status": "Rispondi al post",
|
||||||
"toggle_reblog": "Toggle Reblog on Post",
|
"toggle_reblog": "Attiva/Disattiva condivisione sul post",
|
||||||
"toggle_favorite": "Toggle Favorite on Post",
|
"toggle_favorite": "Attiva/Disattiva preferito nel post",
|
||||||
"toggle_content_warning": "Toggle Content Warning",
|
"toggle_content_warning": "Attiva/Disattiva avvertimento contenuti",
|
||||||
"preview_image": "Preview Image"
|
"preview_image": "Anteprima immagine"
|
||||||
},
|
},
|
||||||
"segmented_control": {
|
"segmented_control": {
|
||||||
"previous_section": "Previous Section",
|
"previous_section": "Sezione precedente",
|
||||||
"next_section": "Next Section"
|
"next_section": "Sezione successiva"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"status": {
|
"status": {
|
||||||
"user_reblogged": "%s reblogged",
|
"user_reblogged": "%s hanno condiviso",
|
||||||
"user_replied_to": "Replied to %s",
|
"user_replied_to": "Rispondi a %s",
|
||||||
"show_post": "Show Post",
|
"show_post": "Mostra il post",
|
||||||
"show_user_profile": "Show user profile",
|
"show_user_profile": "Mostra il profilo dell'utente",
|
||||||
"content_warning": "Content Warning",
|
"content_warning": "Avviso sul contenuto",
|
||||||
"media_content_warning": "Tap anywhere to reveal",
|
"media_content_warning": "Tocca ovunque per rivelare",
|
||||||
"tap_to_reveal": "Tap to reveal",
|
"tap_to_reveal": "Tocca per rivelare",
|
||||||
"poll": {
|
"poll": {
|
||||||
"vote": "Vote",
|
"vote": "Vota",
|
||||||
"closed": "Closed"
|
"closed": "Chiuso"
|
||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"reply": "Reply",
|
"reply": "Rispondi",
|
||||||
"reblog": "Reblog",
|
"reblog": "Condivisione",
|
||||||
"unreblog": "Undo reblog",
|
"unreblog": "Annulla condivisione",
|
||||||
"favorite": "Favorite",
|
"favorite": "Preferito",
|
||||||
"unfavorite": "Unfavorite",
|
"unfavorite": "Non preferito",
|
||||||
"menu": "Menu",
|
"menu": "Menù",
|
||||||
"hide": "Hide",
|
"hide": "Nascondi",
|
||||||
"show_image": "Show image",
|
"show_image": "Mostra immagine",
|
||||||
"show_gif": "Show GIF",
|
"show_gif": "Mostra GIF",
|
||||||
"show_video_player": "Mostra lettore video",
|
"show_video_player": "Mostra lettore video",
|
||||||
"tap_then_hold_to_show_menu": "Tocca quindi tieni premuto per mostrare il menu"
|
"tap_then_hold_to_show_menu": "Tocca quindi tieni premuto per mostrare il menu"
|
||||||
},
|
},
|
||||||
|
@ -219,88 +219,88 @@
|
||||||
"all_accessiblity_description": "Categoria: Tutti",
|
"all_accessiblity_description": "Categoria: Tutti",
|
||||||
"academia": "accademia",
|
"academia": "accademia",
|
||||||
"activism": "attivismo",
|
"activism": "attivismo",
|
||||||
"food": "food",
|
"food": "cibo",
|
||||||
"furry": "furry",
|
"furry": "peloso",
|
||||||
"games": "games",
|
"games": "giochi",
|
||||||
"general": "general",
|
"general": "generale",
|
||||||
"journalism": "journalism",
|
"journalism": "giornalismo",
|
||||||
"lgbt": "lgbt",
|
"lgbt": "lgbt",
|
||||||
"regional": "regional",
|
"regional": "locale",
|
||||||
"art": "art",
|
"art": "arte",
|
||||||
"music": "music",
|
"music": "musica",
|
||||||
"tech": "tech"
|
"tech": "tecnologia"
|
||||||
},
|
},
|
||||||
"see_less": "See Less",
|
"see_less": "Vedi meno",
|
||||||
"see_more": "See More"
|
"see_more": "Vedi di più"
|
||||||
},
|
},
|
||||||
"label": {
|
"label": {
|
||||||
"language": "LANGUAGE",
|
"language": "LINGUA",
|
||||||
"users": "USERS",
|
"users": "UTENTI",
|
||||||
"category": "CATEGORY"
|
"category": "CATEGORIA"
|
||||||
},
|
},
|
||||||
"input": {
|
"input": {
|
||||||
"placeholder": "Search communities"
|
"placeholder": "Cerca comunità"
|
||||||
},
|
},
|
||||||
"empty_state": {
|
"empty_state": {
|
||||||
"finding_servers": "Finding available servers...",
|
"finding_servers": "Ricerca server disponibili...",
|
||||||
"bad_network": "Something went wrong while loading the data. Check your internet connection.",
|
"bad_network": "Qualcosa è andato storto durante il caricamento dei dati. Controlla la tua connessione internet.",
|
||||||
"no_results": "No results"
|
"no_results": "Nessun risultato"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"register": {
|
"register": {
|
||||||
"title": "Let’s get you set up on %s",
|
"title": "Facciamo in modo che sia configurato il %s",
|
||||||
"input": {
|
"input": {
|
||||||
"avatar": {
|
"avatar": {
|
||||||
"delete": "Delete"
|
"delete": "Elimina"
|
||||||
},
|
},
|
||||||
"username": {
|
"username": {
|
||||||
"placeholder": "username",
|
"placeholder": "nome utente",
|
||||||
"duplicate_prompt": "This username is taken."
|
"duplicate_prompt": "Questo nome utente è già stato preso."
|
||||||
},
|
},
|
||||||
"display_name": {
|
"display_name": {
|
||||||
"placeholder": "display name"
|
"placeholder": "visualizza nome"
|
||||||
},
|
},
|
||||||
"email": {
|
"email": {
|
||||||
"placeholder": "email"
|
"placeholder": "email"
|
||||||
},
|
},
|
||||||
"password": {
|
"password": {
|
||||||
"placeholder": "password",
|
"placeholder": "password",
|
||||||
"require": "Your password needs at least:",
|
"require": "La tua password ha bisogno di almeno:",
|
||||||
"character_limit": "8 characters",
|
"character_limit": "8 caratteri",
|
||||||
"accessibility": {
|
"accessibility": {
|
||||||
"checked": "checked",
|
"checked": "verificato",
|
||||||
"unchecked": "unchecked"
|
"unchecked": "non verificato"
|
||||||
},
|
},
|
||||||
"hint": "Your password needs at least eight characters"
|
"hint": "La tua password deve essere di almeno 8 caratteri"
|
||||||
},
|
},
|
||||||
"invite": {
|
"invite": {
|
||||||
"registration_user_invite_request": "Why do you want to join?"
|
"registration_user_invite_request": "Perché vuoi unirti?"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"item": {
|
"item": {
|
||||||
"username": "Username",
|
"username": "Nome utente",
|
||||||
"email": "Email",
|
"email": "Email",
|
||||||
"password": "Password",
|
"password": "Password",
|
||||||
"agreement": "Agreement",
|
"agreement": "Accordo",
|
||||||
"locale": "Locale",
|
"locale": "Locale",
|
||||||
"reason": "Reason"
|
"reason": "Motivo"
|
||||||
},
|
},
|
||||||
"reason": {
|
"reason": {
|
||||||
"blocked": "%s contains a disallowed email provider",
|
"blocked": "%s contiene un provider email non consentito",
|
||||||
"unreachable": "%s does not seem to exist",
|
"unreachable": "%s non sembra esistere",
|
||||||
"taken": "%s is already in use",
|
"taken": "%s è già in uso",
|
||||||
"reserved": "%s is a reserved keyword",
|
"reserved": "%s è una parola chiave riservata",
|
||||||
"accepted": "%s must be accepted",
|
"accepted": "%s deve essere accettato",
|
||||||
"blank": "%s is required",
|
"blank": "%s è richiesto",
|
||||||
"invalid": "%s is invalid",
|
"invalid": "%s non è valido",
|
||||||
"too_long": "%s is too long",
|
"too_long": "%s è troppo lungo",
|
||||||
"too_short": "%s is too short",
|
"too_short": "%s è troppo corto",
|
||||||
"inclusion": "%s is not a supported value"
|
"inclusion": "%s non è un valore supportato"
|
||||||
},
|
},
|
||||||
"special": {
|
"special": {
|
||||||
"username_invalid": "Username must only contain alphanumeric characters and underscores",
|
"username_invalid": "Il nome utente deve contenere solo caratteri alfanumerici e trattini bassi",
|
||||||
"username_too_long": "Username is too long (can’t be longer than 30 characters)",
|
"username_too_long": "Il nome utente è troppo lungo (non può essere più lungo di 30 caratteri)",
|
||||||
"email_invalid": "Questo non è un indirizzo email valido",
|
"email_invalid": "Questo non è un indirizzo email valido",
|
||||||
"password_too_short": "La password è troppo corta (deve contenere almeno 8 caratteri)"
|
"password_too_short": "La password è troppo corta (deve contenere almeno 8 caratteri)"
|
||||||
}
|
}
|
||||||
|
@ -384,97 +384,97 @@
|
||||||
"visibility": {
|
"visibility": {
|
||||||
"public": "Pubblico",
|
"public": "Pubblico",
|
||||||
"unlisted": "Non elencato",
|
"unlisted": "Non elencato",
|
||||||
"private": "Followers only",
|
"private": "Solo i seguaci",
|
||||||
"direct": "Only people I mention"
|
"direct": "Solo le persone che menziono"
|
||||||
},
|
},
|
||||||
"auto_complete": {
|
"auto_complete": {
|
||||||
"space_to_add": "Space to add"
|
"space_to_add": "Spazio da aggiungere"
|
||||||
},
|
},
|
||||||
"accessibility": {
|
"accessibility": {
|
||||||
"append_attachment": "Add Attachment",
|
"append_attachment": "Aggiungi allegato",
|
||||||
"append_poll": "Add Poll",
|
"append_poll": "Aggiungi sondaggio",
|
||||||
"remove_poll": "Remove Poll",
|
"remove_poll": "Elimina sondaggio",
|
||||||
"custom_emoji_picker": "Custom Emoji Picker",
|
"custom_emoji_picker": "Selettore Emoji personalizzato",
|
||||||
"enable_content_warning": "Enable Content Warning",
|
"enable_content_warning": "Abilita avvertimento contenuti",
|
||||||
"disable_content_warning": "Disable Content Warning",
|
"disable_content_warning": "Disabilita avviso di contenuti",
|
||||||
"post_visibility_menu": "Post Visibility Menu"
|
"post_visibility_menu": "Menu di visibilità del post"
|
||||||
},
|
},
|
||||||
"keyboard": {
|
"keyboard": {
|
||||||
"discard_post": "Discard Post",
|
"discard_post": "Scarta post",
|
||||||
"publish_post": "Publish Post",
|
"publish_post": "Pubblica il post",
|
||||||
"toggle_poll": "Toggle Poll",
|
"toggle_poll": "Attiva/Disattiva Sondaggio",
|
||||||
"toggle_content_warning": "Toggle Content Warning",
|
"toggle_content_warning": "Attiva/Disattiva avviso contenuti",
|
||||||
"append_attachment_entry": "Add Attachment - %s",
|
"append_attachment_entry": "Aggiungi allegato - %s",
|
||||||
"select_visibility_entry": "Select Visibility - %s"
|
"select_visibility_entry": "Seleziona visibilità - %s"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"posts": "posts",
|
"posts": "post",
|
||||||
"following": "following",
|
"following": "seguendo",
|
||||||
"followers": "followers"
|
"followers": "seguaci"
|
||||||
},
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
"add_row": "Add Row",
|
"add_row": "Aggiungi riga",
|
||||||
"placeholder": {
|
"placeholder": {
|
||||||
"label": "Label",
|
"label": "Etichetta",
|
||||||
"content": "Content"
|
"content": "Contenuto"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"segmented_control": {
|
"segmented_control": {
|
||||||
"posts": "Posts",
|
"posts": "Post",
|
||||||
"replies": "Replies",
|
"replies": "Risposte",
|
||||||
"posts_and_replies": "Posts and Replies",
|
"posts_and_replies": "Post e risposte",
|
||||||
"media": "Media",
|
"media": "Media",
|
||||||
"about": "About"
|
"about": "Info su"
|
||||||
},
|
},
|
||||||
"relationship_action_alert": {
|
"relationship_action_alert": {
|
||||||
"confirm_mute_user": {
|
"confirm_mute_user": {
|
||||||
"title": "Mute Account",
|
"title": "Silenzia account",
|
||||||
"message": "Confirm to mute %s"
|
"message": "Confermi di silenziare %s"
|
||||||
},
|
},
|
||||||
"confirm_unmute_user": {
|
"confirm_unmute_user": {
|
||||||
"title": "Unmute Account",
|
"title": "Riattiva account",
|
||||||
"message": "Confirm to unmute %s"
|
"message": "Confermi di riattivare %s"
|
||||||
},
|
},
|
||||||
"confirm_block_user": {
|
"confirm_block_user": {
|
||||||
"title": "Block Account",
|
"title": "Blocca account",
|
||||||
"message": "Confirm to block %s"
|
"message": "Confermi di bloccare %s"
|
||||||
},
|
},
|
||||||
"confirm_unblock_user": {
|
"confirm_unblock_user": {
|
||||||
"title": "Unblock Account",
|
"title": "Sblocca account",
|
||||||
"message": "Confirm to unblock %s"
|
"message": "Conferma per sbloccare %s"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"accessibility": {
|
"accessibility": {
|
||||||
"show_avatar_image": "Show avatar image",
|
"show_avatar_image": "Mostra immagine avatar",
|
||||||
"edit_avatar_image": "Edit avatar image",
|
"edit_avatar_image": "Modifica immagine avatar",
|
||||||
"show_banner_image": "Show banner image",
|
"show_banner_image": "Mostra immagine banner",
|
||||||
"double_tap_to_open_the_list": "Double tap to open the list"
|
"double_tap_to_open_the_list": "Doppio tocco per aprire la lista"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"follower": {
|
"follower": {
|
||||||
"footer": "Followers from other servers are not displayed."
|
"footer": "I seguaci da altri server non vengono visualizzati."
|
||||||
},
|
},
|
||||||
"following": {
|
"following": {
|
||||||
"footer": "Follows from other servers are not displayed."
|
"footer": "I follow da altri server non vengono visualizzati."
|
||||||
},
|
},
|
||||||
"search": {
|
"search": {
|
||||||
"title": "Search",
|
"title": "Cerca",
|
||||||
"search_bar": {
|
"search_bar": {
|
||||||
"placeholder": "Search hashtags and users",
|
"placeholder": "Cerca hashtag e utenti",
|
||||||
"cancel": "Cancel"
|
"cancel": "Annulla"
|
||||||
},
|
},
|
||||||
"recommend": {
|
"recommend": {
|
||||||
"button_text": "See All",
|
"button_text": "Vedi tutto",
|
||||||
"hash_tag": {
|
"hash_tag": {
|
||||||
"title": "Trending on Mastodon",
|
"title": "Di tendenza su Mastodon",
|
||||||
"description": "Hashtags that are getting quite a bit of attention",
|
"description": "Hashtag che stanno ottenendo un bel po' di attenzione",
|
||||||
"people_talking": "%s people are talking"
|
"people_talking": "%s persone ne parlano"
|
||||||
},
|
},
|
||||||
"accounts": {
|
"accounts": {
|
||||||
"title": "Accounts you might like",
|
"title": "Account che potrebbero piacerti",
|
||||||
"description": "You may like to follow these accounts",
|
"description": "Potresti voler seguire questi account",
|
||||||
"follow": "Segui"
|
"follow": "Segui"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Cancella"
|
"clear": "Cancella"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Post",
|
||||||
|
"hashtags": "Hashtag",
|
||||||
|
"news": "Notizie",
|
||||||
|
"for_you": "Per Te"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "I tuoi preferiti"
|
"title": "I tuoi preferiti"
|
||||||
},
|
},
|
||||||
|
@ -559,50 +567,50 @@
|
||||||
"title": "La zona boring",
|
"title": "La zona boring",
|
||||||
"account_settings": "Impostazioni account",
|
"account_settings": "Impostazioni account",
|
||||||
"terms": "Termini di servizio",
|
"terms": "Termini di servizio",
|
||||||
"privacy": "Privacy Policy"
|
"privacy": "Politica sulla Privacy"
|
||||||
},
|
},
|
||||||
"spicy_zone": {
|
"spicy_zone": {
|
||||||
"title": "The Spicy Zone",
|
"title": "La zona piccante",
|
||||||
"clear": "Clear Media Cache",
|
"clear": "Cancella la cache multimediale",
|
||||||
"signout": "Sign Out"
|
"signout": "Esci"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)"
|
"mastodon_description": "Mastodon è un software open source. Puoi segnalare problemi su GitHub a %s (%s)"
|
||||||
},
|
},
|
||||||
"keyboard": {
|
"keyboard": {
|
||||||
"close_settings_window": "Close Settings Window"
|
"close_settings_window": "Chiudi la finestra Impostazioni"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"report": {
|
"report": {
|
||||||
"title_report": "Report",
|
"title_report": "Segnala",
|
||||||
"title": "Report %s",
|
"title": "Segnala %s",
|
||||||
"step1": "Step 1 of 2",
|
"step1": "Fase 1 di 2",
|
||||||
"step2": "Step 2 of 2",
|
"step2": "Fase 2 di 2",
|
||||||
"content1": "Are there any other posts you’d like to add to the report?",
|
"content1": "Ci sono altri post che vorresti aggiungere alla segnalazione?",
|
||||||
"content2": "Is there anything the moderators should know about this report?",
|
"content2": "C'è qualcosa che i moderatori dovrebbero sapere su questa segnalazione?",
|
||||||
"report_sent_title": "Thanks for reporting, we’ll look into this.",
|
"report_sent_title": "Grazie per la segnalazione, esamineremo questo aspetto.",
|
||||||
"send": "Send Report",
|
"send": "Invia segnalazione",
|
||||||
"skip_to_send": "Send without comment",
|
"skip_to_send": "Invia senza commento",
|
||||||
"text_placeholder": "Type or paste additional comments",
|
"text_placeholder": "Digita o incolla commenti aggiuntivi",
|
||||||
"reported": "REPORTED"
|
"reported": "SEGNALATO"
|
||||||
},
|
},
|
||||||
"preview": {
|
"preview": {
|
||||||
"keyboard": {
|
"keyboard": {
|
||||||
"close_preview": "Close Preview",
|
"close_preview": "Chiudi anteprima",
|
||||||
"show_next": "Show Next",
|
"show_next": "Mostra successivo",
|
||||||
"show_previous": "Show Previous"
|
"show_previous": "Mostra precedente"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"account_list": {
|
"account_list": {
|
||||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
"tab_bar_hint": "Profilo corrente selezionato: %s. Doppio tocco e tieni premuto per mostrare il cambio account",
|
||||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
"dismiss_account_switcher": "Ignora il cambio account",
|
||||||
"add_account": "Add Account"
|
"add_account": "Aggiungi account"
|
||||||
},
|
},
|
||||||
"wizard": {
|
"wizard": {
|
||||||
"new_in_mastodon": "New in Mastodon",
|
"new_in_mastodon": "Nuovo su Mastodon",
|
||||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
"multiple_account_switch_intro_description": "Passa tra più account tenendo premuto il pulsante del profilo.",
|
||||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
"accessibility_hint": "Doppio tocco per eliminare questa procedura guidata"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "クリア"
|
"clear": "クリア"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "お気に入り"
|
"title": "お気に入り"
|
||||||
},
|
},
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Sfeḍ"
|
"clear": "Sfeḍ"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Ismenyifen-ik·im"
|
"title": "Ismenyifen-ik·im"
|
||||||
},
|
},
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Pak bike"
|
"clear": "Pak bike"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Şandî",
|
||||||
|
"hashtags": "Hashtag",
|
||||||
|
"news": "Nûçe",
|
||||||
|
"for_you": "Ji bo te"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Bijarteyên te"
|
"title": "Bijarteyên te"
|
||||||
},
|
},
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Clear"
|
"clear": "Clear"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Your Favorites"
|
"title": "Your Favorites"
|
||||||
},
|
},
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Wissen"
|
"clear": "Wissen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Uw favorieten"
|
"title": "Uw favorieten"
|
||||||
},
|
},
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Clear"
|
"clear": "Clear"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Your Favorites"
|
"title": "Your Favorites"
|
||||||
},
|
},
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Clear"
|
"clear": "Clear"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Your Favorites"
|
"title": "Your Favorites"
|
||||||
},
|
},
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Clear"
|
"clear": "Clear"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Your Favorites"
|
"title": "Your Favorites"
|
||||||
},
|
},
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
},
|
},
|
||||||
"delete_post": {
|
"delete_post": {
|
||||||
"title": "Вы уверены, что хотите удалить этот пост?",
|
"title": "Вы уверены, что хотите удалить этот пост?",
|
||||||
"message": "Are you sure you want to delete this post?"
|
"message": "Вы уверены, что хотите удалить этот пост?"
|
||||||
},
|
},
|
||||||
"clean_cache": {
|
"clean_cache": {
|
||||||
"title": "Очистка кэша",
|
"title": "Очистка кэша",
|
||||||
|
@ -130,7 +130,7 @@
|
||||||
"show_user_profile": "Показать профиль пользователя",
|
"show_user_profile": "Показать профиль пользователя",
|
||||||
"content_warning": "Предупреждение о содержании",
|
"content_warning": "Предупреждение о содержании",
|
||||||
"media_content_warning": "Нажмите в любом месте, чтобы показать",
|
"media_content_warning": "Нажмите в любом месте, чтобы показать",
|
||||||
"tap_to_reveal": "Tap to reveal",
|
"tap_to_reveal": "Нажмите, чтобы показать",
|
||||||
"poll": {
|
"poll": {
|
||||||
"vote": "Проголосовать",
|
"vote": "Проголосовать",
|
||||||
"closed": "Завершён"
|
"closed": "Завершён"
|
||||||
|
@ -142,11 +142,11 @@
|
||||||
"favorite": "Добавить в избранное",
|
"favorite": "Добавить в избранное",
|
||||||
"unfavorite": "Убрать из избранного",
|
"unfavorite": "Убрать из избранного",
|
||||||
"menu": "Меню",
|
"menu": "Меню",
|
||||||
"hide": "Hide",
|
"hide": "Скрыть",
|
||||||
"show_image": "Show image",
|
"show_image": "Показать изображение",
|
||||||
"show_gif": "Show GIF",
|
"show_gif": "Показать GIF",
|
||||||
"show_video_player": "Show video player",
|
"show_video_player": "Показать видеопроигрыватель",
|
||||||
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
|
"tap_then_hold_to_show_menu": "Нажмите и удерживайте, чтобы показать меню"
|
||||||
},
|
},
|
||||||
"tag": {
|
"tag": {
|
||||||
"url": "Ссылка",
|
"url": "Ссылка",
|
||||||
|
@ -175,7 +175,7 @@
|
||||||
"unblock_user": "Разблокировать %s",
|
"unblock_user": "Разблокировать %s",
|
||||||
"blocked": "В заблокированных",
|
"blocked": "В заблокированных",
|
||||||
"mute": "Игнорировать",
|
"mute": "Игнорировать",
|
||||||
"mute_user": "Добавить %s в игнорируемые",
|
"mute_user": "Игнорировать %s",
|
||||||
"unmute": "Убрать из игнорируемых",
|
"unmute": "Убрать из игнорируемых",
|
||||||
"unmute_user": "Убрать %s из игнорируемых",
|
"unmute_user": "Убрать %s из игнорируемых",
|
||||||
"muted": "В игнорируемых",
|
"muted": "В игнорируемых",
|
||||||
|
@ -206,7 +206,7 @@
|
||||||
"scene": {
|
"scene": {
|
||||||
"welcome": {
|
"welcome": {
|
||||||
"slogan": "Социальная сеть\nпод вашим контролем.",
|
"slogan": "Социальная сеть\nпод вашим контролем.",
|
||||||
"get_started": "Get Started",
|
"get_started": "Присоединиться",
|
||||||
"log_in": "Вход"
|
"log_in": "Вход"
|
||||||
},
|
},
|
||||||
"server_picker": {
|
"server_picker": {
|
||||||
|
@ -321,7 +321,7 @@
|
||||||
"subtitle": "Мы только что отправили письмо на\n%s.\nНажмите на ссылку в нём, чтобы\nподтвердить свою учётную запись.",
|
"subtitle": "Мы только что отправили письмо на\n%s.\nНажмите на ссылку в нём, чтобы\nподтвердить свою учётную запись.",
|
||||||
"button": {
|
"button": {
|
||||||
"open_email_app": "Открыть приложение почты",
|
"open_email_app": "Открыть приложение почты",
|
||||||
"resend": "Resend"
|
"resend": "Отправить заново"
|
||||||
},
|
},
|
||||||
"dont_receive_email": {
|
"dont_receive_email": {
|
||||||
"title": "Проверьте свой e-mail адрес",
|
"title": "Проверьте свой e-mail адрес",
|
||||||
|
@ -424,7 +424,7 @@
|
||||||
"segmented_control": {
|
"segmented_control": {
|
||||||
"posts": "Посты",
|
"posts": "Посты",
|
||||||
"replies": "Ответы",
|
"replies": "Ответы",
|
||||||
"posts_and_replies": "Posts and Replies",
|
"posts_and_replies": "Посты и ответы",
|
||||||
"media": "Медиа",
|
"media": "Медиа",
|
||||||
"about": "About"
|
"about": "About"
|
||||||
},
|
},
|
||||||
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Очистить"
|
"clear": "Очистить"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Ваше избранное"
|
"title": "Ваше избранное"
|
||||||
},
|
},
|
||||||
|
@ -553,7 +561,7 @@
|
||||||
"disable_avatar_animation": "Отключить анимацию аватарок",
|
"disable_avatar_animation": "Отключить анимацию аватарок",
|
||||||
"disable_emoji_animation": "Отключить анимацию эмодзи",
|
"disable_emoji_animation": "Отключить анимацию эмодзи",
|
||||||
"using_default_browser": "Использовать браузер по умолчанию для открытия ссылок",
|
"using_default_browser": "Использовать браузер по умолчанию для открытия ссылок",
|
||||||
"open_links_in_mastodon": "Open links in Mastodon"
|
"open_links_in_mastodon": "Открывать ссылки в Мастодоне"
|
||||||
},
|
},
|
||||||
"boring_zone": {
|
"boring_zone": {
|
||||||
"title": "Зона скукотищи",
|
"title": "Зона скукотищи",
|
||||||
|
@ -575,7 +583,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"report": {
|
"report": {
|
||||||
"title_report": "Report",
|
"title_report": "Жалоба",
|
||||||
"title": "Пожаловаться на %s",
|
"title": "Пожаловаться на %s",
|
||||||
"step1": "Шаг 1 из 2",
|
"step1": "Шаг 1 из 2",
|
||||||
"step2": "Шаг 2 из 2",
|
"step2": "Шаг 2 из 2",
|
||||||
|
@ -600,7 +608,7 @@
|
||||||
"add_account": "Add Account"
|
"add_account": "Add Account"
|
||||||
},
|
},
|
||||||
"wizard": {
|
"wizard": {
|
||||||
"new_in_mastodon": "New in Mastodon",
|
"new_in_mastodon": "Новое в Мастодоне",
|
||||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||||
}
|
}
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Tyhjennä"
|
"clear": "Tyhjennä"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Omat suosikit"
|
"title": "Omat suosikit"
|
||||||
},
|
},
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Rensa"
|
"clear": "Rensa"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Your Favorites"
|
"title": "Your Favorites"
|
||||||
},
|
},
|
||||||
|
|
|
@ -111,7 +111,7 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld replies</string>
|
<string>%ld การตอบกลับ</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.vote</key>
|
<key>plural.count.vote</key>
|
||||||
|
|
|
@ -130,7 +130,7 @@
|
||||||
"show_user_profile": "แสดงโปรไฟล์ผู้ใช้",
|
"show_user_profile": "แสดงโปรไฟล์ผู้ใช้",
|
||||||
"content_warning": "คำเตือนเนื้อหา",
|
"content_warning": "คำเตือนเนื้อหา",
|
||||||
"media_content_warning": "แตะที่ใดก็ตามเพื่อเปิดเผย",
|
"media_content_warning": "แตะที่ใดก็ตามเพื่อเปิดเผย",
|
||||||
"tap_to_reveal": "Tap to reveal",
|
"tap_to_reveal": "แตะเพื่อเปิดเผย",
|
||||||
"poll": {
|
"poll": {
|
||||||
"vote": "ลงคะแนน",
|
"vote": "ลงคะแนน",
|
||||||
"closed": "ปิดแล้ว"
|
"closed": "ปิดแล้ว"
|
||||||
|
@ -143,10 +143,10 @@
|
||||||
"unfavorite": "เลิกชื่นชอบ",
|
"unfavorite": "เลิกชื่นชอบ",
|
||||||
"menu": "เมนู",
|
"menu": "เมนู",
|
||||||
"hide": "ซ่อน",
|
"hide": "ซ่อน",
|
||||||
"show_image": "Show image",
|
"show_image": "แสดงภาพ",
|
||||||
"show_gif": "Show GIF",
|
"show_gif": "แสดง GIF",
|
||||||
"show_video_player": "Show video player",
|
"show_video_player": "แสดงตัวเล่นวิดีโอ",
|
||||||
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
|
"tap_then_hold_to_show_menu": "แตะค้างไว้เพื่อแสดงเมนู"
|
||||||
},
|
},
|
||||||
"tag": {
|
"tag": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
|
@ -447,10 +447,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"accessibility": {
|
"accessibility": {
|
||||||
"show_avatar_image": "Show avatar image",
|
"show_avatar_image": "แสดงภาพประจำตัว",
|
||||||
"edit_avatar_image": "Edit avatar image",
|
"edit_avatar_image": "แก้ไขภาพประจำตัว",
|
||||||
"show_banner_image": "Show banner image",
|
"show_banner_image": "แสดงภาพแบนเนอร์",
|
||||||
"double_tap_to_open_the_list": "Double tap to open the list"
|
"double_tap_to_open_the_list": "แตะสองครั้งเพื่อเปิดรายการ"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"follower": {
|
"follower": {
|
||||||
|
@ -492,6 +492,14 @@
|
||||||
"clear": "ล้าง"
|
"clear": "ล้าง"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "โพสต์",
|
||||||
|
"hashtags": "แฮชแท็ก",
|
||||||
|
"news": "ข่าว",
|
||||||
|
"for_you": "สำหรับคุณ"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "รายการโปรดของคุณ"
|
"title": "รายการโปรดของคุณ"
|
||||||
},
|
},
|
||||||
|
@ -553,7 +561,7 @@
|
||||||
"disable_avatar_animation": "ปิดใช้งานภาพประจำตัวแบบเคลื่อนไหว",
|
"disable_avatar_animation": "ปิดใช้งานภาพประจำตัวแบบเคลื่อนไหว",
|
||||||
"disable_emoji_animation": "ปิดใช้งานอีโมจิแบบเคลื่อนไหว",
|
"disable_emoji_animation": "ปิดใช้งานอีโมจิแบบเคลื่อนไหว",
|
||||||
"using_default_browser": "ใช้เบราว์เซอร์เริ่มต้นเพื่อเปิดลิงก์",
|
"using_default_browser": "ใช้เบราว์เซอร์เริ่มต้นเพื่อเปิดลิงก์",
|
||||||
"open_links_in_mastodon": "Open links in Mastodon"
|
"open_links_in_mastodon": "เปิดลิงก์ใน Mastodon"
|
||||||
},
|
},
|
||||||
"boring_zone": {
|
"boring_zone": {
|
||||||
"title": "โซนน่าเบื่อ",
|
"title": "โซนน่าเบื่อ",
|
||||||
|
|
|
@ -28,8 +28,8 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"edit_profile_failure": {
|
"edit_profile_failure": {
|
||||||
"title": "Lỗi chỉnh sửa trang cá nhân",
|
"title": "Lỗi chỉnh sửa hồ sơ",
|
||||||
"message": "Không thể chỉnh sửa trang cá nhân. Vui lòng thử lại."
|
"message": "Không thể chỉnh sửa hồ sơ. Vui lòng thử lại."
|
||||||
},
|
},
|
||||||
"sign_out": {
|
"sign_out": {
|
||||||
"title": "Đăng xuất",
|
"title": "Đăng xuất",
|
||||||
|
@ -97,7 +97,7 @@
|
||||||
"home": "Bảng tin",
|
"home": "Bảng tin",
|
||||||
"search": "Tìm kiếm",
|
"search": "Tìm kiếm",
|
||||||
"notification": "Thông báo",
|
"notification": "Thông báo",
|
||||||
"profile": "Trang cá nhân"
|
"profile": "Trang hồ sơ"
|
||||||
},
|
},
|
||||||
"keyboard": {
|
"keyboard": {
|
||||||
"common": {
|
"common": {
|
||||||
|
@ -127,7 +127,7 @@
|
||||||
"user_reblogged": "%s đăng lại",
|
"user_reblogged": "%s đăng lại",
|
||||||
"user_replied_to": "Trả lời %s",
|
"user_replied_to": "Trả lời %s",
|
||||||
"show_post": "Xem tút",
|
"show_post": "Xem tút",
|
||||||
"show_user_profile": "Xem trang cá nhân",
|
"show_user_profile": "Xem trang hồ sơ",
|
||||||
"content_warning": "Nội dung ẩn",
|
"content_warning": "Nội dung ẩn",
|
||||||
"media_content_warning": "Nhấn để hiển thị",
|
"media_content_warning": "Nhấn để hiển thị",
|
||||||
"tap_to_reveal": "Nhấn để hiển thị",
|
"tap_to_reveal": "Nhấn để hiển thị",
|
||||||
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Xóa"
|
"clear": "Xóa"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Tút",
|
||||||
|
"hashtags": "Hashtag",
|
||||||
|
"news": "Tin tức",
|
||||||
|
"for_you": "Dành cho bạn"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Lượt thích"
|
"title": "Lượt thích"
|
||||||
},
|
},
|
||||||
|
|
|
@ -111,7 +111,7 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld replies</string>
|
<string>%ld 条回复</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.vote</key>
|
<key>plural.count.vote</key>
|
||||||
|
|
|
@ -130,7 +130,7 @@
|
||||||
"show_user_profile": "查看用户个人资料",
|
"show_user_profile": "查看用户个人资料",
|
||||||
"content_warning": "内容警告",
|
"content_warning": "内容警告",
|
||||||
"media_content_warning": "点击任意位置显示",
|
"media_content_warning": "点击任意位置显示",
|
||||||
"tap_to_reveal": "Tap to reveal",
|
"tap_to_reveal": "点击以显示",
|
||||||
"poll": {
|
"poll": {
|
||||||
"vote": "投票",
|
"vote": "投票",
|
||||||
"closed": "已关闭"
|
"closed": "已关闭"
|
||||||
|
@ -143,10 +143,10 @@
|
||||||
"unfavorite": "取消喜欢",
|
"unfavorite": "取消喜欢",
|
||||||
"menu": "菜单",
|
"menu": "菜单",
|
||||||
"hide": "隐藏",
|
"hide": "隐藏",
|
||||||
"show_image": "Show image",
|
"show_image": "显示图片",
|
||||||
"show_gif": "Show GIF",
|
"show_gif": "显示 GIF",
|
||||||
"show_video_player": "Show video player",
|
"show_video_player": "显示视频播放器",
|
||||||
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
|
"tap_then_hold_to_show_menu": "长按以显示菜单"
|
||||||
},
|
},
|
||||||
"tag": {
|
"tag": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
|
@ -447,10 +447,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"accessibility": {
|
"accessibility": {
|
||||||
"show_avatar_image": "Show avatar image",
|
"show_avatar_image": "显示头像",
|
||||||
"edit_avatar_image": "Edit avatar image",
|
"edit_avatar_image": "编辑头像",
|
||||||
"show_banner_image": "Show banner image",
|
"show_banner_image": "显示顶部横幅图片",
|
||||||
"double_tap_to_open_the_list": "Double tap to open the list"
|
"double_tap_to_open_the_list": "双击打开列表"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"follower": {
|
"follower": {
|
||||||
|
@ -492,6 +492,14 @@
|
||||||
"clear": "清除"
|
"clear": "清除"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "帖子",
|
||||||
|
"hashtags": "话题",
|
||||||
|
"news": "新闻",
|
||||||
|
"for_you": "为你推荐"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "你的喜欢"
|
"title": "你的喜欢"
|
||||||
},
|
},
|
||||||
|
@ -553,7 +561,7 @@
|
||||||
"disable_avatar_animation": "禁用动画头像",
|
"disable_avatar_animation": "禁用动画头像",
|
||||||
"disable_emoji_animation": "禁用动画表情",
|
"disable_emoji_animation": "禁用动画表情",
|
||||||
"using_default_browser": "使用默认浏览器打开链接",
|
"using_default_browser": "使用默认浏览器打开链接",
|
||||||
"open_links_in_mastodon": "Open links in Mastodon"
|
"open_links_in_mastodon": "在 Mastodon 中打开链接"
|
||||||
},
|
},
|
||||||
"boring_zone": {
|
"boring_zone": {
|
||||||
"title": "The Boring Zone",
|
"title": "The Boring Zone",
|
||||||
|
|
|
@ -492,6 +492,14 @@
|
||||||
"clear": "Clear"
|
"clear": "Clear"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"discovery": {
|
||||||
|
"tabs": {
|
||||||
|
"posts": "Posts",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
|
"news": "News",
|
||||||
|
"for_you": "For You"
|
||||||
|
}
|
||||||
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Your Favorites"
|
"title": "Your Favorites"
|
||||||
},
|
},
|
||||||
|
|
|
@ -129,6 +129,7 @@
|
||||||
"show_post": "Show Post",
|
"show_post": "Show Post",
|
||||||
"show_user_profile": "Show user profile",
|
"show_user_profile": "Show user profile",
|
||||||
"content_warning": "Content Warning",
|
"content_warning": "Content Warning",
|
||||||
|
"sensitive_content": "Sensitive Content",
|
||||||
"media_content_warning": "Tap anywhere to reveal",
|
"media_content_warning": "Tap anywhere to reveal",
|
||||||
"tap_to_reveal": "Tap to reveal",
|
"tap_to_reveal": "Tap to reveal",
|
||||||
"poll": {
|
"poll": {
|
||||||
|
@ -498,7 +499,8 @@
|
||||||
"hashtags": "Hashtags",
|
"hashtags": "Hashtags",
|
||||||
"news": "News",
|
"news": "News",
|
||||||
"for_you": "For You"
|
"for_you": "For You"
|
||||||
}
|
},
|
||||||
|
"intro": "These are the posts gaining traction in your corner of Mastodon."
|
||||||
},
|
},
|
||||||
"favorite": {
|
"favorite": {
|
||||||
"title": "Your Favorites"
|
"title": "Your Favorites"
|
||||||
|
|
|
@ -115,9 +115,7 @@
|
||||||
DB0009A626AEE5DC009B9D2D /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = DB0009A926AEE5DC009B9D2D /* Intents.intentdefinition */; settings = {ATTRIBUTES = (no_codegen, ); }; };
|
DB0009A626AEE5DC009B9D2D /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = DB0009A926AEE5DC009B9D2D /* Intents.intentdefinition */; settings = {ATTRIBUTES = (no_codegen, ); }; };
|
||||||
DB0009A726AEE5DC009B9D2D /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = DB0009A926AEE5DC009B9D2D /* Intents.intentdefinition */; };
|
DB0009A726AEE5DC009B9D2D /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = DB0009A926AEE5DC009B9D2D /* Intents.intentdefinition */; };
|
||||||
DB00CA972632DDB600A54956 /* CommonOSLog in Frameworks */ = {isa = PBXBuildFile; productRef = DB00CA962632DDB600A54956 /* CommonOSLog */; };
|
DB00CA972632DDB600A54956 /* CommonOSLog in Frameworks */ = {isa = PBXBuildFile; productRef = DB00CA962632DDB600A54956 /* CommonOSLog */; };
|
||||||
DB0140BD25C40D7500F9F3CF /* CommonOSLog in Frameworks */ = {isa = PBXBuildFile; productRef = DB0140BC25C40D7500F9F3CF /* CommonOSLog */; };
|
|
||||||
DB0140CF25C42AEE00F9F3CF /* OSLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0140CE25C42AEE00F9F3CF /* OSLog.swift */; };
|
DB0140CF25C42AEE00F9F3CF /* OSLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0140CE25C42AEE00F9F3CF /* OSLog.swift */; };
|
||||||
DB01E23326A98F0900C3965B /* MastodonMeta in Frameworks */ = {isa = PBXBuildFile; productRef = DB01E23226A98F0900C3965B /* MastodonMeta */; };
|
|
||||||
DB01E23526A98F0900C3965B /* MetaTextKit in Frameworks */ = {isa = PBXBuildFile; productRef = DB01E23426A98F0900C3965B /* MetaTextKit */; };
|
DB01E23526A98F0900C3965B /* MetaTextKit in Frameworks */ = {isa = PBXBuildFile; productRef = DB01E23426A98F0900C3965B /* MetaTextKit */; };
|
||||||
DB023D26279FFB0A005AC798 /* ShareActivityProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB023D25279FFB0A005AC798 /* ShareActivityProvider.swift */; };
|
DB023D26279FFB0A005AC798 /* ShareActivityProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB023D25279FFB0A005AC798 /* ShareActivityProvider.swift */; };
|
||||||
DB023D2827A0FABD005AC798 /* NotificationTableViewCellDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB023D2727A0FABD005AC798 /* NotificationTableViewCellDelegate.swift */; };
|
DB023D2827A0FABD005AC798 /* NotificationTableViewCellDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB023D2727A0FABD005AC798 /* NotificationTableViewCellDelegate.swift */; };
|
||||||
|
@ -130,6 +128,8 @@
|
||||||
DB029E95266A20430062874E /* MastodonAuthenticationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB029E94266A20430062874E /* MastodonAuthenticationController.swift */; };
|
DB029E95266A20430062874E /* MastodonAuthenticationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB029E94266A20430062874E /* MastodonAuthenticationController.swift */; };
|
||||||
DB02CDAB26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB02CDAA26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift */; };
|
DB02CDAB26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB02CDAA26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift */; };
|
||||||
DB02CDBF2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB02CDBE2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift */; };
|
DB02CDBF2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB02CDBE2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift */; };
|
||||||
|
DB02EA0B280D180D00E751C5 /* KeychainAccess in Frameworks */ = {isa = PBXBuildFile; productRef = DB02EA0A280D180D00E751C5 /* KeychainAccess */; };
|
||||||
|
DB02EA0D280D184B00E751C5 /* CommonOSLog in Frameworks */ = {isa = PBXBuildFile; productRef = DB02EA0C280D184B00E751C5 /* CommonOSLog */; };
|
||||||
DB03A793272A7E5700EE37C5 /* SidebarListHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB03A792272A7E5700EE37C5 /* SidebarListHeaderView.swift */; };
|
DB03A793272A7E5700EE37C5 /* SidebarListHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB03A792272A7E5700EE37C5 /* SidebarListHeaderView.swift */; };
|
||||||
DB03A795272A981400EE37C5 /* ContentSplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB03A794272A981400EE37C5 /* ContentSplitViewController.swift */; };
|
DB03A795272A981400EE37C5 /* ContentSplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB03A794272A981400EE37C5 /* ContentSplitViewController.swift */; };
|
||||||
DB03F7F32689AEA3007B274C /* ComposeRepliedToStatusContentTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB03F7F22689AEA3007B274C /* ComposeRepliedToStatusContentTableViewCell.swift */; };
|
DB03F7F32689AEA3007B274C /* ComposeRepliedToStatusContentTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB03F7F22689AEA3007B274C /* ComposeRepliedToStatusContentTableViewCell.swift */; };
|
||||||
|
@ -148,6 +148,7 @@
|
||||||
DB0618072785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618062785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift */; };
|
DB0618072785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618062785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift */; };
|
||||||
DB06180A2785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618092785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift */; };
|
DB06180A2785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618092785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift */; };
|
||||||
DB084B5725CBC56C00F898ED /* Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB084B5625CBC56C00F898ED /* Status.swift */; };
|
DB084B5725CBC56C00F898ED /* Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB084B5625CBC56C00F898ED /* Status.swift */; };
|
||||||
|
DB0A322E280EE9FD001729D2 /* DiscoveryIntroBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0A322D280EE9FD001729D2 /* DiscoveryIntroBannerView.swift */; };
|
||||||
DB0AC6FC25CD02E600D75117 /* APIService+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */; };
|
DB0AC6FC25CD02E600D75117 /* APIService+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */; };
|
||||||
DB0C946526A6FD4D0088FB11 /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB0C946426A6FD4D0088FB11 /* AlamofireImage */; };
|
DB0C946526A6FD4D0088FB11 /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB0C946426A6FD4D0088FB11 /* AlamofireImage */; };
|
||||||
DB0C947726A7FE840088FB11 /* NotificationAvatarButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0C947626A7FE840088FB11 /* NotificationAvatarButton.swift */; };
|
DB0C947726A7FE840088FB11 /* NotificationAvatarButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0C947626A7FE840088FB11 /* NotificationAvatarButton.swift */; };
|
||||||
|
@ -347,7 +348,6 @@
|
||||||
DB6804872637CD4C00430867 /* AppShared.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
DB6804872637CD4C00430867 /* AppShared.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
DB6804D12637CE4700430867 /* UserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6804D02637CE4700430867 /* UserDefaults.swift */; };
|
DB6804D12637CE4700430867 /* UserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6804D02637CE4700430867 /* UserDefaults.swift */; };
|
||||||
DB6804FD2637CFEC00430867 /* AppSecret.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6804FC2637CFEC00430867 /* AppSecret.swift */; };
|
DB6804FD2637CFEC00430867 /* AppSecret.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6804FC2637CFEC00430867 /* AppSecret.swift */; };
|
||||||
DB6805102637D0F800430867 /* KeychainAccess in Frameworks */ = {isa = PBXBuildFile; productRef = DB68050F2637D0F800430867 /* KeychainAccess */; };
|
|
||||||
DB68586425E619B700F0A850 /* NSKeyValueObservation.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB68586325E619B700F0A850 /* NSKeyValueObservation.swift */; };
|
DB68586425E619B700F0A850 /* NSKeyValueObservation.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB68586325E619B700F0A850 /* NSKeyValueObservation.swift */; };
|
||||||
DB68A04A25E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB68A04925E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift */; };
|
DB68A04A25E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB68A04925E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift */; };
|
||||||
DB68A05D25E9055900CFDF14 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = DB68A05C25E9055900CFDF14 /* Settings.bundle */; };
|
DB68A05D25E9055900CFDF14 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = DB68A05C25E9055900CFDF14 /* Settings.bundle */; };
|
||||||
|
@ -871,6 +871,7 @@
|
||||||
DB0618062785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonRegisterViewModel+Diffable.swift"; sourceTree = "<group>"; };
|
DB0618062785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonRegisterViewModel+Diffable.swift"; sourceTree = "<group>"; };
|
||||||
DB0618092785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterAvatarTableViewCell.swift; sourceTree = "<group>"; };
|
DB0618092785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterAvatarTableViewCell.swift; sourceTree = "<group>"; };
|
||||||
DB084B5625CBC56C00F898ED /* Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Status.swift; sourceTree = "<group>"; };
|
DB084B5625CBC56C00F898ED /* Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Status.swift; sourceTree = "<group>"; };
|
||||||
|
DB0A322D280EE9FD001729D2 /* DiscoveryIntroBannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiscoveryIntroBannerView.swift; sourceTree = "<group>"; };
|
||||||
DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Instance.swift"; sourceTree = "<group>"; };
|
DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Instance.swift"; sourceTree = "<group>"; };
|
||||||
DB0C947626A7FE840088FB11 /* NotificationAvatarButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationAvatarButton.swift; sourceTree = "<group>"; };
|
DB0C947626A7FE840088FB11 /* NotificationAvatarButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationAvatarButton.swift; sourceTree = "<group>"; };
|
||||||
DB0EF72A26FDB1D200347686 /* SidebarListCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarListCollectionViewCell.swift; sourceTree = "<group>"; };
|
DB0EF72A26FDB1D200347686 /* SidebarListCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarListCollectionViewCell.swift; sourceTree = "<group>"; };
|
||||||
|
@ -1372,7 +1373,6 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
DB0140BD25C40D7500F9F3CF /* CommonOSLog in Frameworks */,
|
|
||||||
DB9A487E2603456B008B817C /* UITextView+Placeholder in Frameworks */,
|
DB9A487E2603456B008B817C /* UITextView+Placeholder in Frameworks */,
|
||||||
2D939AC825EE14620076FA61 /* CropViewController in Frameworks */,
|
2D939AC825EE14620076FA61 /* CropViewController in Frameworks */,
|
||||||
DBB525082611EAC0002F1F29 /* Tabman in Frameworks */,
|
DBB525082611EAC0002F1F29 /* Tabman in Frameworks */,
|
||||||
|
@ -1382,10 +1382,10 @@
|
||||||
DBAC6483267D0B21007FE9FD /* DifferenceKit in Frameworks */,
|
DBAC6483267D0B21007FE9FD /* DifferenceKit in Frameworks */,
|
||||||
DB552D4F26BBD10C00E481F6 /* OrderedCollections in Frameworks */,
|
DB552D4F26BBD10C00E481F6 /* OrderedCollections in Frameworks */,
|
||||||
2D61336925C18A4F00CAE157 /* AlamofireNetworkActivityIndicator in Frameworks */,
|
2D61336925C18A4F00CAE157 /* AlamofireNetworkActivityIndicator in Frameworks */,
|
||||||
DB01E23326A98F0900C3965B /* MastodonMeta in Frameworks */,
|
|
||||||
DBAC64A1267E6D02007FE9FD /* Fuzi in Frameworks */,
|
DBAC64A1267E6D02007FE9FD /* Fuzi in Frameworks */,
|
||||||
DB3D0FF325BAA61700EAA174 /* AlamofireImage in Frameworks */,
|
DB3D0FF325BAA61700EAA174 /* AlamofireImage in Frameworks */,
|
||||||
DBAC649E267DFE43007FE9FD /* DiffableDataSources in Frameworks */,
|
DBAC649E267DFE43007FE9FD /* DiffableDataSources in Frameworks */,
|
||||||
|
DB02EA0D280D184B00E751C5 /* CommonOSLog in Frameworks */,
|
||||||
2D5981BA25E4D7F8000FB903 /* ThirdPartyMailer in Frameworks */,
|
2D5981BA25E4D7F8000FB903 /* ThirdPartyMailer in Frameworks */,
|
||||||
87FFDA5D898A5C42ADCB35E7 /* Pods_Mastodon.framework in Frameworks */,
|
87FFDA5D898A5C42ADCB35E7 /* Pods_Mastodon.framework in Frameworks */,
|
||||||
DBF7A0FC26830C33004176A2 /* FPSIndicator in Frameworks */,
|
DBF7A0FC26830C33004176A2 /* FPSIndicator in Frameworks */,
|
||||||
|
@ -1415,7 +1415,7 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
DB6805102637D0F800430867 /* KeychainAccess in Frameworks */,
|
DB02EA0B280D180D00E751C5 /* KeychainAccess in Frameworks */,
|
||||||
EE93E8E8F9E0C39EAAEBD92F /* Pods_AppShared.framework in Frameworks */,
|
EE93E8E8F9E0C39EAAEBD92F /* Pods_AppShared.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
@ -2025,6 +2025,14 @@
|
||||||
path = CoreDataStack;
|
path = CoreDataStack;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
DB0A322F280EEA00001729D2 /* View */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
DB0A322D280EE9FD001729D2 /* DiscoveryIntroBannerView.swift */,
|
||||||
|
);
|
||||||
|
path = View;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
DB0C947826A7FE950088FB11 /* Button */ = {
|
DB0C947826A7FE950088FB11 /* Button */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
@ -3110,6 +3118,7 @@
|
||||||
DBDFF1912805544800557A48 /* Discovery */ = {
|
DBDFF1912805544800557A48 /* Discovery */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
DB0A322F280EEA00001729D2 /* View */,
|
||||||
DBDFF19828055A0900557A48 /* Posts */,
|
DBDFF19828055A0900557A48 /* Posts */,
|
||||||
DB3E6FDE2806A41200B035AE /* Hashtags */,
|
DB3E6FDE2806A41200B035AE /* Hashtags */,
|
||||||
DB3E6FED2806D7FC00B035AE /* News */,
|
DB3E6FED2806D7FC00B035AE /* News */,
|
||||||
|
@ -3303,7 +3312,6 @@
|
||||||
DB3D0FF225BAA61700EAA174 /* AlamofireImage */,
|
DB3D0FF225BAA61700EAA174 /* AlamofireImage */,
|
||||||
5D526FE125BE9AC400460CB9 /* MastodonSDK */,
|
5D526FE125BE9AC400460CB9 /* MastodonSDK */,
|
||||||
2D61336825C18A4F00CAE157 /* AlamofireNetworkActivityIndicator */,
|
2D61336825C18A4F00CAE157 /* AlamofireNetworkActivityIndicator */,
|
||||||
DB0140BC25C40D7500F9F3CF /* CommonOSLog */,
|
|
||||||
2D5981B925E4D7F8000FB903 /* ThirdPartyMailer */,
|
2D5981B925E4D7F8000FB903 /* ThirdPartyMailer */,
|
||||||
2D939AC725EE14620076FA61 /* CropViewController */,
|
2D939AC725EE14620076FA61 /* CropViewController */,
|
||||||
DB9A487D2603456B008B817C /* UITextView+Placeholder */,
|
DB9A487D2603456B008B817C /* UITextView+Placeholder */,
|
||||||
|
@ -3312,10 +3320,10 @@
|
||||||
DBAC649D267DFE43007FE9FD /* DiffableDataSources */,
|
DBAC649D267DFE43007FE9FD /* DiffableDataSources */,
|
||||||
DBAC64A0267E6D02007FE9FD /* Fuzi */,
|
DBAC64A0267E6D02007FE9FD /* Fuzi */,
|
||||||
DBF7A0FB26830C33004176A2 /* FPSIndicator */,
|
DBF7A0FB26830C33004176A2 /* FPSIndicator */,
|
||||||
DB01E23226A98F0900C3965B /* MastodonMeta */,
|
|
||||||
DB01E23426A98F0900C3965B /* MetaTextKit */,
|
DB01E23426A98F0900C3965B /* MetaTextKit */,
|
||||||
DB552D4E26BBD10C00E481F6 /* OrderedCollections */,
|
DB552D4E26BBD10C00E481F6 /* OrderedCollections */,
|
||||||
DBA5A52E26F07ED800CACBAA /* PanModal */,
|
DBA5A52E26F07ED800CACBAA /* PanModal */,
|
||||||
|
DB02EA0C280D184B00E751C5 /* CommonOSLog */,
|
||||||
);
|
);
|
||||||
productName = Mastodon;
|
productName = Mastodon;
|
||||||
productReference = DB427DD225BAA00100D1B89D /* Mastodon.app */;
|
productReference = DB427DD225BAA00100D1B89D /* Mastodon.app */;
|
||||||
|
@ -3376,7 +3384,7 @@
|
||||||
);
|
);
|
||||||
name = AppShared;
|
name = AppShared;
|
||||||
packageProductDependencies = (
|
packageProductDependencies = (
|
||||||
DB68050F2637D0F800430867 /* KeychainAccess */,
|
DB02EA0A280D180D00E751C5 /* KeychainAccess */,
|
||||||
);
|
);
|
||||||
productName = AppShared;
|
productName = AppShared;
|
||||||
productReference = DB68047F2637CD4C00430867 /* AppShared.framework */;
|
productReference = DB68047F2637CD4C00430867 /* AppShared.framework */;
|
||||||
|
@ -4088,6 +4096,7 @@
|
||||||
DB8AF55D25C138B7002E6C99 /* UIViewController.swift in Sources */,
|
DB8AF55D25C138B7002E6C99 /* UIViewController.swift in Sources */,
|
||||||
DB7F48452620241000796008 /* ProfileHeaderViewModel.swift in Sources */,
|
DB7F48452620241000796008 /* ProfileHeaderViewModel.swift in Sources */,
|
||||||
DB647C5926F1EA2700F7F82C /* WizardPreference.swift in Sources */,
|
DB647C5926F1EA2700F7F82C /* WizardPreference.swift in Sources */,
|
||||||
|
DB0A322E280EE9FD001729D2 /* DiscoveryIntroBannerView.swift in Sources */,
|
||||||
2D3F9E0425DFA133004262D9 /* UITapGestureRecognizer.swift in Sources */,
|
2D3F9E0425DFA133004262D9 /* UITapGestureRecognizer.swift in Sources */,
|
||||||
5DDDF1992617447F00311060 /* Mastodon+Entity+Tag.swift in Sources */,
|
5DDDF1992617447F00311060 /* Mastodon+Entity+Tag.swift in Sources */,
|
||||||
5B90C45F262599800002E742 /* SettingsToggleTableViewCell.swift in Sources */,
|
5B90C45F262599800002E742 /* SettingsToggleTableViewCell.swift in Sources */,
|
||||||
|
@ -4728,7 +4737,7 @@
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||||
|
@ -4757,7 +4766,7 @@
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||||
|
@ -4865,11 +4874,11 @@
|
||||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 110;
|
DYLIB_CURRENT_VERSION = 113;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
INFOPLIST_FILE = AppShared/Info.plist;
|
INFOPLIST_FILE = AppShared/Info.plist;
|
||||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||||
|
@ -4896,11 +4905,11 @@
|
||||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 110;
|
DYLIB_CURRENT_VERSION = 113;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
INFOPLIST_FILE = AppShared/Info.plist;
|
INFOPLIST_FILE = AppShared/Info.plist;
|
||||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||||
|
@ -4925,7 +4934,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -4950,7 +4959,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -4975,7 +4984,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -5000,7 +5009,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -5086,7 +5095,7 @@
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = Mastodon/Info.plist;
|
INFOPLIST_FILE = Mastodon/Info.plist;
|
||||||
|
@ -5153,11 +5162,11 @@
|
||||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 110;
|
DYLIB_CURRENT_VERSION = 113;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
INFOPLIST_FILE = AppShared/Info.plist;
|
INFOPLIST_FILE = AppShared/Info.plist;
|
||||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||||
|
@ -5182,7 +5191,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -5206,7 +5215,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
INFOPLIST_FILE = ShareActionExtension/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -5231,7 +5240,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
INFOPLIST_FILE = MastodonIntent/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -5256,7 +5265,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -5280,7 +5289,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 110;
|
CURRENT_PROJECT_VERSION = 113;
|
||||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||||
INFOPLIST_FILE = NotificationService/Info.plist;
|
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
@ -5421,7 +5430,7 @@
|
||||||
repositoryURL = "https://github.com/TwidereProject/MetaTextKit.git";
|
repositoryURL = "https://github.com/TwidereProject/MetaTextKit.git";
|
||||||
requirement = {
|
requirement = {
|
||||||
kind = exactVersion;
|
kind = exactVersion;
|
||||||
version = 2.2.1;
|
version = 2.2.2;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
DB0E2D2C26833FF600865C3C /* XCRemoteSwiftPackageReference "Nuke-FLAnimatedImage-Plugin" */ = {
|
DB0E2D2C26833FF600865C3C /* XCRemoteSwiftPackageReference "Nuke-FLAnimatedImage-Plugin" */ = {
|
||||||
|
@ -5539,21 +5548,21 @@
|
||||||
package = DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */;
|
package = DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */;
|
||||||
productName = CommonOSLog;
|
productName = CommonOSLog;
|
||||||
};
|
};
|
||||||
DB0140BC25C40D7500F9F3CF /* CommonOSLog */ = {
|
|
||||||
isa = XCSwiftPackageProductDependency;
|
|
||||||
package = DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */;
|
|
||||||
productName = CommonOSLog;
|
|
||||||
};
|
|
||||||
DB01E23226A98F0900C3965B /* MastodonMeta */ = {
|
|
||||||
isa = XCSwiftPackageProductDependency;
|
|
||||||
package = DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit" */;
|
|
||||||
productName = MastodonMeta;
|
|
||||||
};
|
|
||||||
DB01E23426A98F0900C3965B /* MetaTextKit */ = {
|
DB01E23426A98F0900C3965B /* MetaTextKit */ = {
|
||||||
isa = XCSwiftPackageProductDependency;
|
isa = XCSwiftPackageProductDependency;
|
||||||
package = DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit" */;
|
package = DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit" */;
|
||||||
productName = MetaTextKit;
|
productName = MetaTextKit;
|
||||||
};
|
};
|
||||||
|
DB02EA0A280D180D00E751C5 /* KeychainAccess */ = {
|
||||||
|
isa = XCSwiftPackageProductDependency;
|
||||||
|
package = DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */;
|
||||||
|
productName = KeychainAccess;
|
||||||
|
};
|
||||||
|
DB02EA0C280D184B00E751C5 /* CommonOSLog */ = {
|
||||||
|
isa = XCSwiftPackageProductDependency;
|
||||||
|
package = DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */;
|
||||||
|
productName = CommonOSLog;
|
||||||
|
};
|
||||||
DB0C946426A6FD4D0088FB11 /* AlamofireImage */ = {
|
DB0C946426A6FD4D0088FB11 /* AlamofireImage */ = {
|
||||||
isa = XCSwiftPackageProductDependency;
|
isa = XCSwiftPackageProductDependency;
|
||||||
package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */;
|
package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */;
|
||||||
|
@ -5573,11 +5582,6 @@
|
||||||
package = DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections" */;
|
package = DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections" */;
|
||||||
productName = OrderedCollections;
|
productName = OrderedCollections;
|
||||||
};
|
};
|
||||||
DB68050F2637D0F800430867 /* KeychainAccess */ = {
|
|
||||||
isa = XCSwiftPackageProductDependency;
|
|
||||||
package = DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */;
|
|
||||||
productName = KeychainAccess;
|
|
||||||
};
|
|
||||||
DB6D9F41263527CE008423CD /* AlamofireImage */ = {
|
DB6D9F41263527CE008423CD /* AlamofireImage */ = {
|
||||||
isa = XCSwiftPackageProductDependency;
|
isa = XCSwiftPackageProductDependency;
|
||||||
package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */;
|
package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */;
|
||||||
|
|
|
@ -73,7 +73,6 @@
|
||||||
buildConfiguration = "Debug"
|
buildConfiguration = "Debug"
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
enableAddressSanitizer = "YES"
|
|
||||||
launchStyle = "0"
|
launchStyle = "0"
|
||||||
useCustomWorkingDirectory = "NO"
|
useCustomWorkingDirectory = "NO"
|
||||||
ignoresPersistentStateOnLaunch = "NO"
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
@ -90,13 +89,6 @@
|
||||||
ReferencedContainer = "container:Mastodon.xcodeproj">
|
ReferencedContainer = "container:Mastodon.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildableProductRunnable>
|
</BuildableProductRunnable>
|
||||||
<AdditionalOptions>
|
|
||||||
<AdditionalOption
|
|
||||||
key = "NSZombieEnabled"
|
|
||||||
value = "YES"
|
|
||||||
isEnabled = "YES">
|
|
||||||
</AdditionalOption>
|
|
||||||
</AdditionalOptions>
|
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
<ProfileAction
|
<ProfileAction
|
||||||
buildConfiguration = "Release"
|
buildConfiguration = "Release"
|
||||||
|
|
|
@ -109,7 +109,7 @@
|
||||||
<key>MastodonIntent.xcscheme_^#shared#^_</key>
|
<key>MastodonIntent.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>33</integer>
|
<integer>30</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>MastodonIntents.xcscheme_^#shared#^_</key>
|
<key>MastodonIntents.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
@ -124,12 +124,12 @@
|
||||||
<key>NotificationService.xcscheme_^#shared#^_</key>
|
<key>NotificationService.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>32</integer>
|
<integer>31</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>ShareActionExtension.xcscheme_^#shared#^_</key>
|
<key>ShareActionExtension.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>31</integer>
|
<integer>23</integer>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>SuppressBuildableAutocreation</key>
|
<key>SuppressBuildableAutocreation</key>
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
"repositoryURL": "https://github.com/Alamofire/Alamofire.git",
|
"repositoryURL": "https://github.com/Alamofire/Alamofire.git",
|
||||||
"state": {
|
"state": {
|
||||||
"branch": null,
|
"branch": null,
|
||||||
"revision": "f82c23a8a7ef8dc1a49a8bfc6a96883e79121864",
|
"revision": "354dda32d89fc8cd4f5c46487f64957d355f53d8",
|
||||||
"version": "5.5.0"
|
"version": "5.6.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -55,6 +55,15 @@
|
||||||
"version": "1.2.0"
|
"version": "1.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"package": "FaviconFinder",
|
||||||
|
"repositoryURL": "https://github.com/will-lumley/FaviconFinder.git",
|
||||||
|
"state": {
|
||||||
|
"branch": null,
|
||||||
|
"revision": "1f74844f77f79b95c0bb0130b3a87d4f340e6d3a",
|
||||||
|
"version": "3.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"package": "FLAnimatedImage",
|
"package": "FLAnimatedImage",
|
||||||
"repositoryURL": "https://github.com/Flipboard/FLAnimatedImage.git",
|
"repositoryURL": "https://github.com/Flipboard/FLAnimatedImage.git",
|
||||||
|
@ -96,8 +105,8 @@
|
||||||
"repositoryURL": "https://github.com/TwidereProject/MetaTextKit.git",
|
"repositoryURL": "https://github.com/TwidereProject/MetaTextKit.git",
|
||||||
"state": {
|
"state": {
|
||||||
"branch": null,
|
"branch": null,
|
||||||
"revision": "3ea336d3de7938dc112084c596a646e697b0feee",
|
"revision": "8074400b3819ef0395550082e6e8e960ef22e1f3",
|
||||||
"version": "2.2.1"
|
"version": "2.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -105,8 +114,8 @@
|
||||||
"repositoryURL": "https://github.com/kean/Nuke.git",
|
"repositoryURL": "https://github.com/kean/Nuke.git",
|
||||||
"state": {
|
"state": {
|
||||||
"branch": null,
|
"branch": null,
|
||||||
"revision": "0db18dd34998cca18e9a28bcee136f84518007a0",
|
"revision": "78fa963b8491fc520791d8c2a509f1b8593d8aae",
|
||||||
"version": "10.4.1"
|
"version": "10.7.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -141,8 +150,8 @@
|
||||||
"repositoryURL": "https://github.com/SDWebImage/SDWebImage.git",
|
"repositoryURL": "https://github.com/SDWebImage/SDWebImage.git",
|
||||||
"state": {
|
"state": {
|
||||||
"branch": null,
|
"branch": null,
|
||||||
"revision": "2c53f531f1bedd253f55d85105409c28ed4a922c",
|
"revision": "2e63d0061da449ad0ed130768d05dceb1496de44",
|
||||||
"version": "5.12.3"
|
"version": "5.12.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -172,13 +181,22 @@
|
||||||
"version": "1.0.0"
|
"version": "1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"package": "SwiftSoup",
|
||||||
|
"repositoryURL": "https://github.com/scinfu/SwiftSoup.git",
|
||||||
|
"state": {
|
||||||
|
"branch": null,
|
||||||
|
"revision": "41e7c263fb8c277e980ebcb9b0b5f6031d3d4886",
|
||||||
|
"version": "2.4.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"package": "Introspect",
|
"package": "Introspect",
|
||||||
"repositoryURL": "https://github.com/siteline/SwiftUI-Introspect.git",
|
"repositoryURL": "https://github.com/siteline/SwiftUI-Introspect.git",
|
||||||
"state": {
|
"state": {
|
||||||
"branch": null,
|
"branch": null,
|
||||||
"revision": "2e09be8af614401bc9f87d40093ec19ce56ccaf2",
|
"revision": "f2616860a41f9d9932da412a8978fec79c06fe24",
|
||||||
"version": "0.1.3"
|
"version": "0.1.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -52,13 +52,16 @@ extension DiscoverySection {
|
||||||
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ProfileCardTableViewCell.self), for: indexPath) as! ProfileCardTableViewCell
|
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ProfileCardTableViewCell.self), for: indexPath) as! ProfileCardTableViewCell
|
||||||
context.managedObjectContext.performAndWait {
|
context.managedObjectContext.performAndWait {
|
||||||
guard let user = record.object(in: context.managedObjectContext) else { return }
|
guard let user = record.object(in: context.managedObjectContext) else { return }
|
||||||
cell.profileCardView.configure(user: user)
|
cell.configure(
|
||||||
|
tableView: tableView,
|
||||||
|
user: user,
|
||||||
|
profileCardTableViewCellDelegate: configuration.profileCardTableViewCellDelegate
|
||||||
|
)
|
||||||
}
|
}
|
||||||
context.authenticationService.activeMastodonAuthentication
|
context.authenticationService.activeMastodonAuthentication
|
||||||
.map { $0?.user }
|
.map { $0?.user }
|
||||||
.assign(to: \.me, on: cell.profileCardView.viewModel.relationshipViewModel)
|
.assign(to: \.me, on: cell.profileCardView.viewModel.relationshipViewModel)
|
||||||
.store(in: &cell.disposeBag)
|
.store(in: &cell.disposeBag)
|
||||||
cell.delegate = configuration.profileCardTableViewCellDelegate
|
|
||||||
return cell
|
return cell
|
||||||
case .bottomLoader:
|
case .bottomLoader:
|
||||||
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self), for: indexPath) as! TimelineBottomLoaderTableViewCell
|
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self), for: indexPath) as! TimelineBottomLoaderTableViewCell
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>110</string>
|
<string>113</string>
|
||||||
<key>ITSAppUsesNonExemptEncryption</key>
|
<key>ITSAppUsesNonExemptEncryption</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>LSApplicationQueriesSchemes</key>
|
<key>LSApplicationQueriesSchemes</key>
|
||||||
|
|
|
@ -286,24 +286,8 @@ extension DataSourceFacade {
|
||||||
try await dependency.context.managedObjectContext.perform {
|
try await dependency.context.managedObjectContext.perform {
|
||||||
guard let _status = status.object(in: dependency.context.managedObjectContext) else { return }
|
guard let _status = status.object(in: dependency.context.managedObjectContext) else { return }
|
||||||
let status = _status.reblog ?? _status
|
let status = _status.reblog ?? _status
|
||||||
|
status.update(isSensitiveToggled: !status.isSensitiveToggled)
|
||||||
let allToggled = status.isContentSensitiveToggled && status.isMediaSensitiveToggled
|
|
||||||
|
|
||||||
status.update(isContentSensitiveToggled: !allToggled)
|
|
||||||
status.update(isMediaSensitiveToggled: !allToggled)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// static func responseToToggleMediaSensitiveAction(
|
|
||||||
// dependency: NeedsDependency,
|
|
||||||
// status: ManagedObjectRecord<Status>
|
|
||||||
// ) async throws {
|
|
||||||
// try await dependency.context.managedObjectContext.perform {
|
|
||||||
// guard let _status = status.object(in: dependency.context.managedObjectContext) else { return }
|
|
||||||
// let status = _status.reblog ?? _status
|
|
||||||
//
|
|
||||||
// status.update(isMediaSensitiveToggled: !status.isMediaSensitiveToggled)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,7 +135,7 @@ extension NotificationTableViewCellDelegate where Self: DataSourceProvider & Med
|
||||||
let status = _status.reblog ?? _status
|
let status = _status.reblog ?? _status
|
||||||
return NotificationMediaTransitionContext(
|
return NotificationMediaTransitionContext(
|
||||||
status: .init(objectID: status.objectID),
|
status: .init(objectID: status.objectID),
|
||||||
needsToggleMediaSensitive: status.isMediaSensitiveToggled ? !status.sensitive : status.sensitive
|
needsToggleMediaSensitive: status.isSensitiveToggled ? !status.sensitive : status.sensitive
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,7 +187,7 @@ extension NotificationTableViewCellDelegate where Self: DataSourceProvider & Med
|
||||||
let status = _status.reblog ?? _status
|
let status = _status.reblog ?? _status
|
||||||
return NotificationMediaTransitionContext(
|
return NotificationMediaTransitionContext(
|
||||||
status: .init(objectID: status.objectID),
|
status: .init(objectID: status.objectID),
|
||||||
needsToggleMediaSensitive: status.isMediaSensitiveToggled ? !status.sensitive : status.sensitive
|
needsToggleMediaSensitive: status.isMediaSensitive ? !status.isSensitiveToggled : false
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -143,12 +143,7 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider & MediaPrev
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let managedObjectContext = self.context.managedObjectContext
|
let needsToggleMediaSensitive = await !statusView.viewModel.isMediaReveal
|
||||||
let needsToggleMediaSensitive: Bool = try await managedObjectContext.perform {
|
|
||||||
guard let _status = status.object(in: managedObjectContext) else { return false }
|
|
||||||
let status = _status.reblog ?? _status
|
|
||||||
return status.isMediaSensitiveToggled ? !status.sensitive : status.sensitive
|
|
||||||
}
|
|
||||||
|
|
||||||
guard !needsToggleMediaSensitive else {
|
guard !needsToggleMediaSensitive else {
|
||||||
try await DataSourceFacade.responseToToggleSensitiveAction(
|
try await DataSourceFacade.responseToToggleSensitiveAction(
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
import os.log
|
import os.log
|
||||||
import UIKit
|
import UIKit
|
||||||
import Combine
|
import Combine
|
||||||
|
import MastodonUI
|
||||||
|
|
||||||
final class DiscoveryPostsViewController: UIViewController, NeedsDependency, MediaPreviewableViewController {
|
final class DiscoveryPostsViewController: UIViewController, NeedsDependency, MediaPreviewableViewController {
|
||||||
|
|
||||||
|
@ -32,6 +33,8 @@ final class DiscoveryPostsViewController: UIViewController, NeedsDependency, Med
|
||||||
|
|
||||||
let refreshControl = UIRefreshControl()
|
let refreshControl = UIRefreshControl()
|
||||||
|
|
||||||
|
let discoveryIntroBannerView = DiscoveryIntroBannerView()
|
||||||
|
|
||||||
deinit {
|
deinit {
|
||||||
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
||||||
}
|
}
|
||||||
|
@ -61,6 +64,21 @@ extension DiscoveryPostsViewController {
|
||||||
tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
|
tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
discoveryIntroBannerView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
view.addSubview(discoveryIntroBannerView)
|
||||||
|
NSLayoutConstraint.activate([
|
||||||
|
discoveryIntroBannerView.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor),
|
||||||
|
discoveryIntroBannerView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
||||||
|
discoveryIntroBannerView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
||||||
|
])
|
||||||
|
|
||||||
|
discoveryIntroBannerView.delegate = self
|
||||||
|
discoveryIntroBannerView.isHidden = UserDefaults.shared.discoveryIntroBannerNeedsHidden
|
||||||
|
UserDefaults.shared.publisher(for: \.discoveryIntroBannerNeedsHidden)
|
||||||
|
.receive(on: DispatchQueue.main)
|
||||||
|
.assign(to: \.isHidden, on: discoveryIntroBannerView)
|
||||||
|
.store(in: &disposeBag)
|
||||||
|
|
||||||
tableView.delegate = self
|
tableView.delegate = self
|
||||||
viewModel.setupDiffableDataSource(
|
viewModel.setupDiffableDataSource(
|
||||||
tableView: tableView,
|
tableView: tableView,
|
||||||
|
@ -146,3 +164,10 @@ extension DiscoveryPostsViewController: ScrollViewContainer {
|
||||||
tableView
|
tableView
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - DiscoveryIntroBannerViewDelegate
|
||||||
|
extension DiscoveryPostsViewController: DiscoveryIntroBannerViewDelegate {
|
||||||
|
func discoveryIntroBannerView(_ bannerView: DiscoveryIntroBannerView, closeButtonDidPressed button: UIButton) {
|
||||||
|
UserDefaults.shared.discoveryIntroBannerNeedsHidden = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
//
|
||||||
|
// DiscoveryIntroBannerView.swift
|
||||||
|
// Mastodon
|
||||||
|
//
|
||||||
|
// Created by MainasuK on 2022-4-19.
|
||||||
|
//
|
||||||
|
|
||||||
|
import os.log
|
||||||
|
import UIKit
|
||||||
|
import Combine
|
||||||
|
import MastodonAsset
|
||||||
|
|
||||||
|
public protocol DiscoveryIntroBannerViewDelegate: AnyObject {
|
||||||
|
func discoveryIntroBannerView(_ bannerView: DiscoveryIntroBannerView, closeButtonDidPressed button: UIButton)
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class DiscoveryIntroBannerView: UIView {
|
||||||
|
|
||||||
|
let logger = Logger(subsystem: "DiscoveryIntroBannerView", category: "View")
|
||||||
|
|
||||||
|
var _disposeBag = Set<AnyCancellable>()
|
||||||
|
|
||||||
|
public weak var delegate: DiscoveryIntroBannerViewDelegate?
|
||||||
|
|
||||||
|
let label: UILabel = {
|
||||||
|
let label = UILabel()
|
||||||
|
label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 16, weight: .regular))
|
||||||
|
label.textColor = Asset.Colors.Label.primary.color
|
||||||
|
label.text = "These are the posts gaining traction in your corner of Mastodon." // TODO: i18n
|
||||||
|
label.numberOfLines = 0
|
||||||
|
return label
|
||||||
|
}()
|
||||||
|
|
||||||
|
let closeButton: HitTestExpandedButton = {
|
||||||
|
let button = HitTestExpandedButton(type: .system)
|
||||||
|
button.setImage(UIImage(systemName: "xmark.circle.fill"), for: .normal)
|
||||||
|
button.tintColor = Asset.Colors.Label.secondary.color
|
||||||
|
return button
|
||||||
|
}()
|
||||||
|
|
||||||
|
public override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
_init()
|
||||||
|
}
|
||||||
|
|
||||||
|
public required init?(coder: NSCoder) {
|
||||||
|
super.init(coder: coder)
|
||||||
|
_init()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
extension DiscoveryIntroBannerView {
|
||||||
|
private func _init() {
|
||||||
|
preservesSuperviewLayoutMargins = true
|
||||||
|
|
||||||
|
setupAppearance(theme: ThemeService.shared.currentTheme.value)
|
||||||
|
ThemeService.shared.currentTheme
|
||||||
|
.receive(on: DispatchQueue.main)
|
||||||
|
.sink { [weak self] theme in
|
||||||
|
guard let self = self else { return }
|
||||||
|
self.setupAppearance(theme: theme)
|
||||||
|
}
|
||||||
|
.store(in: &_disposeBag)
|
||||||
|
|
||||||
|
closeButton.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
addSubview(closeButton)
|
||||||
|
NSLayoutConstraint.activate([
|
||||||
|
closeButton.topAnchor.constraint(equalTo: topAnchor, constant: 16).priority(.required - 1),
|
||||||
|
layoutMarginsGuide.trailingAnchor.constraint(equalTo: closeButton.trailingAnchor),
|
||||||
|
closeButton.heightAnchor.constraint(equalToConstant: 20).priority(.required - 1),
|
||||||
|
closeButton.widthAnchor.constraint(equalToConstant: 20).priority(.required - 1),
|
||||||
|
])
|
||||||
|
|
||||||
|
label.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
addSubview(label)
|
||||||
|
NSLayoutConstraint.activate([
|
||||||
|
label.topAnchor.constraint(equalTo: topAnchor, constant: 16).priority(.required - 1),
|
||||||
|
label.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor),
|
||||||
|
closeButton.leadingAnchor.constraint(equalTo: label.trailingAnchor, constant: 10),
|
||||||
|
bottomAnchor.constraint(equalTo: label.bottomAnchor, constant: 16).priority(.required - 1),
|
||||||
|
])
|
||||||
|
|
||||||
|
closeButton.addTarget(self, action: #selector(DiscoveryIntroBannerView.closeButtonDidPressed(_:)), for: .touchUpInside)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension DiscoveryIntroBannerView {
|
||||||
|
@objc private func closeButtonDidPressed(_ sender: UIButton) {
|
||||||
|
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
|
||||||
|
delegate?.discoveryIntroBannerView(self, closeButtonDidPressed: sender)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension DiscoveryIntroBannerView {
|
||||||
|
|
||||||
|
private func setupAppearance(theme: Theme) {
|
||||||
|
backgroundColor = theme.systemBackgroundColor
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -39,6 +39,8 @@ final class NotificationTimelineViewController: UIViewController, NeedsDependenc
|
||||||
return tableView
|
return tableView
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
let cellFrameCache = NSCache<NSNumber, NSValue>()
|
||||||
|
|
||||||
deinit {
|
deinit {
|
||||||
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
||||||
}
|
}
|
||||||
|
@ -122,6 +124,16 @@ extension NotificationTimelineViewController {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - CellFrameCacheContainer
|
||||||
|
extension NotificationTimelineViewController: CellFrameCacheContainer {
|
||||||
|
func keyForCache(tableView: UITableView, indexPath: IndexPath) -> NSNumber? {
|
||||||
|
guard let diffableDataSource = viewModel.diffableDataSource else { return nil }
|
||||||
|
guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return nil }
|
||||||
|
let key = NSNumber(value: item.hashValue)
|
||||||
|
return key
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
extension NotificationTimelineViewController {
|
extension NotificationTimelineViewController {
|
||||||
|
|
||||||
@objc private func refreshControlValueChanged(_ sender: UIRefreshControl) {
|
@objc private func refreshControlValueChanged(_ sender: UIRefreshControl) {
|
||||||
|
@ -162,6 +174,13 @@ extension NotificationTimelineViewController: UITableViewDelegate, AutoGenerateT
|
||||||
|
|
||||||
// sourcery:end
|
// sourcery:end
|
||||||
|
|
||||||
|
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
|
||||||
|
guard let frame = retrieveCellFrame(tableView: tableView, indexPath: indexPath) else {
|
||||||
|
return 300
|
||||||
|
}
|
||||||
|
return ceil(frame.height)
|
||||||
|
}
|
||||||
|
|
||||||
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
|
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
|
||||||
guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else {
|
guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else {
|
||||||
return
|
return
|
||||||
|
@ -173,6 +192,10 @@ extension NotificationTimelineViewController: UITableViewDelegate, AutoGenerateT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
|
||||||
|
cacheCellFrame(tableView: tableView, didEndDisplaying: cell, forRowAt: indexPath)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - NotificationTableViewCellDelegate
|
// MARK: - NotificationTableViewCellDelegate
|
||||||
|
|
|
@ -12,6 +12,7 @@ import GameController
|
||||||
import AuthenticationServices
|
import AuthenticationServices
|
||||||
import MastodonAsset
|
import MastodonAsset
|
||||||
import MastodonLocalization
|
import MastodonLocalization
|
||||||
|
import MastodonUI
|
||||||
|
|
||||||
final class MastodonPickServerViewController: UIViewController, NeedsDependency {
|
final class MastodonPickServerViewController: UIViewController, NeedsDependency {
|
||||||
|
|
||||||
|
@ -145,6 +146,13 @@ extension MastodonPickServerViewController {
|
||||||
pickServerCellDelegate: self
|
pickServerCellDelegate: self
|
||||||
)
|
)
|
||||||
|
|
||||||
|
KeyboardResponderService
|
||||||
|
.configure(
|
||||||
|
scrollView: tableView,
|
||||||
|
layoutNeedsUpdate: viewModel.viewDidAppear.eraseToAnyPublisher()
|
||||||
|
)
|
||||||
|
.store(in: &disposeBag)
|
||||||
|
|
||||||
viewModel
|
viewModel
|
||||||
.selectedServer
|
.selectedServer
|
||||||
.map { $0 != nil }
|
.map { $0 != nil }
|
||||||
|
@ -238,6 +246,7 @@ extension MastodonPickServerViewController {
|
||||||
super.viewDidAppear(animated)
|
super.viewDidAppear(animated)
|
||||||
|
|
||||||
tableView.flashScrollIndicators()
|
tableView.flashScrollIndicators()
|
||||||
|
viewModel.viewDidAppear.send()
|
||||||
}
|
}
|
||||||
|
|
||||||
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
|
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
|
||||||
|
@ -416,28 +425,6 @@ extension MastodonPickServerViewController: UITableViewDelegate {
|
||||||
viewModel.selectedServer.send(nil)
|
viewModel.selectedServer.send(nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
|
|
||||||
guard let diffableDataSource = viewModel.diffableDataSource else { return }
|
|
||||||
guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return }
|
|
||||||
|
|
||||||
switch item {
|
|
||||||
// case .categoryPicker:
|
|
||||||
// guard let cell = cell as? PickServerCategoriesCell else { return }
|
|
||||||
// guard let diffableDataSource = cell.diffableDataSource else { return }
|
|
||||||
// let snapshot = diffableDataSource.snapshot()
|
|
||||||
//
|
|
||||||
// let item = viewModel.selectCategoryItem.value
|
|
||||||
// guard let section = snapshot.indexOfSection(.main),
|
|
||||||
// let row = snapshot.indexOfItem(item) else { return }
|
|
||||||
// cell.collectionView.selectItem(at: IndexPath(item: row, section: section), animated: false, scrollPosition: .centeredHorizontally)
|
|
||||||
// case .search:
|
|
||||||
// guard let cell = cell as? PickServerSearchCell else { return }
|
|
||||||
// cell.searchTextField.text = viewModel.searchText.value
|
|
||||||
default:
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
|
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
|
||||||
guard let diffableDataSource = viewModel.diffableDataSource else { return nil }
|
guard let diffableDataSource = viewModel.diffableDataSource else { return nil }
|
||||||
let snapshot = diffableDataSource.snapshot()
|
let snapshot = diffableDataSource.snapshot()
|
||||||
|
|
|
@ -45,6 +45,7 @@ class MastodonPickServerViewModel: NSObject {
|
||||||
let indexedServers = CurrentValueSubject<[Mastodon.Entity.Server], Never>([])
|
let indexedServers = CurrentValueSubject<[Mastodon.Entity.Server], Never>([])
|
||||||
let unindexedServers = CurrentValueSubject<[Mastodon.Entity.Server]?, Never>([]) // set nil when loading
|
let unindexedServers = CurrentValueSubject<[Mastodon.Entity.Server]?, Never>([]) // set nil when loading
|
||||||
let viewWillAppear = PassthroughSubject<Void, Never>()
|
let viewWillAppear = PassthroughSubject<Void, Never>()
|
||||||
|
let viewDidAppear = CurrentValueSubject<Void, Never>(Void())
|
||||||
|
|
||||||
// output
|
// output
|
||||||
var diffableDataSource: UITableViewDiffableDataSource<PickServerSection, PickServerItem>?
|
var diffableDataSource: UITableViewDiffableDataSource<PickServerSection, PickServerItem>?
|
||||||
|
|
|
@ -185,12 +185,12 @@ extension PickServerServerSectionTableHeaderView {
|
||||||
|
|
||||||
override func accessibilityElementCount() -> Int {
|
override func accessibilityElementCount() -> Int {
|
||||||
guard let diffableDataSource = diffableDataSource else { return 0 }
|
guard let diffableDataSource = diffableDataSource else { return 0 }
|
||||||
return diffableDataSource.snapshot().itemIdentifiers.count
|
return diffableDataSource.snapshot().itemIdentifiers.count + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
override func accessibilityElement(at index: Int) -> Any? {
|
override func accessibilityElement(at index: Int) -> Any? {
|
||||||
guard let item = collectionView.cellForItem(at: IndexPath(item: index, section: 0)) else { return nil }
|
if let item = collectionView.cellForItem(at: IndexPath(item: index, section: 0)) { return item }
|
||||||
return item
|
return searchTextField
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import MastodonLocalization
|
||||||
|
|
||||||
final class HeightFixedSearchBar: UISearchBar {
|
final class HeightFixedSearchBar: UISearchBar {
|
||||||
override var intrinsicContentSize: CGSize {
|
override var intrinsicContentSize: CGSize {
|
||||||
return CGSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude)
|
return CGSize(width: CGFloat.greatestFiniteMagnitude, height: 36)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,14 +62,14 @@ extension MediaView {
|
||||||
{
|
{
|
||||||
let placeholder = UIImage.placeholder(color: .systemGray6)
|
let placeholder = UIImage.placeholder(color: .systemGray6)
|
||||||
let request = URLRequest(url: url)
|
let request = URLRequest(url: url)
|
||||||
ImageDownloader.default.download(request) { response in
|
ImageDownloader.default.download(request, completion: { response in
|
||||||
switch response.result {
|
switch response.result {
|
||||||
case .success(let image):
|
case .success(let image):
|
||||||
configuration.previewImage = image
|
configuration.previewImage = image
|
||||||
case .failure(let error):
|
case .failure:
|
||||||
configuration.previewImage = placeholder
|
configuration.previewImage = placeholder
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if let assetURL = configuration.assetURL,
|
if let assetURL = configuration.assetURL,
|
||||||
|
@ -84,7 +84,7 @@ extension MediaView {
|
||||||
.store(in: &configuration.blurhashImageDisposeBag)
|
.store(in: &configuration.blurhashImageDisposeBag)
|
||||||
}
|
}
|
||||||
|
|
||||||
configuration.isReveal = status.sensitive ? status.isMediaSensitiveToggled : true
|
configuration.isReveal = status.isMediaSensitive ? status.isSensitiveToggled : true
|
||||||
|
|
||||||
return configuration
|
return configuration
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,7 +156,6 @@ extension StatusView {
|
||||||
.map { _ in author.avatarImageURL() }
|
.map { _ in author.avatarImageURL() }
|
||||||
.assign(to: \.authorAvatarImageURL, on: viewModel)
|
.assign(to: \.authorAvatarImageURL, on: viewModel)
|
||||||
.store(in: &disposeBag)
|
.store(in: &disposeBag)
|
||||||
|
|
||||||
// author name
|
// author name
|
||||||
Publishers.CombineLatest(
|
Publishers.CombineLatest(
|
||||||
author.publisher(for: \.displayName),
|
author.publisher(for: \.displayName),
|
||||||
|
@ -268,25 +267,19 @@ extension StatusView {
|
||||||
.assign(to: \.visibility, on: viewModel)
|
.assign(to: \.visibility, on: viewModel)
|
||||||
.store(in: &disposeBag)
|
.store(in: &disposeBag)
|
||||||
// sensitive
|
// sensitive
|
||||||
status.publisher(for: \.isContentSensitiveToggled)
|
viewModel.isContentSensitive = status.isContentSensitive
|
||||||
.assign(to: \.isContentSensitiveToggled, on: viewModel)
|
status.publisher(for: \.isSensitiveToggled)
|
||||||
|
.assign(to: \.isSensitiveToggled, on: viewModel)
|
||||||
.store(in: &disposeBag)
|
.store(in: &disposeBag)
|
||||||
|
|
||||||
|
|
||||||
// viewModel.source = status.source
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private func configureMedia(status: Status) {
|
private func configureMedia(status: Status) {
|
||||||
let status = status.reblog ?? status
|
let status = status.reblog ?? status
|
||||||
|
|
||||||
viewModel.isMediaSensitive = status.sensitive && !status.attachments.isEmpty // some servers set media sensitive even empty attachments
|
viewModel.isMediaSensitive = status.isMediaSensitive
|
||||||
|
|
||||||
let configurations = MediaView.configuration(status: status)
|
let configurations = MediaView.configuration(status: status)
|
||||||
viewModel.mediaViewConfigurations = configurations
|
viewModel.mediaViewConfigurations = configurations
|
||||||
|
|
||||||
status.publisher(for: \.isMediaSensitiveToggled)
|
|
||||||
.assign(to: \.isMediaSensitiveToggled, on: viewModel)
|
|
||||||
.store(in: &disposeBag)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private func configurePoll(status: Status) {
|
private func configurePoll(status: Status) {
|
||||||
|
|
|
@ -61,7 +61,7 @@ extension StatusTableViewCell {
|
||||||
statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16),
|
statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16),
|
||||||
containerViewLeadingLayoutConstraint,
|
containerViewLeadingLayoutConstraint,
|
||||||
containerViewTrailingLayoutConstraint,
|
containerViewTrailingLayoutConstraint,
|
||||||
statusView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor),
|
contentView.bottomAnchor.constraint(equalTo: statusView.bottomAnchor, constant: 10),
|
||||||
])
|
])
|
||||||
statusView.setup(style: .inline)
|
statusView.setup(style: .inline)
|
||||||
updateContainerViewMarginConstraints()
|
updateContainerViewMarginConstraints()
|
||||||
|
|
|
@ -112,7 +112,7 @@ extension StatusThreadRootTableViewCell {
|
||||||
statusView.statusMetricView
|
statusView.statusMetricView
|
||||||
]
|
]
|
||||||
|
|
||||||
if !statusView.viewModel.isSensitive {
|
if !statusView.viewModel.isMediaSensitive {
|
||||||
elements.removeAll(where: { $0 === statusView.contentSensitiveeToggleButton })
|
elements.removeAll(where: { $0 === statusView.contentSensitiveeToggleButton })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.3.1</string>
|
<string>1.3.1</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>110</string>
|
<string>113</string>
|
||||||
<key>NSExtension</key>
|
<key>NSExtension</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSExtensionAttributes</key>
|
<key>NSExtensionAttributes</key>
|
||||||
|
|
|
@ -32,12 +32,13 @@ let package = Package(
|
||||||
.package(url: "https://github.com/apple/swift-nio.git", from: "1.0.0"),
|
.package(url: "https://github.com/apple/swift-nio.git", from: "1.0.0"),
|
||||||
.package(url: "https://github.com/kean/Nuke.git", from: "10.3.1"),
|
.package(url: "https://github.com/kean/Nuke.git", from: "10.3.1"),
|
||||||
.package(url: "https://github.com/Flipboard/FLAnimatedImage.git", from: "1.0.0"),
|
.package(url: "https://github.com/Flipboard/FLAnimatedImage.git", from: "1.0.0"),
|
||||||
.package(url: "https://github.com/TwidereProject/MetaTextKit.git", .exact("2.2.1")),
|
.package(url: "https://github.com/TwidereProject/MetaTextKit.git", .exact("2.2.2")),
|
||||||
.package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.4.0"),
|
.package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.4.0"),
|
||||||
.package(url: "https://github.com/Alamofire/AlamofireImage.git", from: "4.1.0"),
|
.package(url: "https://github.com/Alamofire/AlamofireImage.git", from: "4.1.0"),
|
||||||
.package(name: "NukeFLAnimatedImagePlugin", url: "https://github.com/kean/Nuke-FLAnimatedImage-Plugin.git", from: "8.0.0"),
|
.package(name: "NukeFLAnimatedImagePlugin", url: "https://github.com/kean/Nuke-FLAnimatedImage-Plugin.git", from: "8.0.0"),
|
||||||
.package(name: "UITextView+Placeholder", url: "https://github.com/MainasuK/UITextView-Placeholder.git", from: "1.4.1"),
|
.package(name: "UITextView+Placeholder", url: "https://github.com/MainasuK/UITextView-Placeholder.git", from: "1.4.1"),
|
||||||
.package(name: "Introspect", url: "https://github.com/siteline/SwiftUI-Introspect.git", from: "0.1.3")
|
.package(name: "Introspect", url: "https://github.com/siteline/SwiftUI-Introspect.git", from: "0.1.3"),
|
||||||
|
.package(name: "FaviconFinder", url: "https://github.com/will-lumley/FaviconFinder.git", from: "3.2.2"),
|
||||||
],
|
],
|
||||||
targets: [
|
targets: [
|
||||||
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
|
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
|
||||||
|
@ -94,8 +95,8 @@ let package = Package(
|
||||||
.product(name: "Alamofire", package: "Alamofire"),
|
.product(name: "Alamofire", package: "Alamofire"),
|
||||||
.product(name: "AlamofireImage", package: "AlamofireImage"),
|
.product(name: "AlamofireImage", package: "AlamofireImage"),
|
||||||
.product(name: "MetaTextKit", package: "MetaTextKit"),
|
.product(name: "MetaTextKit", package: "MetaTextKit"),
|
||||||
.product(name: "MastodonMeta", package: "MetaTextKit"),
|
|
||||||
.product(name: "FLAnimatedImage", package: "FLAnimatedImage"),
|
.product(name: "FLAnimatedImage", package: "FLAnimatedImage"),
|
||||||
|
.product(name: "FaviconFinder", package: "FaviconFinder"),
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
.testTarget(
|
.testTarget(
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="19574" systemVersion="21D62" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
|
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="20086" systemVersion="21E258" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
|
||||||
<entity name="Application" representedClassName="CoreDataStack.Application" syncable="YES">
|
<entity name="Application" representedClassName="CoreDataStack.Application" syncable="YES">
|
||||||
<attribute name="identifier" optional="YES" attributeType="UUID" usesScalarValueType="NO"/>
|
<attribute name="identifier" optional="YES" attributeType="UUID" usesScalarValueType="NO"/>
|
||||||
<attribute name="name" attributeType="String"/>
|
<attribute name="name" attributeType="String"/>
|
||||||
|
@ -185,8 +185,7 @@
|
||||||
<attribute name="identifier" attributeType="String"/>
|
<attribute name="identifier" attributeType="String"/>
|
||||||
<attribute name="inReplyToAccountID" optional="YES" attributeType="String"/>
|
<attribute name="inReplyToAccountID" optional="YES" attributeType="String"/>
|
||||||
<attribute name="inReplyToID" optional="YES" attributeType="String"/>
|
<attribute name="inReplyToID" optional="YES" attributeType="String"/>
|
||||||
<attribute name="isContentSensitiveToggled" transient="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
|
<attribute name="isSensitiveToggled" transient="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
|
||||||
<attribute name="isMediaSensitiveToggled" transient="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
|
|
||||||
<attribute name="language" optional="YES" attributeType="String"/>
|
<attribute name="language" optional="YES" attributeType="String"/>
|
||||||
<attribute name="mentions" optional="YES" attributeType="Binary"/>
|
<attribute name="mentions" optional="YES" attributeType="Binary"/>
|
||||||
<attribute name="reblogsCount" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
|
<attribute name="reblogsCount" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
|
||||||
|
@ -262,7 +261,7 @@
|
||||||
<element name="PrivateNote" positionX="0" positionY="0" width="128" height="89"/>
|
<element name="PrivateNote" positionX="0" positionY="0" width="128" height="89"/>
|
||||||
<element name="SearchHistory" positionX="0" positionY="0" width="128" height="149"/>
|
<element name="SearchHistory" positionX="0" positionY="0" width="128" height="149"/>
|
||||||
<element name="Setting" positionX="72" positionY="162" width="128" height="164"/>
|
<element name="Setting" positionX="72" positionY="162" width="128" height="164"/>
|
||||||
<element name="Status" positionX="0" positionY="0" width="128" height="629"/>
|
<element name="Status" positionX="0" positionY="0" width="128" height="614"/>
|
||||||
<element name="Subscription" positionX="81" positionY="171" width="128" height="179"/>
|
<element name="Subscription" positionX="81" positionY="171" width="128" height="179"/>
|
||||||
<element name="SubscriptionAlerts" positionX="72" positionY="162" width="128" height="164"/>
|
<element name="SubscriptionAlerts" positionX="72" positionY="162" width="128" height="164"/>
|
||||||
<element name="Tag" positionX="0" positionY="0" width="128" height="149"/>
|
<element name="Tag" positionX="0" positionY="0" width="128" height="149"/>
|
||||||
|
|
|
@ -42,9 +42,7 @@ public final class Status: NSManagedObject {
|
||||||
@NSManaged public private(set) var spoilerText: String?
|
@NSManaged public private(set) var spoilerText: String?
|
||||||
|
|
||||||
// sourcery: autoUpdatableObject
|
// sourcery: autoUpdatableObject
|
||||||
@NSManaged public private(set) var isContentSensitiveToggled: Bool
|
@NSManaged public private(set) var isSensitiveToggled: Bool
|
||||||
// sourcery: autoUpdatableObject
|
|
||||||
@NSManaged public private(set) var isMediaSensitiveToggled: Bool
|
|
||||||
|
|
||||||
@NSManaged public private(set) var application: Application?
|
@NSManaged public private(set) var application: Application?
|
||||||
|
|
||||||
|
@ -432,14 +430,9 @@ extension Status: AutoUpdatableObject {
|
||||||
self.spoilerText = spoilerText
|
self.spoilerText = spoilerText
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public func update(isContentSensitiveToggled: Bool) {
|
public func update(isSensitiveToggled: Bool) {
|
||||||
if self.isContentSensitiveToggled != isContentSensitiveToggled {
|
if self.isSensitiveToggled != isSensitiveToggled {
|
||||||
self.isContentSensitiveToggled = isContentSensitiveToggled
|
self.isSensitiveToggled = isSensitiveToggled
|
||||||
}
|
|
||||||
}
|
|
||||||
public func update(isMediaSensitiveToggled: Bool) {
|
|
||||||
if self.isMediaSensitiveToggled != isMediaSensitiveToggled {
|
|
||||||
self.isMediaSensitiveToggled = isMediaSensitiveToggled
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public func update(reblogsCount: Int64) {
|
public func update(reblogsCount: Int64) {
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// Preference+Discovery.swift
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Created by MainasuK on 2022-4-19.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
extension UserDefaults {
|
||||||
|
|
||||||
|
@objc public dynamic var discoveryIntroBannerNeedsHidden: Bool {
|
||||||
|
get {
|
||||||
|
return bool(forKey: #function)
|
||||||
|
}
|
||||||
|
set { self[#function] = newValue }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -543,6 +543,18 @@ public enum L10n {
|
||||||
public static let title = L10n.tr("Localizable", "Scene.ConfirmEmail.OpenEmailApp.Title")
|
public static let title = L10n.tr("Localizable", "Scene.ConfirmEmail.OpenEmailApp.Title")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public enum Discovery {
|
||||||
|
public enum Tabs {
|
||||||
|
/// For You
|
||||||
|
public static let forYou = L10n.tr("Localizable", "Scene.Discovery.Tabs.ForYou")
|
||||||
|
/// Hashtags
|
||||||
|
public static let hashtags = L10n.tr("Localizable", "Scene.Discovery.Tabs.Hashtags")
|
||||||
|
/// News
|
||||||
|
public static let news = L10n.tr("Localizable", "Scene.Discovery.Tabs.News")
|
||||||
|
/// Posts
|
||||||
|
public static let posts = L10n.tr("Localizable", "Scene.Discovery.Tabs.Posts")
|
||||||
|
}
|
||||||
|
}
|
||||||
public enum Favorite {
|
public enum Favorite {
|
||||||
/// Your Favorites
|
/// Your Favorites
|
||||||
public static let title = L10n.tr("Localizable", "Scene.Favorite.Title")
|
public static let title = L10n.tr("Localizable", "Scene.Favorite.Title")
|
||||||
|
|
|
@ -201,6 +201,10 @@
|
||||||
"Scene.ConfirmEmail.Subtitle" = "لقد أرسلنا للتو بريد إلكتروني إلى %@،
|
"Scene.ConfirmEmail.Subtitle" = "لقد أرسلنا للتو بريد إلكتروني إلى %@،
|
||||||
انقر على الرابط لتأكيد حسابك.";
|
انقر على الرابط لتأكيد حسابك.";
|
||||||
"Scene.ConfirmEmail.Title" = "شيءٌ أخير.";
|
"Scene.ConfirmEmail.Title" = "شيءٌ أخير.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "For You";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "الوسوم";
|
||||||
|
"Scene.Discovery.Tabs.News" = "الأخبار";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "المنشورات";
|
||||||
"Scene.Favorite.Title" = "مُفضَّلَتُك";
|
"Scene.Favorite.Title" = "مُفضَّلَتُك";
|
||||||
"Scene.Follower.Footer" = "لا يُمكِن عَرض المُتابِعين مِنَ الخوادم الأُخرى.";
|
"Scene.Follower.Footer" = "لا يُمكِن عَرض المُتابِعين مِنَ الخوادم الأُخرى.";
|
||||||
"Scene.Following.Footer" = "لا يُمكِن عَرض المُتابَعات مِنَ الخوادم الأُخرى.";
|
"Scene.Following.Footer" = "لا يُمكِن عَرض المُتابَعات مِنَ الخوادم الأُخرى.";
|
||||||
|
|
|
@ -471,15 +471,15 @@
|
||||||
<key>zero</key>
|
<key>zero</key>
|
||||||
<string>مُنذُ لَحظة</string>
|
<string>مُنذُ لَحظة</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>مُنذُ سنة</string>
|
<string>مُنذُ %ldع</string>
|
||||||
<key>two</key>
|
<key>two</key>
|
||||||
<string>مُنذُ سنتين</string>
|
<string>مُنذُ %ldع</string>
|
||||||
<key>few</key>
|
<key>few</key>
|
||||||
<string>مُنذُ %ld سنين</string>
|
<string>مُنذُ %ldع</string>
|
||||||
<key>many</key>
|
<key>many</key>
|
||||||
<string>مُنذُ %ld سنةً</string>
|
<string>مُنذُ %ldع</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>مُنذُ %ld سنة</string>
|
<string>مُنذُ %ldع</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.month.ago.abbr</key>
|
<key>date.month.ago.abbr</key>
|
||||||
|
@ -495,15 +495,15 @@
|
||||||
<key>zero</key>
|
<key>zero</key>
|
||||||
<string>مُنذُ لَحظة</string>
|
<string>مُنذُ لَحظة</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>مُنذُ شهر</string>
|
<string>مُنذُ %ldش</string>
|
||||||
<key>two</key>
|
<key>two</key>
|
||||||
<string>مُنذُ شهرين</string>
|
<string>مُنذُ %ldش</string>
|
||||||
<key>few</key>
|
<key>few</key>
|
||||||
<string>مُنذُ %ld أشهُر</string>
|
<string>مُنذُ %ldش</string>
|
||||||
<key>many</key>
|
<key>many</key>
|
||||||
<string>مُنذُ %ld شهرًا</string>
|
<string>مُنذُ %ldش</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>مُنذُ %ld شهر</string>
|
<string>مُنذُ %ldش</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.day.ago.abbr</key>
|
<key>date.day.ago.abbr</key>
|
||||||
|
@ -519,15 +519,15 @@
|
||||||
<key>zero</key>
|
<key>zero</key>
|
||||||
<string>مُنذُ لَحظة</string>
|
<string>مُنذُ لَحظة</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>مُنذُ يوم</string>
|
<string>مُنذُ %ldي</string>
|
||||||
<key>two</key>
|
<key>two</key>
|
||||||
<string>مُنذُ يومين</string>
|
<string>مُنذُ %ldي</string>
|
||||||
<key>few</key>
|
<key>few</key>
|
||||||
<string>مُنذُ %ld أيام</string>
|
<string>مُنذُ %ldي</string>
|
||||||
<key>many</key>
|
<key>many</key>
|
||||||
<string>مُنذُ %ld يومًا</string>
|
<string>مُنذُ %ldي</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>مُنذُ %ld يوم</string>
|
<string>مُنذُ %ldي</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.hour.ago.abbr</key>
|
<key>date.hour.ago.abbr</key>
|
||||||
|
@ -543,15 +543,15 @@
|
||||||
<key>zero</key>
|
<key>zero</key>
|
||||||
<string>مُنذُ لَحظة</string>
|
<string>مُنذُ لَحظة</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>مُنذُ ساعة</string>
|
<string>مُنذُ %ldس</string>
|
||||||
<key>two</key>
|
<key>two</key>
|
||||||
<string>مُنذُ ساعتين</string>
|
<string>مُنذُ %ldس</string>
|
||||||
<key>few</key>
|
<key>few</key>
|
||||||
<string>مُنذُ %ld ساعات</string>
|
<string>مُنذُ %ldس</string>
|
||||||
<key>many</key>
|
<key>many</key>
|
||||||
<string>مُنذُ %ld ساعةًَ</string>
|
<string>مُنذُ %ldس</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>مُنذُ %ld ساعة</string>
|
<string>مُنذُ %ldس</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.minute.ago.abbr</key>
|
<key>date.minute.ago.abbr</key>
|
||||||
|
@ -567,15 +567,15 @@
|
||||||
<key>zero</key>
|
<key>zero</key>
|
||||||
<string>مُنذُ لَحظة</string>
|
<string>مُنذُ لَحظة</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>مُنذُ دقيقة</string>
|
<string>مُنذُ %ldد</string>
|
||||||
<key>two</key>
|
<key>two</key>
|
||||||
<string>مُنذُ دقيقتان</string>
|
<string>مُنذُ %ldد</string>
|
||||||
<key>few</key>
|
<key>few</key>
|
||||||
<string>مُنذُ %ld دقائق</string>
|
<string>مُنذُ %ldد</string>
|
||||||
<key>many</key>
|
<key>many</key>
|
||||||
<string>مُنذُ %ld دقيقةً</string>
|
<string>مُنذُ %ldد</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>مُنذُ %ld دقيقة</string>
|
<string>مُنذُ %ldد</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>date.second.ago.abbr</key>
|
<key>date.second.ago.abbr</key>
|
||||||
|
@ -591,15 +591,15 @@
|
||||||
<key>zero</key>
|
<key>zero</key>
|
||||||
<string>مُنذُ لَحظة</string>
|
<string>مُنذُ لَحظة</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>مُنذُ ثانية</string>
|
<string>مُنذُ %ldث</string>
|
||||||
<key>two</key>
|
<key>two</key>
|
||||||
<string>مُنذُ ثانيتين</string>
|
<string>مُنذُ %ldث</string>
|
||||||
<key>few</key>
|
<key>few</key>
|
||||||
<string>مُنذُ %ld ثوان</string>
|
<string>مُنذُ %ldث</string>
|
||||||
<key>many</key>
|
<key>many</key>
|
||||||
<string>مُنذُ %ld ثانية</string>
|
<string>مُنذُ %ldث</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>مُنذُ %ld ثانية</string>
|
<string>مُنذُ %ldث</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
"Common.Alerts.Common.PleaseTryAgain" = "Si us plau intenta-ho de nou.";
|
"Common.Alerts.Common.PleaseTryAgain" = "Si us plau intenta-ho de nou.";
|
||||||
"Common.Alerts.Common.PleaseTryAgainLater" = "Si us plau, prova-ho més tard.";
|
"Common.Alerts.Common.PleaseTryAgainLater" = "Si us plau, prova-ho més tard.";
|
||||||
"Common.Alerts.DeletePost.Message" = "Estàs segur que vols suprimir aquesta publicació?";
|
"Common.Alerts.DeletePost.Message" = "Estàs segur que vols suprimir aquesta publicació?";
|
||||||
"Common.Alerts.DeletePost.Title" = "Estàs segur que vols suprimir aquesta publicació?";
|
"Common.Alerts.DeletePost.Title" = "Esborrar Publicació";
|
||||||
"Common.Alerts.DiscardPostContent.Message" = "Confirma per a descartar el contingut de la publicació composta.";
|
"Common.Alerts.DiscardPostContent.Message" = "Confirma per a descartar el contingut de la publicació composta.";
|
||||||
"Common.Alerts.DiscardPostContent.Title" = "Descarta l'esborrany";
|
"Common.Alerts.DiscardPostContent.Title" = "Descarta l'esborrany";
|
||||||
"Common.Alerts.EditProfileFailure.Message" = "No es pot editar el perfil. Si us plau torna-ho a provar.";
|
"Common.Alerts.EditProfileFailure.Message" = "No es pot editar el perfil. Si us plau torna-ho a provar.";
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
Comprova la teva connexió a Internet.";
|
Comprova la teva connexió a Internet.";
|
||||||
"Common.Alerts.PublishPostFailure.Title" = "Error de Publicació";
|
"Common.Alerts.PublishPostFailure.Title" = "Error de Publicació";
|
||||||
"Common.Alerts.SavePhotoFailure.Message" = "Activa el permís d'accés a la biblioteca de fotos per desar-la.";
|
"Common.Alerts.SavePhotoFailure.Message" = "Activa el permís d'accés a la biblioteca de fotos per desar-la.";
|
||||||
"Common.Alerts.SavePhotoFailure.Title" = "Desa l'Error de la Foto";
|
"Common.Alerts.SavePhotoFailure.Title" = "Error al Desar la Foto";
|
||||||
"Common.Alerts.ServerError.Title" = "Error del Servidor";
|
"Common.Alerts.ServerError.Title" = "Error del Servidor";
|
||||||
"Common.Alerts.SignOut.Confirm" = "Tancar Sessió";
|
"Common.Alerts.SignOut.Confirm" = "Tancar Sessió";
|
||||||
"Common.Alerts.SignOut.Message" = "Estàs segur que vols tancar la sessió?";
|
"Common.Alerts.SignOut.Message" = "Estàs segur que vols tancar la sessió?";
|
||||||
|
@ -36,7 +36,7 @@ Comprova la teva connexió a Internet.";
|
||||||
"Common.Controls.Actions.Discard" = "Descarta";
|
"Common.Controls.Actions.Discard" = "Descarta";
|
||||||
"Common.Controls.Actions.Done" = "Fet";
|
"Common.Controls.Actions.Done" = "Fet";
|
||||||
"Common.Controls.Actions.Edit" = "Edita";
|
"Common.Controls.Actions.Edit" = "Edita";
|
||||||
"Common.Controls.Actions.FindPeople" = "Busca persones per seguir";
|
"Common.Controls.Actions.FindPeople" = "Busca persones a seguir";
|
||||||
"Common.Controls.Actions.ManuallySearch" = "Cerca manualment a canvi";
|
"Common.Controls.Actions.ManuallySearch" = "Cerca manualment a canvi";
|
||||||
"Common.Controls.Actions.Next" = "Següent";
|
"Common.Controls.Actions.Next" = "Següent";
|
||||||
"Common.Controls.Actions.Ok" = "D'acord";
|
"Common.Controls.Actions.Ok" = "D'acord";
|
||||||
|
@ -81,18 +81,18 @@ Comprova la teva connexió a Internet.";
|
||||||
"Common.Controls.Keyboard.Common.OpenSettings" = "Obre la configuració";
|
"Common.Controls.Keyboard.Common.OpenSettings" = "Obre la configuració";
|
||||||
"Common.Controls.Keyboard.Common.ShowFavorites" = "Mostra els Favorits";
|
"Common.Controls.Keyboard.Common.ShowFavorites" = "Mostra els Favorits";
|
||||||
"Common.Controls.Keyboard.Common.SwitchToTab" = "Canviar a %@";
|
"Common.Controls.Keyboard.Common.SwitchToTab" = "Canviar a %@";
|
||||||
"Common.Controls.Keyboard.SegmentedControl.NextSection" = "Secció següent";
|
"Common.Controls.Keyboard.SegmentedControl.NextSection" = "Secció Següent";
|
||||||
"Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "Secció anterior";
|
"Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "Secció Anterior";
|
||||||
"Common.Controls.Keyboard.Timeline.NextStatus" = "Publicació següent";
|
"Common.Controls.Keyboard.Timeline.NextStatus" = "Publicació següent";
|
||||||
"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "Obre el perfil de l'autor";
|
"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "Obre el Perfil de l'Autor";
|
||||||
"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "Obre el perfil del impulsor";
|
"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "Obre el Perfil del Impulsor";
|
||||||
"Common.Controls.Keyboard.Timeline.OpenStatus" = "Obre la publicació";
|
"Common.Controls.Keyboard.Timeline.OpenStatus" = "Obre la publicació";
|
||||||
"Common.Controls.Keyboard.Timeline.PreviewImage" = "Vista prèvia de l'Imatge";
|
"Common.Controls.Keyboard.Timeline.PreviewImage" = "Vista prèvia de l'Imatge";
|
||||||
"Common.Controls.Keyboard.Timeline.PreviousStatus" = "Publicació anterior";
|
"Common.Controls.Keyboard.Timeline.PreviousStatus" = "Publicació anterior";
|
||||||
"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Respon a la publicació";
|
"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Respon a la Publicació";
|
||||||
"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Commuta l'Avís de Contingut";
|
"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Commuta l'Avís de Contingut";
|
||||||
"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Commuta el Favorit de la publicació";
|
"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Commuta el Favorit de la Publicació";
|
||||||
"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Commuta l'impuls de la publicació";
|
"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Commuta l'Impuls de la Publicació";
|
||||||
"Common.Controls.Status.Actions.Favorite" = "Favorit";
|
"Common.Controls.Status.Actions.Favorite" = "Favorit";
|
||||||
"Common.Controls.Status.Actions.Hide" = "Amaga";
|
"Common.Controls.Status.Actions.Hide" = "Amaga";
|
||||||
"Common.Controls.Status.Actions.Menu" = "Menú";
|
"Common.Controls.Status.Actions.Menu" = "Menú";
|
||||||
|
@ -105,10 +105,10 @@ Comprova la teva connexió a Internet.";
|
||||||
"Common.Controls.Status.Actions.Unfavorite" = "Desfer Favorit";
|
"Common.Controls.Status.Actions.Unfavorite" = "Desfer Favorit";
|
||||||
"Common.Controls.Status.Actions.Unreblog" = "Desfer l'impuls";
|
"Common.Controls.Status.Actions.Unreblog" = "Desfer l'impuls";
|
||||||
"Common.Controls.Status.ContentWarning" = "Advertència de Contingut";
|
"Common.Controls.Status.ContentWarning" = "Advertència de Contingut";
|
||||||
"Common.Controls.Status.MediaContentWarning" = "Toca qualsevol lloc per mostrar";
|
"Common.Controls.Status.MediaContentWarning" = "Toca qualsevol lloc per a mostrar";
|
||||||
"Common.Controls.Status.Poll.Closed" = "Finalitzada";
|
"Common.Controls.Status.Poll.Closed" = "Finalitzada";
|
||||||
"Common.Controls.Status.Poll.Vote" = "Vota";
|
"Common.Controls.Status.Poll.Vote" = "Vota";
|
||||||
"Common.Controls.Status.ShowPost" = "Mostra la publicació";
|
"Common.Controls.Status.ShowPost" = "Mostra la Publicació";
|
||||||
"Common.Controls.Status.ShowUserProfile" = "Mostra el perfil de l'usuari";
|
"Common.Controls.Status.ShowUserProfile" = "Mostra el perfil de l'usuari";
|
||||||
"Common.Controls.Status.Tag.Email" = "Correu electrònic";
|
"Common.Controls.Status.Tag.Email" = "Correu electrònic";
|
||||||
"Common.Controls.Status.Tag.Emoji" = "Emoji";
|
"Common.Controls.Status.Tag.Emoji" = "Emoji";
|
||||||
|
@ -129,7 +129,7 @@ Comprova la teva connexió a Internet.";
|
||||||
"Common.Controls.Tabs.Search" = "Cerca";
|
"Common.Controls.Tabs.Search" = "Cerca";
|
||||||
"Common.Controls.Timeline.Filtered" = "Filtrat";
|
"Common.Controls.Timeline.Filtered" = "Filtrat";
|
||||||
"Common.Controls.Timeline.Header.BlockedWarning" = "No pots veure el perfil d'aquest usuari
|
"Common.Controls.Timeline.Header.BlockedWarning" = "No pots veure el perfil d'aquest usuari
|
||||||
fins que et desbloquegi.";
|
fins que et desbloquegi.";
|
||||||
"Common.Controls.Timeline.Header.BlockingWarning" = "No pots veure el perfil d'aquest usuari
|
"Common.Controls.Timeline.Header.BlockingWarning" = "No pots veure el perfil d'aquest usuari
|
||||||
fins que el desbloquegis.
|
fins que el desbloquegis.
|
||||||
El teu perfil els sembla així.";
|
El teu perfil els sembla així.";
|
||||||
|
@ -141,8 +141,8 @@ El teu perfil els sembla així.";
|
||||||
fins que el desbloquegis.
|
fins que el desbloquegis.
|
||||||
El teu perfil els sembla així.";
|
El teu perfil els sembla així.";
|
||||||
"Common.Controls.Timeline.Header.UserSuspendedWarning" = "El compte de %@ ha estat suspès.";
|
"Common.Controls.Timeline.Header.UserSuspendedWarning" = "El compte de %@ ha estat suspès.";
|
||||||
"Common.Controls.Timeline.Loader.LoadMissingPosts" = "Carrega les publicacions que falten";
|
"Common.Controls.Timeline.Loader.LoadMissingPosts" = "Carrega les publicacions faltants";
|
||||||
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Carregant les publicacions que falten...";
|
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Carregant les publicacions faltants...";
|
||||||
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Mostra més respostes";
|
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Mostra més respostes";
|
||||||
"Common.Controls.Timeline.Timestamp.Now" = "Ara";
|
"Common.Controls.Timeline.Timestamp.Now" = "Ara";
|
||||||
"Scene.AccountList.AddAccount" = "Afegir compte";
|
"Scene.AccountList.AddAccount" = "Afegir compte";
|
||||||
|
@ -198,9 +198,12 @@ carregat a Mastodon.";
|
||||||
"Scene.ConfirmEmail.OpenEmailApp.Mail" = "Correu electrònic";
|
"Scene.ConfirmEmail.OpenEmailApp.Mail" = "Correu electrònic";
|
||||||
"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Obre el Client de Correu electrònic";
|
"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Obre el Client de Correu electrònic";
|
||||||
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Comprova la teva safata d'entrada.";
|
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Comprova la teva safata d'entrada.";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "Acabem d'enviar un correu electrònic a %@,
|
"Scene.ConfirmEmail.Subtitle" = "Toca l'enllaç del correu electrònic que t'hem enviat per a confirmar el teu compte.";
|
||||||
toca l'enllaç per a confirmar el teu compte.";
|
|
||||||
"Scene.ConfirmEmail.Title" = "Una última cosa.";
|
"Scene.ConfirmEmail.Title" = "Una última cosa.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "Per a tu";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Etiquetes";
|
||||||
|
"Scene.Discovery.Tabs.News" = "Notícies";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Publicacions";
|
||||||
"Scene.Favorite.Title" = "Els teus Favorits";
|
"Scene.Favorite.Title" = "Els teus Favorits";
|
||||||
"Scene.Follower.Footer" = "Els seguidors d'altres servidors no son mostrats.";
|
"Scene.Follower.Footer" = "Els seguidors d'altres servidors no son mostrats.";
|
||||||
"Scene.Following.Footer" = "Els seguits d'altres servidors no son mostrats.";
|
"Scene.Following.Footer" = "Els seguits d'altres servidors no son mostrats.";
|
||||||
|
@ -263,7 +266,7 @@ toca l'enllaç per a confirmar el teu compte.";
|
||||||
"Scene.Register.Error.Reason.Unreachable" = "%@ sembla que no existeix";
|
"Scene.Register.Error.Reason.Unreachable" = "%@ sembla que no existeix";
|
||||||
"Scene.Register.Error.Special.EmailInvalid" = "Aquesta no és una adreça de correu electrònic vàlida";
|
"Scene.Register.Error.Special.EmailInvalid" = "Aquesta no és una adreça de correu electrònic vàlida";
|
||||||
"Scene.Register.Error.Special.PasswordTooShort" = "La contrasenya és massa curta (ha de tenir 8 caràcters com a mínim)";
|
"Scene.Register.Error.Special.PasswordTooShort" = "La contrasenya és massa curta (ha de tenir 8 caràcters com a mínim)";
|
||||||
"Scene.Register.Error.Special.UsernameInvalid" = "El nom d'usuari només ha de contenir caràcters alfanumèrics i guions baixos";
|
"Scene.Register.Error.Special.UsernameInvalid" = "El nom d'usuari ha de contenir només caràcters alfanumèrics i guions baixos";
|
||||||
"Scene.Register.Error.Special.UsernameTooLong" = "El nom d'usuari és massa llarg (no pot ser més llarg de 30 caràcters)";
|
"Scene.Register.Error.Special.UsernameTooLong" = "El nom d'usuari és massa llarg (no pot ser més llarg de 30 caràcters)";
|
||||||
"Scene.Register.Input.Avatar.Delete" = "Suprimeix";
|
"Scene.Register.Input.Avatar.Delete" = "Suprimeix";
|
||||||
"Scene.Register.Input.DisplayName.Placeholder" = "nom visible";
|
"Scene.Register.Input.DisplayName.Placeholder" = "nom visible";
|
||||||
|
@ -272,7 +275,7 @@ toca l'enllaç per a confirmar el teu compte.";
|
||||||
"Scene.Register.Input.Password.Accessibility.Checked" = "verificat";
|
"Scene.Register.Input.Password.Accessibility.Checked" = "verificat";
|
||||||
"Scene.Register.Input.Password.Accessibility.Unchecked" = "no verificat";
|
"Scene.Register.Input.Password.Accessibility.Unchecked" = "no verificat";
|
||||||
"Scene.Register.Input.Password.CharacterLimit" = "8 caràcters";
|
"Scene.Register.Input.Password.CharacterLimit" = "8 caràcters";
|
||||||
"Scene.Register.Input.Password.Hint" = "La teva contrasenya ha de tenir com a mínim buit caràcters";
|
"Scene.Register.Input.Password.Hint" = "La teva contrasenya ha de tenir com a mínim vuit caràcters";
|
||||||
"Scene.Register.Input.Password.Placeholder" = "contrasenya";
|
"Scene.Register.Input.Password.Placeholder" = "contrasenya";
|
||||||
"Scene.Register.Input.Password.Require" = "La teva contrasenya com a mínim necessita:";
|
"Scene.Register.Input.Password.Require" = "La teva contrasenya com a mínim necessita:";
|
||||||
"Scene.Register.Input.Username.DuplicatePrompt" = "Aquest nom d'usuari ja està en ús.";
|
"Scene.Register.Input.Username.DuplicatePrompt" = "Aquest nom d'usuari ja està en ús.";
|
||||||
|
@ -331,8 +334,7 @@ toca l'enllaç per a confirmar el teu compte.";
|
||||||
"Scene.ServerPicker.Label.Users" = "USUARIS";
|
"Scene.ServerPicker.Label.Users" = "USUARIS";
|
||||||
"Scene.ServerPicker.Subtitle" = "Tria una comunitat segons els teus interessos, regió o una de propòsit general.";
|
"Scene.ServerPicker.Subtitle" = "Tria una comunitat segons els teus interessos, regió o una de propòsit general.";
|
||||||
"Scene.ServerPicker.SubtitleExtend" = "Tria una comunitat segons els teus interessos, regió o una de propòsit general. Cada comunitat és operada per una organització totalment independent o individualment.";
|
"Scene.ServerPicker.SubtitleExtend" = "Tria una comunitat segons els teus interessos, regió o una de propòsit general. Cada comunitat és operada per una organització totalment independent o individualment.";
|
||||||
"Scene.ServerPicker.Title" = "Tria un servidor,
|
"Scene.ServerPicker.Title" = "Mastodon està fet d'usuaris en diferents comunitats.";
|
||||||
qualsevol servidor.";
|
|
||||||
"Scene.ServerRules.Button.Confirm" = "Hi estic d'acord";
|
"Scene.ServerRules.Button.Confirm" = "Hi estic d'acord";
|
||||||
"Scene.ServerRules.PrivacyPolicy" = "política de privadesa";
|
"Scene.ServerRules.PrivacyPolicy" = "política de privadesa";
|
||||||
"Scene.ServerRules.Prompt" = "Al continuar, estàs subjecte als termes de servei i a la política de privacitat de %@.";
|
"Scene.ServerRules.Prompt" = "Al continuar, estàs subjecte als termes de servei i a la política de privacitat de %@.";
|
||||||
|
@ -362,7 +364,7 @@ qualsevol servidor.";
|
||||||
"Scene.Settings.Section.Notifications.Trigger.Anyone" = "algú";
|
"Scene.Settings.Section.Notifications.Trigger.Anyone" = "algú";
|
||||||
"Scene.Settings.Section.Notifications.Trigger.Follow" = "a qualsevol que segueixi";
|
"Scene.Settings.Section.Notifications.Trigger.Follow" = "a qualsevol que segueixi";
|
||||||
"Scene.Settings.Section.Notifications.Trigger.Follower" = "un seguidor";
|
"Scene.Settings.Section.Notifications.Trigger.Follower" = "un seguidor";
|
||||||
"Scene.Settings.Section.Notifications.Trigger.Noone" = "algú";
|
"Scene.Settings.Section.Notifications.Trigger.Noone" = "ningú";
|
||||||
"Scene.Settings.Section.Notifications.Trigger.Title" = "Notifica'm quan";
|
"Scene.Settings.Section.Notifications.Trigger.Title" = "Notifica'm quan";
|
||||||
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Desactiva avatars animats";
|
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Desactiva avatars animats";
|
||||||
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Desactiva emojis animats";
|
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Desactiva emojis animats";
|
||||||
|
|
|
@ -98,10 +98,10 @@ Bitte überprüfe deine Internetverbindung.";
|
||||||
"Common.Controls.Status.Actions.Menu" = "Menü";
|
"Common.Controls.Status.Actions.Menu" = "Menü";
|
||||||
"Common.Controls.Status.Actions.Reblog" = "Teilen";
|
"Common.Controls.Status.Actions.Reblog" = "Teilen";
|
||||||
"Common.Controls.Status.Actions.Reply" = "Antworten";
|
"Common.Controls.Status.Actions.Reply" = "Antworten";
|
||||||
"Common.Controls.Status.Actions.ShowGif" = "Show GIF";
|
"Common.Controls.Status.Actions.ShowGif" = "GIF anzeigen";
|
||||||
"Common.Controls.Status.Actions.ShowImage" = "Show image";
|
"Common.Controls.Status.Actions.ShowImage" = "Bild anzeigen";
|
||||||
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player";
|
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Zeige Video-Player";
|
||||||
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu";
|
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Halte gedrückt um das Menü anzuzeigen";
|
||||||
"Common.Controls.Status.Actions.Unfavorite" = "Aus Favoriten entfernen";
|
"Common.Controls.Status.Actions.Unfavorite" = "Aus Favoriten entfernen";
|
||||||
"Common.Controls.Status.Actions.Unreblog" = "Nicht mehr teilen";
|
"Common.Controls.Status.Actions.Unreblog" = "Nicht mehr teilen";
|
||||||
"Common.Controls.Status.ContentWarning" = "Inhaltswarnung";
|
"Common.Controls.Status.ContentWarning" = "Inhaltswarnung";
|
||||||
|
@ -116,7 +116,7 @@ Bitte überprüfe deine Internetverbindung.";
|
||||||
"Common.Controls.Status.Tag.Link" = "Link";
|
"Common.Controls.Status.Tag.Link" = "Link";
|
||||||
"Common.Controls.Status.Tag.Mention" = "Erwähnung";
|
"Common.Controls.Status.Tag.Mention" = "Erwähnung";
|
||||||
"Common.Controls.Status.Tag.Url" = "URL";
|
"Common.Controls.Status.Tag.Url" = "URL";
|
||||||
"Common.Controls.Status.TapToReveal" = "Tap to reveal";
|
"Common.Controls.Status.TapToReveal" = "Zum Anzeigen tippen";
|
||||||
"Common.Controls.Status.UserReblogged" = "%@ teilte";
|
"Common.Controls.Status.UserReblogged" = "%@ teilte";
|
||||||
"Common.Controls.Status.UserRepliedTo" = "Antwortet auf %@";
|
"Common.Controls.Status.UserRepliedTo" = "Antwortet auf %@";
|
||||||
"Common.Controls.Status.Visibility.Direct" = "Nur erwähnte Benutzer können diesen Beitrag sehen.";
|
"Common.Controls.Status.Visibility.Direct" = "Nur erwähnte Benutzer können diesen Beitrag sehen.";
|
||||||
|
@ -201,6 +201,10 @@ kann nicht auf Mastodon hochgeladen werden.";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "Wir haben gerade eine E-Mail an %@ gesendet,
|
"Scene.ConfirmEmail.Subtitle" = "Wir haben gerade eine E-Mail an %@ gesendet,
|
||||||
tippe darin auf den Link, um Dein Konto zu bestätigen.";
|
tippe darin auf den Link, um Dein Konto zu bestätigen.";
|
||||||
"Scene.ConfirmEmail.Title" = "Noch eine letzte Sache.";
|
"Scene.ConfirmEmail.Title" = "Noch eine letzte Sache.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "Für dich";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
|
||||||
|
"Scene.Discovery.Tabs.News" = "Nachrichten";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Beiträge";
|
||||||
"Scene.Favorite.Title" = "Deine Favoriten";
|
"Scene.Favorite.Title" = "Deine Favoriten";
|
||||||
"Scene.Follower.Footer" = "Follower von anderen Servern werden nicht angezeigt.";
|
"Scene.Follower.Footer" = "Follower von anderen Servern werden nicht angezeigt.";
|
||||||
"Scene.Following.Footer" = "Wem das Konto folgt wird von anderen Servern werden nicht angezeigt.";
|
"Scene.Following.Footer" = "Wem das Konto folgt wird von anderen Servern werden nicht angezeigt.";
|
||||||
|
@ -222,10 +226,10 @@ tippe darin auf den Link, um Dein Konto zu bestätigen.";
|
||||||
"Scene.Preview.Keyboard.ClosePreview" = "Vorschau schließen";
|
"Scene.Preview.Keyboard.ClosePreview" = "Vorschau schließen";
|
||||||
"Scene.Preview.Keyboard.ShowNext" = "Nächstes anzeigen";
|
"Scene.Preview.Keyboard.ShowNext" = "Nächstes anzeigen";
|
||||||
"Scene.Preview.Keyboard.ShowPrevious" = "Vorheriges anzeigen";
|
"Scene.Preview.Keyboard.ShowPrevious" = "Vorheriges anzeigen";
|
||||||
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Double tap to open the list";
|
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Doppeltippen, um die Liste zu öffnen";
|
||||||
"Scene.Profile.Accessibility.EditAvatarImage" = "Edit avatar image";
|
"Scene.Profile.Accessibility.EditAvatarImage" = "Profilbild bearbeiten";
|
||||||
"Scene.Profile.Accessibility.ShowAvatarImage" = "Show avatar image";
|
"Scene.Profile.Accessibility.ShowAvatarImage" = "Profilbild anzeigen";
|
||||||
"Scene.Profile.Accessibility.ShowBannerImage" = "Show banner image";
|
"Scene.Profile.Accessibility.ShowBannerImage" = "Bannerbild anzeigen";
|
||||||
"Scene.Profile.Dashboard.Followers" = "Folger";
|
"Scene.Profile.Dashboard.Followers" = "Folger";
|
||||||
"Scene.Profile.Dashboard.Following" = "Gefolgte";
|
"Scene.Profile.Dashboard.Following" = "Gefolgte";
|
||||||
"Scene.Profile.Dashboard.Posts" = "Beiträge";
|
"Scene.Profile.Dashboard.Posts" = "Beiträge";
|
||||||
|
@ -366,7 +370,7 @@ beliebigen Server.";
|
||||||
"Scene.Settings.Section.Notifications.Trigger.Title" = "Benachrichtige mich, wenn";
|
"Scene.Settings.Section.Notifications.Trigger.Title" = "Benachrichtige mich, wenn";
|
||||||
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Animierte Profilbilder deaktivieren";
|
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Animierte Profilbilder deaktivieren";
|
||||||
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Animierte Emojis deaktivieren";
|
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Animierte Emojis deaktivieren";
|
||||||
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Open links in Mastodon";
|
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Links in Mastodon öffnen";
|
||||||
"Scene.Settings.Section.Preference.Title" = "Präferenzen";
|
"Scene.Settings.Section.Preference.Title" = "Präferenzen";
|
||||||
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Vollständig dunkler Dunkelmodus";
|
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Vollständig dunkler Dunkelmodus";
|
||||||
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Standardbrowser zum Öffnen von Links verwenden";
|
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Standardbrowser zum Öffnen von Links verwenden";
|
||||||
|
|
|
@ -125,9 +125,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 reply</string>
|
<string>1 Antwort</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld replies</string>
|
<string>%ld Antworten</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.vote</key>
|
<key>plural.count.vote</key>
|
||||||
|
|
|
@ -200,6 +200,10 @@ uploaded to Mastodon.";
|
||||||
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Check your inbox.";
|
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Check your inbox.";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "Tap the link we emailed to you to verify your account.";
|
"Scene.ConfirmEmail.Subtitle" = "Tap the link we emailed to you to verify your account.";
|
||||||
"Scene.ConfirmEmail.Title" = "One last thing.";
|
"Scene.ConfirmEmail.Title" = "One last thing.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "For You";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
|
||||||
|
"Scene.Discovery.Tabs.News" = "News";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Posts";
|
||||||
"Scene.Favorite.Title" = "Your Favorites";
|
"Scene.Favorite.Title" = "Your Favorites";
|
||||||
"Scene.Follower.Footer" = "Followers from other servers are not displayed.";
|
"Scene.Follower.Footer" = "Followers from other servers are not displayed.";
|
||||||
"Scene.Following.Footer" = "Follows from other servers are not displayed.";
|
"Scene.Following.Footer" = "Follows from other servers are not displayed.";
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
"Common.Alerts.Common.PleaseTryAgain" = "Por favor, intentá de nuevo.";
|
"Common.Alerts.Common.PleaseTryAgain" = "Por favor, intentá de nuevo.";
|
||||||
"Common.Alerts.Common.PleaseTryAgainLater" = "Por favor, intentá de nuevo más tarde.";
|
"Common.Alerts.Common.PleaseTryAgainLater" = "Por favor, intentá de nuevo más tarde.";
|
||||||
"Common.Alerts.DeletePost.Message" = "¿Estás seguro que querés eliminar este mensaje?";
|
"Common.Alerts.DeletePost.Message" = "¿Estás seguro que querés eliminar este mensaje?";
|
||||||
"Common.Alerts.DeletePost.Title" = "¿Estás seguro que querés eliminar este mensaje?";
|
"Common.Alerts.DeletePost.Title" = "Eliminar mensaje";
|
||||||
"Common.Alerts.DiscardPostContent.Message" = "Confirmá para descartar el contenido del mensaje redactado.";
|
"Common.Alerts.DiscardPostContent.Message" = "Confirmá para descartar el contenido del mensaje redactado.";
|
||||||
"Common.Alerts.DiscardPostContent.Title" = "Descartar borrador";
|
"Common.Alerts.DiscardPostContent.Title" = "Descartar borrador";
|
||||||
"Common.Alerts.EditProfileFailure.Message" = "No se pudo editar el perfil. Por favor, intentá de nuevo.";
|
"Common.Alerts.EditProfileFailure.Message" = "No se pudo editar el perfil. Por favor, intentá de nuevo.";
|
||||||
|
@ -201,6 +201,10 @@ y no se puede subir a Mastodon.";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "Acabamos de enviar un correo electrónico a %@,
|
"Scene.ConfirmEmail.Subtitle" = "Acabamos de enviar un correo electrónico a %@,
|
||||||
pulsá en el enlace para confirmar tu cuenta.";
|
pulsá en el enlace para confirmar tu cuenta.";
|
||||||
"Scene.ConfirmEmail.Title" = "Una última cosa.";
|
"Scene.ConfirmEmail.Title" = "Una última cosa.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "Para vos";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Etiquetas";
|
||||||
|
"Scene.Discovery.Tabs.News" = "Novedades";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Mensajes";
|
||||||
"Scene.Favorite.Title" = "Tus favoritos";
|
"Scene.Favorite.Title" = "Tus favoritos";
|
||||||
"Scene.Follower.Footer" = "No se muestran los seguidores de otros servidores.";
|
"Scene.Follower.Footer" = "No se muestran los seguidores de otros servidores.";
|
||||||
"Scene.Following.Footer" = "No se muestran las cuentas de otros servidores que seguís.";
|
"Scene.Following.Footer" = "No se muestran las cuentas de otros servidores que seguís.";
|
||||||
|
|
|
@ -201,6 +201,10 @@ subirse a Mastodon.";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "Te acabamos de enviar un correo a %@,
|
"Scene.ConfirmEmail.Subtitle" = "Te acabamos de enviar un correo a %@,
|
||||||
pulsa en el enlace para confirmar tu cuenta.";
|
pulsa en el enlace para confirmar tu cuenta.";
|
||||||
"Scene.ConfirmEmail.Title" = "Una última cosa.";
|
"Scene.ConfirmEmail.Title" = "Una última cosa.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "For You";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
|
||||||
|
"Scene.Discovery.Tabs.News" = "News";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Posts";
|
||||||
"Scene.Favorite.Title" = "Tus Favoritos";
|
"Scene.Favorite.Title" = "Tus Favoritos";
|
||||||
"Scene.Follower.Footer" = "No se muestran los seguidores de otros servidores.";
|
"Scene.Follower.Footer" = "No se muestran los seguidores de otros servidores.";
|
||||||
"Scene.Following.Footer" = "No se muestran los seguidos de otros servidores.";
|
"Scene.Following.Footer" = "No se muestran los seguidos de otros servidores.";
|
||||||
|
|
|
@ -98,10 +98,10 @@ Egiaztatu Interneteko konexioa.";
|
||||||
"Common.Controls.Status.Actions.Menu" = "Menua";
|
"Common.Controls.Status.Actions.Menu" = "Menua";
|
||||||
"Common.Controls.Status.Actions.Reblog" = "Bultzada";
|
"Common.Controls.Status.Actions.Reblog" = "Bultzada";
|
||||||
"Common.Controls.Status.Actions.Reply" = "Erantzun";
|
"Common.Controls.Status.Actions.Reply" = "Erantzun";
|
||||||
"Common.Controls.Status.Actions.ShowGif" = "Show GIF";
|
"Common.Controls.Status.Actions.ShowGif" = "Erakutsi GIFa";
|
||||||
"Common.Controls.Status.Actions.ShowImage" = "Show image";
|
"Common.Controls.Status.Actions.ShowImage" = "Erakutsi irudia";
|
||||||
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player";
|
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Erakutsi bideo-erreproduzigailua";
|
||||||
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu";
|
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Sakatu eta eutsi menua erakusteko";
|
||||||
"Common.Controls.Status.Actions.Unfavorite" = "Kendu gogokoa";
|
"Common.Controls.Status.Actions.Unfavorite" = "Kendu gogokoa";
|
||||||
"Common.Controls.Status.Actions.Unreblog" = "Desegin bultzada";
|
"Common.Controls.Status.Actions.Unreblog" = "Desegin bultzada";
|
||||||
"Common.Controls.Status.ContentWarning" = "Edukiaren abisua";
|
"Common.Controls.Status.ContentWarning" = "Edukiaren abisua";
|
||||||
|
@ -116,7 +116,7 @@ Egiaztatu Interneteko konexioa.";
|
||||||
"Common.Controls.Status.Tag.Link" = "Esteka";
|
"Common.Controls.Status.Tag.Link" = "Esteka";
|
||||||
"Common.Controls.Status.Tag.Mention" = "Aipatu";
|
"Common.Controls.Status.Tag.Mention" = "Aipatu";
|
||||||
"Common.Controls.Status.Tag.Url" = "URLa";
|
"Common.Controls.Status.Tag.Url" = "URLa";
|
||||||
"Common.Controls.Status.TapToReveal" = "Tap to reveal";
|
"Common.Controls.Status.TapToReveal" = "Sakatu erakusteko";
|
||||||
"Common.Controls.Status.UserReblogged" = "%@ erabiltzaileak bultzada eman dio";
|
"Common.Controls.Status.UserReblogged" = "%@ erabiltzaileak bultzada eman dio";
|
||||||
"Common.Controls.Status.UserRepliedTo" = "%@(r)i erantzuten";
|
"Common.Controls.Status.UserRepliedTo" = "%@(r)i erantzuten";
|
||||||
"Common.Controls.Status.Visibility.Direct" = "Aipatutako erabiltzaileek soilik ikus dezakete bidalketa hau.";
|
"Common.Controls.Status.Visibility.Direct" = "Aipatutako erabiltzaileek soilik ikus dezakete bidalketa hau.";
|
||||||
|
@ -201,6 +201,10 @@ Mastodonera igo.";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "Eposta bat bidali dizugu %@ helbidera,
|
"Scene.ConfirmEmail.Subtitle" = "Eposta bat bidali dizugu %@ helbidera,
|
||||||
sakatu kontua berresteko esteka.";
|
sakatu kontua berresteko esteka.";
|
||||||
"Scene.ConfirmEmail.Title" = "Eta azkenik...";
|
"Scene.ConfirmEmail.Title" = "Eta azkenik...";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "For You";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
|
||||||
|
"Scene.Discovery.Tabs.News" = "News";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Posts";
|
||||||
"Scene.Favorite.Title" = "Zure gogokoak";
|
"Scene.Favorite.Title" = "Zure gogokoak";
|
||||||
"Scene.Follower.Footer" = "Beste zerbitzarietako jarraitzaileak ez dira bistaratzen.";
|
"Scene.Follower.Footer" = "Beste zerbitzarietako jarraitzaileak ez dira bistaratzen.";
|
||||||
"Scene.Following.Footer" = "Beste zerbitzarietan jarraitutakoak ez dira bistaratzen.";
|
"Scene.Following.Footer" = "Beste zerbitzarietan jarraitutakoak ez dira bistaratzen.";
|
||||||
|
@ -211,21 +215,21 @@ sakatu kontua berresteko esteka.";
|
||||||
"Scene.HomeTimeline.Title" = "Hasiera";
|
"Scene.HomeTimeline.Title" = "Hasiera";
|
||||||
"Scene.Notification.Keyobard.ShowEverything" = "Erakutsi guztia";
|
"Scene.Notification.Keyobard.ShowEverything" = "Erakutsi guztia";
|
||||||
"Scene.Notification.Keyobard.ShowMentions" = "Erakutsi aipamenak";
|
"Scene.Notification.Keyobard.ShowMentions" = "Erakutsi aipamenak";
|
||||||
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "erabiltzaileak zure bidalketa gogoko du";
|
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "(e)k zure bidalketa gogoko du";
|
||||||
"Scene.Notification.NotificationDescription.FollowedYou" = "zu jarraitzen hasi da";
|
"Scene.Notification.NotificationDescription.FollowedYou" = "zu jarraitzen hasi da";
|
||||||
"Scene.Notification.NotificationDescription.MentionedYou" = "erabiltzaileak aipatu zaitu";
|
"Scene.Notification.NotificationDescription.MentionedYou" = "erabiltzaileak aipatu zaitu";
|
||||||
"Scene.Notification.NotificationDescription.PollHasEnded" = "inkesta amaitu da";
|
"Scene.Notification.NotificationDescription.PollHasEnded" = "inkesta amaitu da";
|
||||||
"Scene.Notification.NotificationDescription.RebloggedYourPost" = "erabiltzaileak bultzada eman dio zure bidalketari";
|
"Scene.Notification.NotificationDescription.RebloggedYourPost" = "(e)k bultzada eman dio zure bidalketari";
|
||||||
"Scene.Notification.NotificationDescription.RequestToFollowYou" = "erabiltzaileak zu jarraitzea eskatu du";
|
"Scene.Notification.NotificationDescription.RequestToFollowYou" = "erabiltzaileak zu jarraitzea eskatu du";
|
||||||
"Scene.Notification.Title.Everything" = "Dena";
|
"Scene.Notification.Title.Everything" = "Dena";
|
||||||
"Scene.Notification.Title.Mentions" = "Aipamenak";
|
"Scene.Notification.Title.Mentions" = "Aipamenak";
|
||||||
"Scene.Preview.Keyboard.ClosePreview" = "Itxi aurrebista";
|
"Scene.Preview.Keyboard.ClosePreview" = "Itxi aurrebista";
|
||||||
"Scene.Preview.Keyboard.ShowNext" = "Erakutsi hurrengoa";
|
"Scene.Preview.Keyboard.ShowNext" = "Erakutsi hurrengoa";
|
||||||
"Scene.Preview.Keyboard.ShowPrevious" = "Erakutsi aurrekoa";
|
"Scene.Preview.Keyboard.ShowPrevious" = "Erakutsi aurrekoa";
|
||||||
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Double tap to open the list";
|
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Sakatu birritan zerrenda irekitzeko";
|
||||||
"Scene.Profile.Accessibility.EditAvatarImage" = "Edit avatar image";
|
"Scene.Profile.Accessibility.EditAvatarImage" = "Editatu abatarra";
|
||||||
"Scene.Profile.Accessibility.ShowAvatarImage" = "Show avatar image";
|
"Scene.Profile.Accessibility.ShowAvatarImage" = "Erakutsi abatarra";
|
||||||
"Scene.Profile.Accessibility.ShowBannerImage" = "Show banner image";
|
"Scene.Profile.Accessibility.ShowBannerImage" = "Erakutsi banner irudia";
|
||||||
"Scene.Profile.Dashboard.Followers" = "jarraitzaile";
|
"Scene.Profile.Dashboard.Followers" = "jarraitzaile";
|
||||||
"Scene.Profile.Dashboard.Following" = "jarraitzen";
|
"Scene.Profile.Dashboard.Following" = "jarraitzen";
|
||||||
"Scene.Profile.Dashboard.Posts" = "bidalketa";
|
"Scene.Profile.Dashboard.Posts" = "bidalketa";
|
||||||
|
@ -366,7 +370,7 @@ edozein zerbitzari.";
|
||||||
"Scene.Settings.Section.Notifications.Trigger.Title" = "Noiz jakinarazi:";
|
"Scene.Settings.Section.Notifications.Trigger.Title" = "Noiz jakinarazi:";
|
||||||
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Desgaitu abatar animatuak";
|
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Desgaitu abatar animatuak";
|
||||||
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Desgaitu emoji animatuak";
|
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Desgaitu emoji animatuak";
|
||||||
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Open links in Mastodon";
|
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Ireki estekak Mastodonen";
|
||||||
"Scene.Settings.Section.Preference.Title" = "Hobespenak";
|
"Scene.Settings.Section.Preference.Title" = "Hobespenak";
|
||||||
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Benetako modu beltz iluna";
|
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Benetako modu beltz iluna";
|
||||||
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Erabili nabigatzaile lehenetsia estekak irekitzeko";
|
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Erabili nabigatzaile lehenetsia estekak irekitzeko";
|
||||||
|
|
|
@ -125,9 +125,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 reply</string>
|
<string>Erantzun bat</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld replies</string>
|
<string>%ld erantzun</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.vote</key>
|
<key>plural.count.vote</key>
|
||||||
|
|
|
@ -98,9 +98,9 @@ Veuillez vérifier votre accès à Internet.";
|
||||||
"Common.Controls.Status.Actions.Menu" = "Menu";
|
"Common.Controls.Status.Actions.Menu" = "Menu";
|
||||||
"Common.Controls.Status.Actions.Reblog" = "Rebloguer";
|
"Common.Controls.Status.Actions.Reblog" = "Rebloguer";
|
||||||
"Common.Controls.Status.Actions.Reply" = "Répondre";
|
"Common.Controls.Status.Actions.Reply" = "Répondre";
|
||||||
"Common.Controls.Status.Actions.ShowGif" = "Show GIF";
|
"Common.Controls.Status.Actions.ShowGif" = "Afficher le GIF";
|
||||||
"Common.Controls.Status.Actions.ShowImage" = "Show image";
|
"Common.Controls.Status.Actions.ShowImage" = "Afficher l’image";
|
||||||
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player";
|
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Afficher le lecteur vidéo";
|
||||||
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu";
|
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu";
|
||||||
"Common.Controls.Status.Actions.Unfavorite" = "Retirer des favoris";
|
"Common.Controls.Status.Actions.Unfavorite" = "Retirer des favoris";
|
||||||
"Common.Controls.Status.Actions.Unreblog" = "Annuler le reblog";
|
"Common.Controls.Status.Actions.Unreblog" = "Annuler le reblog";
|
||||||
|
@ -116,7 +116,7 @@ Veuillez vérifier votre accès à Internet.";
|
||||||
"Common.Controls.Status.Tag.Link" = "Lien";
|
"Common.Controls.Status.Tag.Link" = "Lien";
|
||||||
"Common.Controls.Status.Tag.Mention" = "Mention";
|
"Common.Controls.Status.Tag.Mention" = "Mention";
|
||||||
"Common.Controls.Status.Tag.Url" = "URL";
|
"Common.Controls.Status.Tag.Url" = "URL";
|
||||||
"Common.Controls.Status.TapToReveal" = "Tap to reveal";
|
"Common.Controls.Status.TapToReveal" = "Appuyer pour afficher";
|
||||||
"Common.Controls.Status.UserReblogged" = "%@ a reblogué";
|
"Common.Controls.Status.UserReblogged" = "%@ a reblogué";
|
||||||
"Common.Controls.Status.UserRepliedTo" = "À répondu à %@";
|
"Common.Controls.Status.UserRepliedTo" = "À répondu à %@";
|
||||||
"Common.Controls.Status.Visibility.Direct" = "Seul·e l’utilisateur·rice mentionnée peut voir ce message.";
|
"Common.Controls.Status.Visibility.Direct" = "Seul·e l’utilisateur·rice mentionnée peut voir ce message.";
|
||||||
|
@ -201,6 +201,10 @@ téléversé sur Mastodon.";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "Nous venons d’envoyer un courriel à %@,
|
"Scene.ConfirmEmail.Subtitle" = "Nous venons d’envoyer un courriel à %@,
|
||||||
tapotez le lien pour confirmer votre compte.";
|
tapotez le lien pour confirmer votre compte.";
|
||||||
"Scene.ConfirmEmail.Title" = "Une dernière chose.";
|
"Scene.ConfirmEmail.Title" = "Une dernière chose.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "Pour vous";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
|
||||||
|
"Scene.Discovery.Tabs.News" = "Actualité";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Messages";
|
||||||
"Scene.Favorite.Title" = "Vos favoris";
|
"Scene.Favorite.Title" = "Vos favoris";
|
||||||
"Scene.Follower.Footer" = "Les abonné·e·s issus des autres serveurs ne sont pas affiché·e·s.";
|
"Scene.Follower.Footer" = "Les abonné·e·s issus des autres serveurs ne sont pas affiché·e·s.";
|
||||||
"Scene.Following.Footer" = "Les abonnés issus des autres serveurs ne sont pas affichés.";
|
"Scene.Following.Footer" = "Les abonnés issus des autres serveurs ne sont pas affichés.";
|
||||||
|
@ -222,10 +226,10 @@ tapotez le lien pour confirmer votre compte.";
|
||||||
"Scene.Preview.Keyboard.ClosePreview" = "Fermer l'aperçu";
|
"Scene.Preview.Keyboard.ClosePreview" = "Fermer l'aperçu";
|
||||||
"Scene.Preview.Keyboard.ShowNext" = "Afficher le suivant";
|
"Scene.Preview.Keyboard.ShowNext" = "Afficher le suivant";
|
||||||
"Scene.Preview.Keyboard.ShowPrevious" = "Afficher le précédent";
|
"Scene.Preview.Keyboard.ShowPrevious" = "Afficher le précédent";
|
||||||
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Double tap to open the list";
|
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Appuyer deux fois pour ouvrir la liste";
|
||||||
"Scene.Profile.Accessibility.EditAvatarImage" = "Edit avatar image";
|
"Scene.Profile.Accessibility.EditAvatarImage" = "Modifier l’avatar";
|
||||||
"Scene.Profile.Accessibility.ShowAvatarImage" = "Show avatar image";
|
"Scene.Profile.Accessibility.ShowAvatarImage" = "Afficher l’avatar";
|
||||||
"Scene.Profile.Accessibility.ShowBannerImage" = "Show banner image";
|
"Scene.Profile.Accessibility.ShowBannerImage" = "Afficher l’image de la bannière";
|
||||||
"Scene.Profile.Dashboard.Followers" = "abonnés";
|
"Scene.Profile.Dashboard.Followers" = "abonnés";
|
||||||
"Scene.Profile.Dashboard.Following" = "abonnements";
|
"Scene.Profile.Dashboard.Following" = "abonnements";
|
||||||
"Scene.Profile.Dashboard.Posts" = "publications";
|
"Scene.Profile.Dashboard.Posts" = "publications";
|
||||||
|
@ -366,7 +370,7 @@ n'importe quel serveur.";
|
||||||
"Scene.Settings.Section.Notifications.Trigger.Title" = "Me notifier lorsque";
|
"Scene.Settings.Section.Notifications.Trigger.Title" = "Me notifier lorsque";
|
||||||
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Désactiver les avatars animés";
|
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Désactiver les avatars animés";
|
||||||
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Désactiver les émojis animées";
|
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Désactiver les émojis animées";
|
||||||
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Open links in Mastodon";
|
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Ouvrir les liens dans Mastodon";
|
||||||
"Scene.Settings.Section.Preference.Title" = "Préférences";
|
"Scene.Settings.Section.Preference.Title" = "Préférences";
|
||||||
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Vrai mode sombre";
|
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Vrai mode sombre";
|
||||||
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Utiliser le navigateur par défaut pour ouvrir les liens";
|
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Utiliser le navigateur par défaut pour ouvrir les liens";
|
||||||
|
|
|
@ -125,9 +125,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 reply</string>
|
<string>1 réponse</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld replies</string>
|
<string>%ld réponses</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.vote</key>
|
<key>plural.count.vote</key>
|
||||||
|
|
|
@ -201,6 +201,10 @@ a luchdadh suas gu Mastodon.";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "Tha sinn air post-d a chur gu %@,
|
"Scene.ConfirmEmail.Subtitle" = "Tha sinn air post-d a chur gu %@,
|
||||||
thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad.";
|
thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad.";
|
||||||
"Scene.ConfirmEmail.Title" = "Aon rud eile.";
|
"Scene.ConfirmEmail.Title" = "Aon rud eile.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "For You";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
|
||||||
|
"Scene.Discovery.Tabs.News" = "News";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Posts";
|
||||||
"Scene.Favorite.Title" = "Na h-annsachdan agad";
|
"Scene.Favorite.Title" = "Na h-annsachdan agad";
|
||||||
"Scene.Follower.Footer" = "Cha dèid luchd-leantainn o fhrithealaichean eile a shealltainn.";
|
"Scene.Follower.Footer" = "Cha dèid luchd-leantainn o fhrithealaichean eile a shealltainn.";
|
||||||
"Scene.Following.Footer" = "Cha dèid cò air a leanas tu air frithealaichean eile a shealltainn.";
|
"Scene.Following.Footer" = "Cha dèid cò air a leanas tu air frithealaichean eile a shealltainn.";
|
||||||
|
|
|
@ -195,6 +195,10 @@
|
||||||
"Scene.ConfirmEmail.OpenEmailApp.Title" = "メールを確認";
|
"Scene.ConfirmEmail.OpenEmailApp.Title" = "メールを確認";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "先程 %@ にメールを送信しました。リンクをタップしてアカウントを確認してください。";
|
"Scene.ConfirmEmail.Subtitle" = "先程 %@ にメールを送信しました。リンクをタップしてアカウントを確認してください。";
|
||||||
"Scene.ConfirmEmail.Title" = "さいごにもうひとつ。";
|
"Scene.ConfirmEmail.Title" = "さいごにもうひとつ。";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "For You";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
|
||||||
|
"Scene.Discovery.Tabs.News" = "News";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Posts";
|
||||||
"Scene.Favorite.Title" = "お気に入り";
|
"Scene.Favorite.Title" = "お気に入り";
|
||||||
"Scene.Follower.Footer" = "他のサーバーからのフォロワーは表示されません。";
|
"Scene.Follower.Footer" = "他のサーバーからのフォロワーは表示されません。";
|
||||||
"Scene.Following.Footer" = "他のサーバーにいるフォローは表示されません。";
|
"Scene.Following.Footer" = "他のサーバーにいるフォローは表示されません。";
|
||||||
|
|
|
@ -200,6 +200,10 @@ Ad d-yettwasali ɣef Mastodon.";
|
||||||
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Sefqed Tanaka-inek.";
|
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Sefqed Tanaka-inek.";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "Sit ɣef useɣwen i ak-n-uznen i wakken ad tesneqdeḍ amiḍan-ik.";
|
"Scene.ConfirmEmail.Subtitle" = "Sit ɣef useɣwen i ak-n-uznen i wakken ad tesneqdeḍ amiḍan-ik.";
|
||||||
"Scene.ConfirmEmail.Title" = "Taɣawsa taneggarut.";
|
"Scene.ConfirmEmail.Title" = "Taɣawsa taneggarut.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "For You";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
|
||||||
|
"Scene.Discovery.Tabs.News" = "News";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Posts";
|
||||||
"Scene.Favorite.Title" = "Ismenyifen-ik·im";
|
"Scene.Favorite.Title" = "Ismenyifen-ik·im";
|
||||||
"Scene.Follower.Footer" = "Ineḍfaren seg yiqeddacen-nniḍen ur d-ttwaskanen ara.";
|
"Scene.Follower.Footer" = "Ineḍfaren seg yiqeddacen-nniḍen ur d-ttwaskanen ara.";
|
||||||
"Scene.Following.Footer" = "Ineḍfaren seg yiqeddacen-nniḍen ur d-ttwaskanen ara.";
|
"Scene.Following.Footer" = "Ineḍfaren seg yiqeddacen-nniḍen ur d-ttwaskanen ara.";
|
||||||
|
|
|
@ -201,6 +201,10 @@ Profîla te ji wan ra wiha xuya dike.";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "Me tenê e-nameyek ji %@ re şand,
|
"Scene.ConfirmEmail.Subtitle" = "Me tenê e-nameyek ji %@ re şand,
|
||||||
girêdanê bitikne da ku ajimêra xwe bidî piştrastkirin.";
|
girêdanê bitikne da ku ajimêra xwe bidî piştrastkirin.";
|
||||||
"Scene.ConfirmEmail.Title" = "Tiştekî dawî.";
|
"Scene.ConfirmEmail.Title" = "Tiştekî dawî.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "Ji bo te";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Hashtag";
|
||||||
|
"Scene.Discovery.Tabs.News" = "Nûçe";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Şandî";
|
||||||
"Scene.Favorite.Title" = "Bijarteyên te";
|
"Scene.Favorite.Title" = "Bijarteyên te";
|
||||||
"Scene.Follower.Footer" = "Şopîner ji rajekerên din nayê dîtin.";
|
"Scene.Follower.Footer" = "Şopîner ji rajekerên din nayê dîtin.";
|
||||||
"Scene.Following.Footer" = "Şopandin ji rajekerên din nayê dîtin.";
|
"Scene.Following.Footer" = "Şopandin ji rajekerên din nayê dîtin.";
|
||||||
|
|
|
@ -195,6 +195,10 @@ Uw profiel ziet er zo uit voor hen.";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "We hebben een e-mail gestuurd naar %@,
|
"Scene.ConfirmEmail.Subtitle" = "We hebben een e-mail gestuurd naar %@,
|
||||||
klik op de link om uw account te bevestigen.";
|
klik op de link om uw account te bevestigen.";
|
||||||
"Scene.ConfirmEmail.Title" = "Nog één ding.";
|
"Scene.ConfirmEmail.Title" = "Nog één ding.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "For You";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
|
||||||
|
"Scene.Discovery.Tabs.News" = "News";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Posts";
|
||||||
"Scene.Favorite.Title" = "Uw favorieten";
|
"Scene.Favorite.Title" = "Uw favorieten";
|
||||||
"Scene.Follower.Footer" = "Followers from other servers are not displayed.";
|
"Scene.Follower.Footer" = "Followers from other servers are not displayed.";
|
||||||
"Scene.Following.Footer" = "Follows from other servers are not displayed.";
|
"Scene.Following.Footer" = "Follows from other servers are not displayed.";
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
"Common.Alerts.CleanCache.Title" = "Очистка кэша";
|
"Common.Alerts.CleanCache.Title" = "Очистка кэша";
|
||||||
"Common.Alerts.Common.PleaseTryAgain" = "Пожалуйста, попробуйте ещё раз.";
|
"Common.Alerts.Common.PleaseTryAgain" = "Пожалуйста, попробуйте ещё раз.";
|
||||||
"Common.Alerts.Common.PleaseTryAgainLater" = "Пожалуйста, попробуйте позже.";
|
"Common.Alerts.Common.PleaseTryAgainLater" = "Пожалуйста, попробуйте позже.";
|
||||||
"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?";
|
"Common.Alerts.DeletePost.Message" = "Вы уверены, что хотите удалить этот пост?";
|
||||||
"Common.Alerts.DeletePost.Title" = "Вы уверены, что хотите удалить этот пост?";
|
"Common.Alerts.DeletePost.Title" = "Вы уверены, что хотите удалить этот пост?";
|
||||||
"Common.Alerts.DiscardPostContent.Message" = "Вы действительно хотите удалить набранное содержимое поста?";
|
"Common.Alerts.DiscardPostContent.Message" = "Вы действительно хотите удалить набранное содержимое поста?";
|
||||||
"Common.Alerts.DiscardPostContent.Title" = "Удалить черновик";
|
"Common.Alerts.DiscardPostContent.Title" = "Удалить черновик";
|
||||||
|
@ -69,7 +69,7 @@
|
||||||
"Common.Controls.Friendship.Follow" = "Подписаться";
|
"Common.Controls.Friendship.Follow" = "Подписаться";
|
||||||
"Common.Controls.Friendship.Following" = "В подписках";
|
"Common.Controls.Friendship.Following" = "В подписках";
|
||||||
"Common.Controls.Friendship.Mute" = "Игнорировать";
|
"Common.Controls.Friendship.Mute" = "Игнорировать";
|
||||||
"Common.Controls.Friendship.MuteUser" = "Добавить %@ в игнорируемые";
|
"Common.Controls.Friendship.MuteUser" = "Игнорировать %@";
|
||||||
"Common.Controls.Friendship.Muted" = "В игнорируемых";
|
"Common.Controls.Friendship.Muted" = "В игнорируемых";
|
||||||
"Common.Controls.Friendship.Pending" = "Отправлен";
|
"Common.Controls.Friendship.Pending" = "Отправлен";
|
||||||
"Common.Controls.Friendship.Request" = "Отправить запрос";
|
"Common.Controls.Friendship.Request" = "Отправить запрос";
|
||||||
|
@ -94,14 +94,14 @@
|
||||||
"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Добавить или убрать из избранного";
|
"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Добавить или убрать из избранного";
|
||||||
"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Продвинуть или убрать продвижение";
|
"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Продвинуть или убрать продвижение";
|
||||||
"Common.Controls.Status.Actions.Favorite" = "Добавить в избранное";
|
"Common.Controls.Status.Actions.Favorite" = "Добавить в избранное";
|
||||||
"Common.Controls.Status.Actions.Hide" = "Hide";
|
"Common.Controls.Status.Actions.Hide" = "Скрыть";
|
||||||
"Common.Controls.Status.Actions.Menu" = "Меню";
|
"Common.Controls.Status.Actions.Menu" = "Меню";
|
||||||
"Common.Controls.Status.Actions.Reblog" = "Продвинуть";
|
"Common.Controls.Status.Actions.Reblog" = "Продвинуть";
|
||||||
"Common.Controls.Status.Actions.Reply" = "Ответить";
|
"Common.Controls.Status.Actions.Reply" = "Ответить";
|
||||||
"Common.Controls.Status.Actions.ShowGif" = "Show GIF";
|
"Common.Controls.Status.Actions.ShowGif" = "Показать GIF";
|
||||||
"Common.Controls.Status.Actions.ShowImage" = "Show image";
|
"Common.Controls.Status.Actions.ShowImage" = "Показать изображение";
|
||||||
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player";
|
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Показать видеопроигрыватель";
|
||||||
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu";
|
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Нажмите и удерживайте, чтобы показать меню";
|
||||||
"Common.Controls.Status.Actions.Unfavorite" = "Убрать из избранного";
|
"Common.Controls.Status.Actions.Unfavorite" = "Убрать из избранного";
|
||||||
"Common.Controls.Status.Actions.Unreblog" = "Убрать продвижение";
|
"Common.Controls.Status.Actions.Unreblog" = "Убрать продвижение";
|
||||||
"Common.Controls.Status.ContentWarning" = "Предупреждение о содержании";
|
"Common.Controls.Status.ContentWarning" = "Предупреждение о содержании";
|
||||||
|
@ -116,7 +116,7 @@
|
||||||
"Common.Controls.Status.Tag.Link" = "Ссылка";
|
"Common.Controls.Status.Tag.Link" = "Ссылка";
|
||||||
"Common.Controls.Status.Tag.Mention" = "Упоминание";
|
"Common.Controls.Status.Tag.Mention" = "Упоминание";
|
||||||
"Common.Controls.Status.Tag.Url" = "Ссылка";
|
"Common.Controls.Status.Tag.Url" = "Ссылка";
|
||||||
"Common.Controls.Status.TapToReveal" = "Tap to reveal";
|
"Common.Controls.Status.TapToReveal" = "Нажмите, чтобы показать";
|
||||||
"Common.Controls.Status.UserReblogged" = "%@ продвинул(а)";
|
"Common.Controls.Status.UserReblogged" = "%@ продвинул(а)";
|
||||||
"Common.Controls.Status.UserRepliedTo" = "Ответил(а) %@";
|
"Common.Controls.Status.UserRepliedTo" = "Ответил(а) %@";
|
||||||
"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post.";
|
"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post.";
|
||||||
|
@ -198,7 +198,7 @@
|
||||||
"Scene.Compose.Visibility.Public" = "Публичный";
|
"Scene.Compose.Visibility.Public" = "Публичный";
|
||||||
"Scene.Compose.Visibility.Unlisted" = "Скрытый";
|
"Scene.Compose.Visibility.Unlisted" = "Скрытый";
|
||||||
"Scene.ConfirmEmail.Button.OpenEmailApp" = "Открыть приложение почты";
|
"Scene.ConfirmEmail.Button.OpenEmailApp" = "Открыть приложение почты";
|
||||||
"Scene.ConfirmEmail.Button.Resend" = "Resend";
|
"Scene.ConfirmEmail.Button.Resend" = "Отправить заново";
|
||||||
"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Проверьте, правильно ли указан ваш e-mail адрес, а также папку «спам», если ещё не сделали этого.";
|
"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Проверьте, правильно ли указан ваш e-mail адрес, а также папку «спам», если ещё не сделали этого.";
|
||||||
"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Отправить ещё раз";
|
"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Отправить ещё раз";
|
||||||
"Scene.ConfirmEmail.DontReceiveEmail.Title" = "Проверьте свой e-mail адрес";
|
"Scene.ConfirmEmail.DontReceiveEmail.Title" = "Проверьте свой e-mail адрес";
|
||||||
|
@ -211,6 +211,10 @@
|
||||||
Нажмите на ссылку в нём, чтобы
|
Нажмите на ссылку в нём, чтобы
|
||||||
подтвердить свою учётную запись.";
|
подтвердить свою учётную запись.";
|
||||||
"Scene.ConfirmEmail.Title" = "И ещё кое-что.";
|
"Scene.ConfirmEmail.Title" = "И ещё кое-что.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "For You";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
|
||||||
|
"Scene.Discovery.Tabs.News" = "News";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Posts";
|
||||||
"Scene.Favorite.Title" = "Ваше избранное";
|
"Scene.Favorite.Title" = "Ваше избранное";
|
||||||
"Scene.Follower.Footer" = "Followers from other servers are not displayed.";
|
"Scene.Follower.Footer" = "Followers from other servers are not displayed.";
|
||||||
"Scene.Following.Footer" = "Follows from other servers are not displayed.";
|
"Scene.Following.Footer" = "Follows from other servers are not displayed.";
|
||||||
|
@ -253,7 +257,7 @@
|
||||||
"Scene.Profile.SegmentedControl.About" = "About";
|
"Scene.Profile.SegmentedControl.About" = "About";
|
||||||
"Scene.Profile.SegmentedControl.Media" = "Медиа";
|
"Scene.Profile.SegmentedControl.Media" = "Медиа";
|
||||||
"Scene.Profile.SegmentedControl.Posts" = "Посты";
|
"Scene.Profile.SegmentedControl.Posts" = "Посты";
|
||||||
"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies";
|
"Scene.Profile.SegmentedControl.PostsAndReplies" = "Посты и ответы";
|
||||||
"Scene.Profile.SegmentedControl.Replies" = "Ответы";
|
"Scene.Profile.SegmentedControl.Replies" = "Ответы";
|
||||||
"Scene.Register.Error.Item.Agreement" = "Соглашение";
|
"Scene.Register.Error.Item.Agreement" = "Соглашение";
|
||||||
"Scene.Register.Error.Item.Email" = "E-mail";
|
"Scene.Register.Error.Item.Email" = "E-mail";
|
||||||
|
@ -298,7 +302,7 @@
|
||||||
"Scene.Report.Step2" = "Шаг 2 из 2";
|
"Scene.Report.Step2" = "Шаг 2 из 2";
|
||||||
"Scene.Report.TextPlaceholder" = "Дополнительные комментарии";
|
"Scene.Report.TextPlaceholder" = "Дополнительные комментарии";
|
||||||
"Scene.Report.Title" = "Пожаловаться на %@";
|
"Scene.Report.Title" = "Пожаловаться на %@";
|
||||||
"Scene.Report.TitleReport" = "Report";
|
"Scene.Report.TitleReport" = "Жалоба";
|
||||||
"Scene.Search.Recommend.Accounts.Description" = "Возможно, вы захотите подписаться на эти профили";
|
"Scene.Search.Recommend.Accounts.Description" = "Возможно, вы захотите подписаться на эти профили";
|
||||||
"Scene.Search.Recommend.Accounts.Follow" = "Подписаться";
|
"Scene.Search.Recommend.Accounts.Follow" = "Подписаться";
|
||||||
"Scene.Search.Recommend.Accounts.Title" = "Вам может понравится";
|
"Scene.Search.Recommend.Accounts.Title" = "Вам может понравится";
|
||||||
|
@ -376,7 +380,7 @@
|
||||||
"Scene.Settings.Section.Notifications.Trigger.Title" = "Уведомлять меня, когда";
|
"Scene.Settings.Section.Notifications.Trigger.Title" = "Уведомлять меня, когда";
|
||||||
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Отключить анимацию аватарок";
|
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Отключить анимацию аватарок";
|
||||||
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Отключить анимацию эмодзи";
|
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Отключить анимацию эмодзи";
|
||||||
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Open links in Mastodon";
|
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Открывать ссылки в Мастодоне";
|
||||||
"Scene.Settings.Section.Preference.Title" = "Предпочтения";
|
"Scene.Settings.Section.Preference.Title" = "Предпочтения";
|
||||||
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Полноценно чёрный режим";
|
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Полноценно чёрный режим";
|
||||||
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Использовать браузер по умолчанию для открытия ссылок";
|
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Использовать браузер по умолчанию для открытия ссылок";
|
||||||
|
@ -388,10 +392,10 @@
|
||||||
"Scene.SuggestionAccount.Title" = "Подпишитесь на людей";
|
"Scene.SuggestionAccount.Title" = "Подпишитесь на людей";
|
||||||
"Scene.Thread.BackTitle" = "Пост";
|
"Scene.Thread.BackTitle" = "Пост";
|
||||||
"Scene.Thread.Title" = "Пост %@";
|
"Scene.Thread.Title" = "Пост %@";
|
||||||
"Scene.Welcome.GetStarted" = "Get Started";
|
"Scene.Welcome.GetStarted" = "Присоединиться";
|
||||||
"Scene.Welcome.LogIn" = "Вход";
|
"Scene.Welcome.LogIn" = "Вход";
|
||||||
"Scene.Welcome.Slogan" = "Социальная сеть
|
"Scene.Welcome.Slogan" = "Социальная сеть
|
||||||
под вашим контролем.";
|
под вашим контролем.";
|
||||||
"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard";
|
"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard";
|
||||||
"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button.";
|
"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button.";
|
||||||
"Scene.Wizard.NewInMastodon" = "New in Mastodon";
|
"Scene.Wizard.NewInMastodon" = "Новое в Мастодоне";
|
|
@ -200,6 +200,10 @@ uploaded to Mastodon.";
|
||||||
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Tarkasta postilaatikkosi.";
|
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Tarkasta postilaatikkosi.";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "Lähetimme juuri sähköpostin osoitteeseen %@, napauta siinä olevaa linkkiä vahvistaaksesi tilisi.";
|
"Scene.ConfirmEmail.Subtitle" = "Lähetimme juuri sähköpostin osoitteeseen %@, napauta siinä olevaa linkkiä vahvistaaksesi tilisi.";
|
||||||
"Scene.ConfirmEmail.Title" = "Viimeinen asia.";
|
"Scene.ConfirmEmail.Title" = "Viimeinen asia.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "For You";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
|
||||||
|
"Scene.Discovery.Tabs.News" = "News";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Posts";
|
||||||
"Scene.Favorite.Title" = "Omat suosikit";
|
"Scene.Favorite.Title" = "Omat suosikit";
|
||||||
"Scene.Follower.Footer" = "Seuraajia muilta palvelimilta ei näytetä.";
|
"Scene.Follower.Footer" = "Seuraajia muilta palvelimilta ei näytetä.";
|
||||||
"Scene.Following.Footer" = "Seurauksia muilta palvelimilta ei näytetä.";
|
"Scene.Following.Footer" = "Seurauksia muilta palvelimilta ei näytetä.";
|
||||||
|
|
|
@ -98,10 +98,10 @@
|
||||||
"Common.Controls.Status.Actions.Menu" = "เมนู";
|
"Common.Controls.Status.Actions.Menu" = "เมนู";
|
||||||
"Common.Controls.Status.Actions.Reblog" = "ดัน";
|
"Common.Controls.Status.Actions.Reblog" = "ดัน";
|
||||||
"Common.Controls.Status.Actions.Reply" = "ตอบกลับ";
|
"Common.Controls.Status.Actions.Reply" = "ตอบกลับ";
|
||||||
"Common.Controls.Status.Actions.ShowGif" = "Show GIF";
|
"Common.Controls.Status.Actions.ShowGif" = "แสดง GIF";
|
||||||
"Common.Controls.Status.Actions.ShowImage" = "Show image";
|
"Common.Controls.Status.Actions.ShowImage" = "แสดงภาพ";
|
||||||
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player";
|
"Common.Controls.Status.Actions.ShowVideoPlayer" = "แสดงตัวเล่นวิดีโอ";
|
||||||
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu";
|
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "แตะค้างไว้เพื่อแสดงเมนู";
|
||||||
"Common.Controls.Status.Actions.Unfavorite" = "เลิกชื่นชอบ";
|
"Common.Controls.Status.Actions.Unfavorite" = "เลิกชื่นชอบ";
|
||||||
"Common.Controls.Status.Actions.Unreblog" = "เลิกทำการดัน";
|
"Common.Controls.Status.Actions.Unreblog" = "เลิกทำการดัน";
|
||||||
"Common.Controls.Status.ContentWarning" = "คำเตือนเนื้อหา";
|
"Common.Controls.Status.ContentWarning" = "คำเตือนเนื้อหา";
|
||||||
|
@ -116,7 +116,7 @@
|
||||||
"Common.Controls.Status.Tag.Link" = "ลิงก์";
|
"Common.Controls.Status.Tag.Link" = "ลิงก์";
|
||||||
"Common.Controls.Status.Tag.Mention" = "กล่าวถึง";
|
"Common.Controls.Status.Tag.Mention" = "กล่าวถึง";
|
||||||
"Common.Controls.Status.Tag.Url" = "URL";
|
"Common.Controls.Status.Tag.Url" = "URL";
|
||||||
"Common.Controls.Status.TapToReveal" = "Tap to reveal";
|
"Common.Controls.Status.TapToReveal" = "แตะเพื่อเปิดเผย";
|
||||||
"Common.Controls.Status.UserReblogged" = "%@ ได้ดัน";
|
"Common.Controls.Status.UserReblogged" = "%@ ได้ดัน";
|
||||||
"Common.Controls.Status.UserRepliedTo" = "ตอบกลับ %@";
|
"Common.Controls.Status.UserRepliedTo" = "ตอบกลับ %@";
|
||||||
"Common.Controls.Status.Visibility.Direct" = "เฉพาะผู้ใช้ที่กล่าวถึงเท่านั้นที่สามารถเห็นโพสต์นี้";
|
"Common.Controls.Status.Visibility.Direct" = "เฉพาะผู้ใช้ที่กล่าวถึงเท่านั้นที่สามารถเห็นโพสต์นี้";
|
||||||
|
@ -200,6 +200,10 @@
|
||||||
"Scene.ConfirmEmail.OpenEmailApp.Title" = "ตรวจสอบกล่องขาเข้าของคุณ";
|
"Scene.ConfirmEmail.OpenEmailApp.Title" = "ตรวจสอบกล่องขาเข้าของคุณ";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "แตะลิงก์ที่เราส่งอีเมลถึงคุณเพื่อยืนยันบัญชีของคุณ";
|
"Scene.ConfirmEmail.Subtitle" = "แตะลิงก์ที่เราส่งอีเมลถึงคุณเพื่อยืนยันบัญชีของคุณ";
|
||||||
"Scene.ConfirmEmail.Title" = "หนึ่งสิ่งสุดท้าย";
|
"Scene.ConfirmEmail.Title" = "หนึ่งสิ่งสุดท้าย";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "สำหรับคุณ";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "แฮชแท็ก";
|
||||||
|
"Scene.Discovery.Tabs.News" = "ข่าว";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "โพสต์";
|
||||||
"Scene.Favorite.Title" = "รายการโปรดของคุณ";
|
"Scene.Favorite.Title" = "รายการโปรดของคุณ";
|
||||||
"Scene.Follower.Footer" = "ไม่ได้แสดงผู้ติดตามจากเซิร์ฟเวอร์อื่น ๆ";
|
"Scene.Follower.Footer" = "ไม่ได้แสดงผู้ติดตามจากเซิร์ฟเวอร์อื่น ๆ";
|
||||||
"Scene.Following.Footer" = "ไม่ได้แสดงการติดตามจากเซิร์ฟเวอร์อื่น ๆ";
|
"Scene.Following.Footer" = "ไม่ได้แสดงการติดตามจากเซิร์ฟเวอร์อื่น ๆ";
|
||||||
|
@ -221,10 +225,10 @@
|
||||||
"Scene.Preview.Keyboard.ClosePreview" = "ปิดตัวอย่าง";
|
"Scene.Preview.Keyboard.ClosePreview" = "ปิดตัวอย่าง";
|
||||||
"Scene.Preview.Keyboard.ShowNext" = "แสดงถัดไป";
|
"Scene.Preview.Keyboard.ShowNext" = "แสดงถัดไป";
|
||||||
"Scene.Preview.Keyboard.ShowPrevious" = "แสดงก่อนหน้า";
|
"Scene.Preview.Keyboard.ShowPrevious" = "แสดงก่อนหน้า";
|
||||||
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Double tap to open the list";
|
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "แตะสองครั้งเพื่อเปิดรายการ";
|
||||||
"Scene.Profile.Accessibility.EditAvatarImage" = "Edit avatar image";
|
"Scene.Profile.Accessibility.EditAvatarImage" = "แก้ไขภาพประจำตัว";
|
||||||
"Scene.Profile.Accessibility.ShowAvatarImage" = "Show avatar image";
|
"Scene.Profile.Accessibility.ShowAvatarImage" = "แสดงภาพประจำตัว";
|
||||||
"Scene.Profile.Accessibility.ShowBannerImage" = "Show banner image";
|
"Scene.Profile.Accessibility.ShowBannerImage" = "แสดงภาพแบนเนอร์";
|
||||||
"Scene.Profile.Dashboard.Followers" = "ผู้ติดตาม";
|
"Scene.Profile.Dashboard.Followers" = "ผู้ติดตาม";
|
||||||
"Scene.Profile.Dashboard.Following" = "กำลังติดตาม";
|
"Scene.Profile.Dashboard.Following" = "กำลังติดตาม";
|
||||||
"Scene.Profile.Dashboard.Posts" = "โพสต์";
|
"Scene.Profile.Dashboard.Posts" = "โพสต์";
|
||||||
|
@ -364,7 +368,7 @@
|
||||||
"Scene.Settings.Section.Notifications.Trigger.Title" = "แจ้งเตือนฉันเมื่อ";
|
"Scene.Settings.Section.Notifications.Trigger.Title" = "แจ้งเตือนฉันเมื่อ";
|
||||||
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "ปิดใช้งานภาพประจำตัวแบบเคลื่อนไหว";
|
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "ปิดใช้งานภาพประจำตัวแบบเคลื่อนไหว";
|
||||||
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "ปิดใช้งานอีโมจิแบบเคลื่อนไหว";
|
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "ปิดใช้งานอีโมจิแบบเคลื่อนไหว";
|
||||||
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Open links in Mastodon";
|
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "เปิดลิงก์ใน Mastodon";
|
||||||
"Scene.Settings.Section.Preference.Title" = "การกำหนดลักษณะ";
|
"Scene.Settings.Section.Preference.Title" = "การกำหนดลักษณะ";
|
||||||
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "โหมดมืดดำสนิท";
|
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "โหมดมืดดำสนิท";
|
||||||
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "ใช้เบราว์เซอร์เริ่มต้นเพื่อเปิดลิงก์";
|
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "ใช้เบราว์เซอร์เริ่มต้นเพื่อเปิดลิงก์";
|
||||||
|
|
|
@ -111,7 +111,7 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld replies</string>
|
<string>%ld การตอบกลับ</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.vote</key>
|
<key>plural.count.vote</key>
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
"Common.Alerts.DeletePost.Title" = "Xóa tút";
|
"Common.Alerts.DeletePost.Title" = "Xóa tút";
|
||||||
"Common.Alerts.DiscardPostContent.Message" = "Xác nhận bỏ qua nội dung tút đã viết.";
|
"Common.Alerts.DiscardPostContent.Message" = "Xác nhận bỏ qua nội dung tút đã viết.";
|
||||||
"Common.Alerts.DiscardPostContent.Title" = "Hủy bản nháp";
|
"Common.Alerts.DiscardPostContent.Title" = "Hủy bản nháp";
|
||||||
"Common.Alerts.EditProfileFailure.Message" = "Không thể chỉnh sửa trang cá nhân. Vui lòng thử lại.";
|
"Common.Alerts.EditProfileFailure.Message" = "Không thể chỉnh sửa hồ sơ. Vui lòng thử lại.";
|
||||||
"Common.Alerts.EditProfileFailure.Title" = "Lỗi chỉnh sửa trang cá nhân";
|
"Common.Alerts.EditProfileFailure.Title" = "Lỗi chỉnh sửa hồ sơ";
|
||||||
"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Không thể đính kèm nhiều video.";
|
"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Không thể đính kèm nhiều video.";
|
||||||
"Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "Không thể đính kèm video cùng với hình ảnh.";
|
"Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "Không thể đính kèm video cùng với hình ảnh.";
|
||||||
"Common.Alerts.PublishPostFailure.Message" = "Không thể đăng tút.
|
"Common.Alerts.PublishPostFailure.Message" = "Không thể đăng tút.
|
||||||
|
@ -109,7 +109,7 @@ Vui lòng kiểm tra kết nối mạng.";
|
||||||
"Common.Controls.Status.Poll.Closed" = "Kết thúc";
|
"Common.Controls.Status.Poll.Closed" = "Kết thúc";
|
||||||
"Common.Controls.Status.Poll.Vote" = "Bình chọn";
|
"Common.Controls.Status.Poll.Vote" = "Bình chọn";
|
||||||
"Common.Controls.Status.ShowPost" = "Xem tút";
|
"Common.Controls.Status.ShowPost" = "Xem tút";
|
||||||
"Common.Controls.Status.ShowUserProfile" = "Xem trang cá nhân";
|
"Common.Controls.Status.ShowUserProfile" = "Xem trang hồ sơ";
|
||||||
"Common.Controls.Status.Tag.Email" = "Email";
|
"Common.Controls.Status.Tag.Email" = "Email";
|
||||||
"Common.Controls.Status.Tag.Emoji" = "Emoji";
|
"Common.Controls.Status.Tag.Emoji" = "Emoji";
|
||||||
"Common.Controls.Status.Tag.Hashtag" = "Hashtag";
|
"Common.Controls.Status.Tag.Hashtag" = "Hashtag";
|
||||||
|
@ -125,7 +125,7 @@ Vui lòng kiểm tra kết nối mạng.";
|
||||||
"Common.Controls.Status.Visibility.Unlisted" = "Ai cũng thấy tút này nhưng không hiện trên bảng tin máy chủ.";
|
"Common.Controls.Status.Visibility.Unlisted" = "Ai cũng thấy tút này nhưng không hiện trên bảng tin máy chủ.";
|
||||||
"Common.Controls.Tabs.Home" = "Bảng tin";
|
"Common.Controls.Tabs.Home" = "Bảng tin";
|
||||||
"Common.Controls.Tabs.Notification" = "Thông báo";
|
"Common.Controls.Tabs.Notification" = "Thông báo";
|
||||||
"Common.Controls.Tabs.Profile" = "Trang cá nhân";
|
"Common.Controls.Tabs.Profile" = "Trang hồ sơ";
|
||||||
"Common.Controls.Tabs.Search" = "Tìm kiếm";
|
"Common.Controls.Tabs.Search" = "Tìm kiếm";
|
||||||
"Common.Controls.Timeline.Filtered" = "Bộ lọc";
|
"Common.Controls.Timeline.Filtered" = "Bộ lọc";
|
||||||
"Common.Controls.Timeline.Header.BlockedWarning" = "Bạn không thể xem trang người này
|
"Common.Controls.Timeline.Header.BlockedWarning" = "Bạn không thể xem trang người này
|
||||||
|
@ -200,6 +200,10 @@ tải lên Mastodon.";
|
||||||
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Kiểm tra hộp thư của bạn.";
|
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Kiểm tra hộp thư của bạn.";
|
||||||
"Scene.ConfirmEmail.Subtitle" = "Nhấn vào liên kết chúng tôi gửi qua email để xác thực tài khoản.";
|
"Scene.ConfirmEmail.Subtitle" = "Nhấn vào liên kết chúng tôi gửi qua email để xác thực tài khoản.";
|
||||||
"Scene.ConfirmEmail.Title" = "Còn điều này nữa.";
|
"Scene.ConfirmEmail.Title" = "Còn điều này nữa.";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "Dành cho bạn";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "Hashtag";
|
||||||
|
"Scene.Discovery.Tabs.News" = "Tin tức";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "Tút";
|
||||||
"Scene.Favorite.Title" = "Lượt thích";
|
"Scene.Favorite.Title" = "Lượt thích";
|
||||||
"Scene.Follower.Footer" = "Không hiển thị người theo dõi từ máy chủ khác.";
|
"Scene.Follower.Footer" = "Không hiển thị người theo dõi từ máy chủ khác.";
|
||||||
"Scene.Following.Footer" = "Không hiển thị người bạn theo dõi từ máy chủ khác.";
|
"Scene.Following.Footer" = "Không hiển thị người bạn theo dõi từ máy chủ khác.";
|
||||||
|
|
|
@ -98,10 +98,10 @@
|
||||||
"Common.Controls.Status.Actions.Menu" = "菜单";
|
"Common.Controls.Status.Actions.Menu" = "菜单";
|
||||||
"Common.Controls.Status.Actions.Reblog" = "转发";
|
"Common.Controls.Status.Actions.Reblog" = "转发";
|
||||||
"Common.Controls.Status.Actions.Reply" = "回复";
|
"Common.Controls.Status.Actions.Reply" = "回复";
|
||||||
"Common.Controls.Status.Actions.ShowGif" = "Show GIF";
|
"Common.Controls.Status.Actions.ShowGif" = "显示 GIF";
|
||||||
"Common.Controls.Status.Actions.ShowImage" = "Show image";
|
"Common.Controls.Status.Actions.ShowImage" = "显示图片";
|
||||||
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player";
|
"Common.Controls.Status.Actions.ShowVideoPlayer" = "显示视频播放器";
|
||||||
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu";
|
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "长按以显示菜单";
|
||||||
"Common.Controls.Status.Actions.Unfavorite" = "取消喜欢";
|
"Common.Controls.Status.Actions.Unfavorite" = "取消喜欢";
|
||||||
"Common.Controls.Status.Actions.Unreblog" = "取消转发";
|
"Common.Controls.Status.Actions.Unreblog" = "取消转发";
|
||||||
"Common.Controls.Status.ContentWarning" = "内容警告";
|
"Common.Controls.Status.ContentWarning" = "内容警告";
|
||||||
|
@ -116,7 +116,7 @@
|
||||||
"Common.Controls.Status.Tag.Link" = "链接";
|
"Common.Controls.Status.Tag.Link" = "链接";
|
||||||
"Common.Controls.Status.Tag.Mention" = "提及";
|
"Common.Controls.Status.Tag.Mention" = "提及";
|
||||||
"Common.Controls.Status.Tag.Url" = "URL";
|
"Common.Controls.Status.Tag.Url" = "URL";
|
||||||
"Common.Controls.Status.TapToReveal" = "Tap to reveal";
|
"Common.Controls.Status.TapToReveal" = "点击以显示";
|
||||||
"Common.Controls.Status.UserReblogged" = "%@ 转发";
|
"Common.Controls.Status.UserReblogged" = "%@ 转发";
|
||||||
"Common.Controls.Status.UserRepliedTo" = "回复给 %@";
|
"Common.Controls.Status.UserRepliedTo" = "回复给 %@";
|
||||||
"Common.Controls.Status.Visibility.Direct" = "只有提到的用户才能看到此帖子。";
|
"Common.Controls.Status.Visibility.Direct" = "只有提到的用户才能看到此帖子。";
|
||||||
|
@ -201,6 +201,10 @@
|
||||||
"Scene.ConfirmEmail.Subtitle" = "我们刚刚向 %@ 发送了一封电子邮件,
|
"Scene.ConfirmEmail.Subtitle" = "我们刚刚向 %@ 发送了一封电子邮件,
|
||||||
点击链接确认你的帐户。";
|
点击链接确认你的帐户。";
|
||||||
"Scene.ConfirmEmail.Title" = "最后一件事。";
|
"Scene.ConfirmEmail.Title" = "最后一件事。";
|
||||||
|
"Scene.Discovery.Tabs.ForYou" = "为你推荐";
|
||||||
|
"Scene.Discovery.Tabs.Hashtags" = "话题";
|
||||||
|
"Scene.Discovery.Tabs.News" = "新闻";
|
||||||
|
"Scene.Discovery.Tabs.Posts" = "帖子";
|
||||||
"Scene.Favorite.Title" = "你的喜欢";
|
"Scene.Favorite.Title" = "你的喜欢";
|
||||||
"Scene.Follower.Footer" = "不会显示来自其它服务器的关注者";
|
"Scene.Follower.Footer" = "不会显示来自其它服务器的关注者";
|
||||||
"Scene.Following.Footer" = "不会显示来自其它服务器的关注";
|
"Scene.Following.Footer" = "不会显示来自其它服务器的关注";
|
||||||
|
@ -222,10 +226,10 @@
|
||||||
"Scene.Preview.Keyboard.ClosePreview" = "关闭预览";
|
"Scene.Preview.Keyboard.ClosePreview" = "关闭预览";
|
||||||
"Scene.Preview.Keyboard.ShowNext" = "显示下一个";
|
"Scene.Preview.Keyboard.ShowNext" = "显示下一个";
|
||||||
"Scene.Preview.Keyboard.ShowPrevious" = "显示前一个";
|
"Scene.Preview.Keyboard.ShowPrevious" = "显示前一个";
|
||||||
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Double tap to open the list";
|
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "双击打开列表";
|
||||||
"Scene.Profile.Accessibility.EditAvatarImage" = "Edit avatar image";
|
"Scene.Profile.Accessibility.EditAvatarImage" = "编辑头像";
|
||||||
"Scene.Profile.Accessibility.ShowAvatarImage" = "Show avatar image";
|
"Scene.Profile.Accessibility.ShowAvatarImage" = "显示头像";
|
||||||
"Scene.Profile.Accessibility.ShowBannerImage" = "Show banner image";
|
"Scene.Profile.Accessibility.ShowBannerImage" = "显示顶部横幅图片";
|
||||||
"Scene.Profile.Dashboard.Followers" = "关注者";
|
"Scene.Profile.Dashboard.Followers" = "关注者";
|
||||||
"Scene.Profile.Dashboard.Following" = "正在关注";
|
"Scene.Profile.Dashboard.Following" = "正在关注";
|
||||||
"Scene.Profile.Dashboard.Posts" = "帖子";
|
"Scene.Profile.Dashboard.Posts" = "帖子";
|
||||||
|
@ -366,7 +370,7 @@
|
||||||
"Scene.Settings.Section.Notifications.Trigger.Title" = "提示通知来自";
|
"Scene.Settings.Section.Notifications.Trigger.Title" = "提示通知来自";
|
||||||
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "禁用动画头像";
|
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "禁用动画头像";
|
||||||
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "禁用动画表情";
|
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "禁用动画表情";
|
||||||
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Open links in Mastodon";
|
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "在 Mastodon 中打开链接";
|
||||||
"Scene.Settings.Section.Preference.Title" = "偏好";
|
"Scene.Settings.Section.Preference.Title" = "偏好";
|
||||||
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "纯黑模式";
|
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "纯黑模式";
|
||||||
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "使用默认浏览器打开链接";
|
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "使用默认浏览器打开链接";
|
||||||
|
|
|
@ -111,7 +111,7 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld replies</string>
|
<string>%ld 条回复</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.vote</key>
|
<key>plural.count.vote</key>
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
//
|
||||||
|
// MastodonStatus.swift
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Created by MainasuK on 2022-4-18.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import CoreDataStack
|
||||||
|
|
||||||
|
extension Status {
|
||||||
|
|
||||||
|
// mark content sensitive when status contains spoilerText
|
||||||
|
public var isContentSensitive: Bool {
|
||||||
|
if let spoilerText = spoilerText, !spoilerText.isEmpty {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// mark media sensitive when `isContentSensitive` or media marked sensitive
|
||||||
|
public var isMediaSensitive: Bool {
|
||||||
|
// some servers set media sensitive even empty attachments
|
||||||
|
return isContentSensitive || (sensitive && !attachments.isEmpty)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -48,22 +48,7 @@ public final class MediaGridContainerView: UIView {
|
||||||
return mediaViews
|
return mediaViews
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
let contentWarningOverlay = ContentWarningOverlayView()
|
||||||
// let sensitiveToggleButtonBlurVisualEffectView: UIVisualEffectView = {
|
|
||||||
// let visualEffectView = UIVisualEffectView(effect: ContentWarningOverlayView.blurVisualEffect)
|
|
||||||
// visualEffectView.layer.masksToBounds = true
|
|
||||||
// visualEffectView.layer.cornerRadius = MediaGridContainerView.sensitiveToggleButtonSize.width / 2
|
|
||||||
// visualEffectView.layer.cornerCurve = .continuous
|
|
||||||
// return visualEffectView
|
|
||||||
// }()
|
|
||||||
// let sensitiveToggleButtonVibrancyVisualEffectView = UIVisualEffectView(effect: UIVibrancyEffect(blurEffect: ContentWarningOverlayView.blurVisualEffect))
|
|
||||||
// let sensitiveToggleButton: HitTestExpandedButton = {
|
|
||||||
// let button = HitTestExpandedButton(type: .system)
|
|
||||||
// button.contentEdgeInsets = UIEdgeInsets(top: 4, left: 4, bottom: 4, right: 4)
|
|
||||||
// button.imageView?.contentMode = .scaleAspectFit
|
|
||||||
// button.setImage(UIImage(systemName: "eye.slash.fill"), for: .normal)
|
|
||||||
// return button
|
|
||||||
// }()
|
|
||||||
|
|
||||||
public override init(frame: CGRect) {
|
public override init(frame: CGRect) {
|
||||||
super.init(frame: frame)
|
super.init(frame: frame)
|
||||||
|
@ -86,7 +71,8 @@ public final class MediaGridContainerView: UIView {
|
||||||
|
|
||||||
extension MediaGridContainerView {
|
extension MediaGridContainerView {
|
||||||
private func _init() {
|
private func _init() {
|
||||||
// sensitiveToggleButton.addTarget(self, action: #selector(MediaGridContainerView.sensitiveToggleButtonDidPressed(_:)), for: .touchUpInside)
|
contentWarningOverlay.isUserInteractionEnabled = false
|
||||||
|
contentWarningOverlay.isHidden = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,8 +98,8 @@ extension MediaGridContainerView {
|
||||||
let mediaView = _mediaViews[0]
|
let mediaView = _mediaViews[0]
|
||||||
layout.layout(in: self, mediaView: mediaView)
|
layout.layout(in: self, mediaView: mediaView)
|
||||||
|
|
||||||
// layoutSensitiveToggleButton()
|
layoutContentWarningOverlay()
|
||||||
// bringSubviewToFront(sensitiveToggleButtonBlurVisualEffectView)
|
bringSubviewToFront(contentWarningOverlay)
|
||||||
|
|
||||||
return mediaView
|
return mediaView
|
||||||
}
|
}
|
||||||
|
@ -124,8 +110,8 @@ extension MediaGridContainerView {
|
||||||
let mediaViews = Array(_mediaViews[0..<layout.count])
|
let mediaViews = Array(_mediaViews[0..<layout.count])
|
||||||
layout.layout(in: self, mediaViews: mediaViews)
|
layout.layout(in: self, mediaViews: mediaViews)
|
||||||
|
|
||||||
// layoutSensitiveToggleButton()
|
layoutContentWarningOverlay()
|
||||||
// bringSubviewToFront(sensitiveToggleButtonBlurVisualEffectView)
|
bringSubviewToFront(contentWarningOverlay)
|
||||||
|
|
||||||
return mediaViews
|
return mediaViews
|
||||||
}
|
}
|
||||||
|
@ -147,34 +133,16 @@ extension MediaGridContainerView {
|
||||||
}
|
}
|
||||||
|
|
||||||
extension MediaGridContainerView {
|
extension MediaGridContainerView {
|
||||||
// private func layoutSensitiveToggleButton() {
|
private func layoutContentWarningOverlay() {
|
||||||
// sensitiveToggleButtonBlurVisualEffectView.translatesAutoresizingMaskIntoConstraints = false
|
contentWarningOverlay.translatesAutoresizingMaskIntoConstraints = false
|
||||||
// addSubview(sensitiveToggleButtonBlurVisualEffectView)
|
addSubview(contentWarningOverlay)
|
||||||
// NSLayoutConstraint.activate([
|
NSLayoutConstraint.activate([
|
||||||
// sensitiveToggleButtonBlurVisualEffectView.topAnchor.constraint(equalTo: topAnchor, constant: 16),
|
contentWarningOverlay.topAnchor.constraint(equalTo: topAnchor),
|
||||||
// trailingAnchor.constraint(equalTo: sensitiveToggleButtonBlurVisualEffectView.trailingAnchor, constant: 16),
|
contentWarningOverlay.leadingAnchor.constraint(equalTo: leadingAnchor),
|
||||||
// ])
|
contentWarningOverlay.trailingAnchor.constraint(equalTo: trailingAnchor),
|
||||||
//
|
contentWarningOverlay.bottomAnchor.constraint(equalTo: bottomAnchor),
|
||||||
// sensitiveToggleButtonVibrancyVisualEffectView.translatesAutoresizingMaskIntoConstraints = false
|
])
|
||||||
// sensitiveToggleButtonBlurVisualEffectView.contentView.addSubview(sensitiveToggleButtonVibrancyVisualEffectView)
|
}
|
||||||
// NSLayoutConstraint.activate([
|
|
||||||
// sensitiveToggleButtonVibrancyVisualEffectView.topAnchor.constraint(equalTo: sensitiveToggleButtonBlurVisualEffectView.contentView.topAnchor),
|
|
||||||
// sensitiveToggleButtonVibrancyVisualEffectView.leadingAnchor.constraint(equalTo: sensitiveToggleButtonBlurVisualEffectView.contentView.leadingAnchor),
|
|
||||||
// sensitiveToggleButtonVibrancyVisualEffectView.trailingAnchor.constraint(equalTo: sensitiveToggleButtonBlurVisualEffectView.contentView.trailingAnchor),
|
|
||||||
// sensitiveToggleButtonVibrancyVisualEffectView.bottomAnchor.constraint(equalTo: sensitiveToggleButtonBlurVisualEffectView.contentView.bottomAnchor),
|
|
||||||
// ])
|
|
||||||
//
|
|
||||||
// sensitiveToggleButton.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
// sensitiveToggleButtonVibrancyVisualEffectView.contentView.addSubview(sensitiveToggleButton)
|
|
||||||
// NSLayoutConstraint.activate([
|
|
||||||
// sensitiveToggleButton.topAnchor.constraint(equalTo: sensitiveToggleButtonVibrancyVisualEffectView.contentView.topAnchor),
|
|
||||||
// sensitiveToggleButton.leadingAnchor.constraint(equalTo: sensitiveToggleButtonVibrancyVisualEffectView.contentView.leadingAnchor),
|
|
||||||
// sensitiveToggleButtonVibrancyVisualEffectView.contentView.trailingAnchor.constraint(equalTo: sensitiveToggleButton.trailingAnchor),
|
|
||||||
// sensitiveToggleButtonVibrancyVisualEffectView.contentView.bottomAnchor.constraint(equalTo: sensitiveToggleButton.bottomAnchor),
|
|
||||||
// sensitiveToggleButton.widthAnchor.constraint(equalToConstant: MediaGridContainerView.sensitiveToggleButtonSize.width).priority(.required - 1),
|
|
||||||
// sensitiveToggleButton.heightAnchor.constraint(equalToConstant: MediaGridContainerView.sensitiveToggleButtonSize.height).priority(.required - 1),
|
|
||||||
// ])
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension MediaGridContainerView {
|
extension MediaGridContainerView {
|
||||||
|
|
|
@ -9,9 +9,28 @@ import UIKit
|
||||||
import MastodonSDK
|
import MastodonSDK
|
||||||
import MastodonLocalization
|
import MastodonLocalization
|
||||||
import AlamofireImage
|
import AlamofireImage
|
||||||
|
import FaviconFinder
|
||||||
|
|
||||||
extension NewsView {
|
extension NewsView {
|
||||||
public func configure(link: Mastodon.Entity.Link) {
|
public func configure(link: Mastodon.Entity.Link) {
|
||||||
|
let faviconPlaceholder = UIImage(systemName: "network")
|
||||||
|
providerFaviconImageView.image = faviconPlaceholder
|
||||||
|
if let url = URL(string: link.url) {
|
||||||
|
let token = providerFaviconImageView.tag
|
||||||
|
FaviconFinder(url: url).downloadFavicon { [weak self] result in
|
||||||
|
guard let self = self else { return }
|
||||||
|
switch result {
|
||||||
|
case .success(let favicon):
|
||||||
|
DispatchQueue.main.async { [weak self] in
|
||||||
|
guard let self = self else { return }
|
||||||
|
guard self.providerFaviconImageView.tag == token else { return }
|
||||||
|
self.providerFaviconImageView.image = favicon.image
|
||||||
|
}
|
||||||
|
case .failure:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
providerNameLabel.text = link.providerName
|
providerNameLabel.text = link.providerName
|
||||||
headlineLabel.text = link.title
|
headlineLabel.text = link.title
|
||||||
footnoteLabel.text = L10n.Plural.peopleTalking(link.talkingPeopleCount ?? 0)
|
footnoteLabel.text = L10n.Plural.peopleTalking(link.talkingPeopleCount ?? 0)
|
||||||
|
|
|
@ -12,6 +12,15 @@ public final class NewsView: UIView {
|
||||||
|
|
||||||
let container = UIStackView()
|
let container = UIStackView()
|
||||||
|
|
||||||
|
let providerFaviconImageView: UIImageView = {
|
||||||
|
let imageView = UIImageView()
|
||||||
|
imageView.contentMode = .scaleAspectFit
|
||||||
|
imageView.layer.masksToBounds = true
|
||||||
|
imageView.layer.cornerRadius = 2
|
||||||
|
imageView.layer.cornerCurve = .continuous
|
||||||
|
return imageView
|
||||||
|
}()
|
||||||
|
|
||||||
let providerNameLabel: UILabel = {
|
let providerNameLabel: UILabel = {
|
||||||
let label = UILabel()
|
let label = UILabel()
|
||||||
label.font = UIFontMetrics(forTextStyle: .footnote).scaledFont(for: .systemFont(ofSize: 13, weight: .semibold))
|
label.font = UIFontMetrics(forTextStyle: .footnote).scaledFont(for: .systemFont(ofSize: 13, weight: .semibold))
|
||||||
|
@ -37,6 +46,7 @@ public final class NewsView: UIView {
|
||||||
let imageView = MediaView()
|
let imageView = MediaView()
|
||||||
|
|
||||||
public func prepareForReuse() {
|
public func prepareForReuse() {
|
||||||
|
providerFaviconImageView.tag = (0..<Int.max).randomElement() ?? -1
|
||||||
imageView.prepareForReuse()
|
imageView.prepareForReuse()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,12 +82,27 @@ extension NewsView {
|
||||||
textContainer.spacing = 4
|
textContainer.spacing = 4
|
||||||
container.addArrangedSubview(textContainer)
|
container.addArrangedSubview(textContainer)
|
||||||
|
|
||||||
// providerContainer: H - [ providerFavIconImageView | providerNameLabel | (spacer) ]
|
// providerContainer: H - [ providerFaviconImageView | providerNameLabel | (spacer) ]
|
||||||
let providerContainer = UIStackView()
|
let providerContainer = UIStackView()
|
||||||
providerContainer.axis = .horizontal
|
providerContainer.axis = .horizontal
|
||||||
|
providerContainer.spacing = 4
|
||||||
textContainer.addArrangedSubview(providerContainer)
|
textContainer.addArrangedSubview(providerContainer)
|
||||||
|
|
||||||
|
providerFaviconImageView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
providerContainer.addArrangedSubview(providerFaviconImageView)
|
||||||
providerContainer.addArrangedSubview(providerNameLabel)
|
providerContainer.addArrangedSubview(providerNameLabel)
|
||||||
|
NSLayoutConstraint.activate([
|
||||||
|
providerFaviconImageView.heightAnchor.constraint(equalTo: providerNameLabel.heightAnchor, multiplier: 1.0).priority(.required - 10),
|
||||||
|
providerFaviconImageView.widthAnchor.constraint(equalTo: providerNameLabel.heightAnchor, multiplier: 1.0).priority(.required - 10),
|
||||||
|
])
|
||||||
|
// low priority for intrinsic size hugging
|
||||||
|
providerFaviconImageView.setContentHuggingPriority(.defaultLow - 10, for: .vertical)
|
||||||
|
providerFaviconImageView.setContentHuggingPriority(.defaultLow - 10, for: .horizontal)
|
||||||
|
// high priority but lower then layout constraint for size compression
|
||||||
|
providerFaviconImageView.setContentCompressionResistancePriority(.required - 11, for: .vertical)
|
||||||
|
providerFaviconImageView.setContentCompressionResistancePriority(.required - 11, for: .horizontal)
|
||||||
|
providerNameLabel.setContentCompressionResistancePriority(.required - 1, for: .vertical)
|
||||||
|
providerNameLabel.setContentHuggingPriority(.required - 1, for: .vertical)
|
||||||
|
|
||||||
// headlineLabel
|
// headlineLabel
|
||||||
textContainer.addArrangedSubview(headlineLabel)
|
textContainer.addArrangedSubview(headlineLabel)
|
||||||
|
|
|
@ -42,6 +42,8 @@ extension ProfileCardView {
|
||||||
@Published public var isBlocking = false
|
@Published public var isBlocking = false
|
||||||
@Published public var isBlockedBy = false
|
@Published public var isBlockedBy = false
|
||||||
|
|
||||||
|
@Published public var groupedAccessibilityLabel = ""
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
backgroundColor = ThemeService.shared.currentTheme.value.systemBackgroundColor
|
backgroundColor = ThemeService.shared.currentTheme.value.systemBackgroundColor
|
||||||
Publishers.CombineLatest(
|
Publishers.CombineLatest(
|
||||||
|
@ -75,6 +77,7 @@ extension ProfileCardView.ViewModel {
|
||||||
bindBio(view: view)
|
bindBio(view: view)
|
||||||
bindRelationship(view: view)
|
bindRelationship(view: view)
|
||||||
bindDashboard(view: view)
|
bindDashboard(view: view)
|
||||||
|
bindAccessibility(view: view)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func bindAppearacne(view: ProfileCardView) {
|
private func bindAppearacne(view: ProfileCardView) {
|
||||||
|
@ -185,4 +188,27 @@ extension ProfileCardView.ViewModel {
|
||||||
}
|
}
|
||||||
.store(in: &disposeBag)
|
.store(in: &disposeBag)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func bindAccessibility(view: ProfileCardView) {
|
||||||
|
let authorAccessibilityLabel = Publishers.CombineLatest(
|
||||||
|
$authorName,
|
||||||
|
$bioContent
|
||||||
|
)
|
||||||
|
.map { authorName, bioContent -> String? in
|
||||||
|
var strings: [String?] = []
|
||||||
|
strings.append(authorName?.string)
|
||||||
|
strings.append(bioContent?.string)
|
||||||
|
return strings.compactMap { $0 }.joined(separator: ", ")
|
||||||
|
}
|
||||||
|
|
||||||
|
authorAccessibilityLabel
|
||||||
|
.map { $0 ?? "" }
|
||||||
|
.assign(to: &$groupedAccessibilityLabel)
|
||||||
|
|
||||||
|
$groupedAccessibilityLabel
|
||||||
|
.sink { accessibilityLabel in
|
||||||
|
view.accessibilityLabel = accessibilityLabel
|
||||||
|
}
|
||||||
|
.store(in: &disposeBag)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,6 +46,8 @@ public final class ProfileCardView: UIView {
|
||||||
// author username
|
// author username
|
||||||
public let authorUsernameLabel = MetaLabel(style: .profileCardUsername)
|
public let authorUsernameLabel = MetaLabel(style: .profileCardUsername)
|
||||||
|
|
||||||
|
// bio
|
||||||
|
let bioMetaTextAdaptiveMarginContainerView = AdaptiveMarginContainerView()
|
||||||
let bioMetaText: MetaText = {
|
let bioMetaText: MetaText = {
|
||||||
let metaText = MetaText()
|
let metaText = MetaText()
|
||||||
metaText.textView.backgroundColor = .clear
|
metaText.textView.backgroundColor = .clear
|
||||||
|
@ -78,6 +80,9 @@ public final class ProfileCardView: UIView {
|
||||||
return metaText
|
return metaText
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
let infoContainerAdaptiveMarginContainerView = AdaptiveMarginContainerView()
|
||||||
|
let infoContainer = UIStackView()
|
||||||
|
|
||||||
let statusDashboardView = ProfileStatusDashboardView()
|
let statusDashboardView = ProfileStatusDashboardView()
|
||||||
|
|
||||||
let relationshipActionButtonShadowContainer = ShadowBackgroundContainer()
|
let relationshipActionButtonShadowContainer = ShadowBackgroundContainer()
|
||||||
|
@ -179,7 +184,7 @@ extension ProfileCardView {
|
||||||
|
|
||||||
avatarButtonBackgroundView.layer.masksToBounds = true
|
avatarButtonBackgroundView.layer.masksToBounds = true
|
||||||
avatarButtonBackgroundView.layer.cornerCurve = .continuous
|
avatarButtonBackgroundView.layer.cornerCurve = .continuous
|
||||||
avatarButtonBackgroundView.layer.cornerRadius = 12
|
avatarButtonBackgroundView.layer.cornerRadius = 12 + 1
|
||||||
avatarButtonBackgroundView.translatesAutoresizingMaskIntoConstraints = false
|
avatarButtonBackgroundView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
authorContainer.insertSubview(avatarButtonBackgroundView, belowSubview: avatarButton)
|
authorContainer.insertSubview(avatarButtonBackgroundView, belowSubview: avatarButton)
|
||||||
NSLayoutConstraint.activate([
|
NSLayoutConstraint.activate([
|
||||||
|
@ -192,29 +197,34 @@ extension ProfileCardView {
|
||||||
// authorInfoContainer: V - [ authorNameLabel | authorUsernameLabel ]
|
// authorInfoContainer: V - [ authorNameLabel | authorUsernameLabel ]
|
||||||
let authorInfoContainer = UIStackView()
|
let authorInfoContainer = UIStackView()
|
||||||
authorInfoContainer.axis = .vertical
|
authorInfoContainer.axis = .vertical
|
||||||
authorInfoContainer.spacing = 2
|
// authorInfoContainer.spacing = 2
|
||||||
authorContainer.addArrangedSubview(authorInfoContainer)
|
authorContainer.addArrangedSubview(authorInfoContainer)
|
||||||
|
|
||||||
authorInfoContainer.addArrangedSubview(authorNameLabel)
|
authorInfoContainer.addArrangedSubview(authorNameLabel)
|
||||||
authorInfoContainer.addArrangedSubview(authorUsernameLabel)
|
authorInfoContainer.addArrangedSubview(authorUsernameLabel)
|
||||||
|
|
||||||
// bioMetaText
|
// bioMetaText
|
||||||
let bioMetaTextAdaptiveMarginContainerView = AdaptiveMarginContainerView()
|
|
||||||
bioMetaTextAdaptiveMarginContainerView.contentView = bioMetaText.textView
|
bioMetaTextAdaptiveMarginContainerView.contentView = bioMetaText.textView
|
||||||
bioMetaTextAdaptiveMarginContainerView.margin = ProfileCardView.contentMargin
|
bioMetaTextAdaptiveMarginContainerView.margin = ProfileCardView.contentMargin
|
||||||
|
bioMetaText.textView.setContentHuggingPriority(.required - 1, for: .vertical)
|
||||||
|
bioMetaText.textView.setContentCompressionResistancePriority(.required - 1, for: .vertical)
|
||||||
container.addArrangedSubview(bioMetaTextAdaptiveMarginContainerView)
|
container.addArrangedSubview(bioMetaTextAdaptiveMarginContainerView)
|
||||||
container.setCustomSpacing(16, after: bioMetaTextAdaptiveMarginContainerView)
|
container.setCustomSpacing(16, after: bioMetaTextAdaptiveMarginContainerView)
|
||||||
|
|
||||||
// infoContainer: H - [ statusDashboardView | (spacer) | relationshipActionButton ]
|
// infoContainer: H - [ statusDashboardView | (spacer) | relationshipActionButton ]
|
||||||
let infoContainer = UIStackView()
|
|
||||||
infoContainer.axis = .horizontal
|
infoContainer.axis = .horizontal
|
||||||
let infoContainerAdaptiveMarginContainerView = AdaptiveMarginContainerView()
|
infoContainer.spacing = 8
|
||||||
infoContainerAdaptiveMarginContainerView.contentView = infoContainer
|
infoContainerAdaptiveMarginContainerView.contentView = infoContainer
|
||||||
infoContainerAdaptiveMarginContainerView.margin = ProfileCardView.contentMargin
|
infoContainerAdaptiveMarginContainerView.margin = ProfileCardView.contentMargin
|
||||||
container.addArrangedSubview(infoContainerAdaptiveMarginContainerView)
|
container.addArrangedSubview(infoContainerAdaptiveMarginContainerView)
|
||||||
|
|
||||||
infoContainer.addArrangedSubview(statusDashboardView)
|
infoContainer.addArrangedSubview(statusDashboardView)
|
||||||
|
let infoContainerSpacer = UIView()
|
||||||
infoContainer.addArrangedSubview(UIView())
|
infoContainer.addArrangedSubview(UIView())
|
||||||
|
infoContainerSpacer.setContentHuggingPriority(.defaultLow - 100, for: .vertical)
|
||||||
|
infoContainerSpacer.setContentHuggingPriority(.defaultLow - 100, for: .horizontal)
|
||||||
let relationshipActionButtonShadowContainer = ShadowBackgroundContainer()
|
let relationshipActionButtonShadowContainer = ShadowBackgroundContainer()
|
||||||
|
relationshipActionButtonShadowContainer.translatesAutoresizingMaskIntoConstraints = false
|
||||||
infoContainer.addArrangedSubview(relationshipActionButtonShadowContainer)
|
infoContainer.addArrangedSubview(relationshipActionButtonShadowContainer)
|
||||||
|
|
||||||
relationshipActionButton.translatesAutoresizingMaskIntoConstraints = false
|
relationshipActionButton.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
@ -224,15 +234,15 @@ extension ProfileCardView {
|
||||||
relationshipActionButton.leadingAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.leadingAnchor),
|
relationshipActionButton.leadingAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.leadingAnchor),
|
||||||
relationshipActionButton.trailingAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.trailingAnchor),
|
relationshipActionButton.trailingAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.trailingAnchor),
|
||||||
relationshipActionButton.bottomAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.bottomAnchor),
|
relationshipActionButton.bottomAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.bottomAnchor),
|
||||||
relationshipActionButton.widthAnchor.constraint(greaterThanOrEqualToConstant: ProfileCardView.friendshipActionButtonSize.width).priority(.required - 1),
|
relationshipActionButtonShadowContainer.widthAnchor.constraint(greaterThanOrEqualToConstant: ProfileCardView.friendshipActionButtonSize.width).priority(.required - 1),
|
||||||
relationshipActionButton.heightAnchor.constraint(equalToConstant: ProfileCardView.friendshipActionButtonSize.height).priority(.defaultHigh),
|
relationshipActionButtonShadowContainer.heightAnchor.constraint(equalToConstant: ProfileCardView.friendshipActionButtonSize.height).priority(.required - 1),
|
||||||
])
|
])
|
||||||
|
|
||||||
let bottomPadding = UIView()
|
let bottomPadding = UIView()
|
||||||
bottomPadding.translatesAutoresizingMaskIntoConstraints = false
|
bottomPadding.translatesAutoresizingMaskIntoConstraints = false
|
||||||
container.addArrangedSubview(bottomPadding)
|
container.addArrangedSubview(bottomPadding)
|
||||||
NSLayoutConstraint.activate([
|
NSLayoutConstraint.activate([
|
||||||
bottomPadding.heightAnchor.constraint(equalToConstant: 16)
|
bottomPadding.heightAnchor.constraint(equalToConstant: 16).priority(.required - 10),
|
||||||
])
|
])
|
||||||
|
|
||||||
relationshipActionButton.addTarget(self, action: #selector(ProfileCardView.relationshipActionButtonDidPressed(_:)), for: .touchUpInside)
|
relationshipActionButton.addTarget(self, action: #selector(ProfileCardView.relationshipActionButtonDidPressed(_:)), for: .touchUpInside)
|
||||||
|
@ -244,6 +254,26 @@ extension ProfileCardView {
|
||||||
viewModel.userInterfaceStyle = traitCollection.userInterfaceStyle
|
viewModel.userInterfaceStyle = traitCollection.userInterfaceStyle
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override func layoutSubviews() {
|
||||||
|
updateInfoContainerLayout()
|
||||||
|
super.layoutSubviews()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
extension ProfileCardView {
|
||||||
|
public func setupLayoutFrame(_ rect: CGRect) {
|
||||||
|
frame.size.width = rect.width
|
||||||
|
bioMetaTextAdaptiveMarginContainerView.frame.size.width = frame.width
|
||||||
|
bioMetaTextAdaptiveMarginContainerView.contentView?.frame.size.width = frame.width - 2 * bioMetaTextAdaptiveMarginContainerView.margin
|
||||||
|
infoContainerAdaptiveMarginContainerView.frame.size.width = frame.width
|
||||||
|
infoContainerAdaptiveMarginContainerView.contentView?.frame.size.width = frame.width - 2 * infoContainerAdaptiveMarginContainerView.margin
|
||||||
|
}
|
||||||
|
|
||||||
|
private func updateInfoContainerLayout() {
|
||||||
|
let isCompactAdaptive = bounds.width < 350
|
||||||
|
infoContainer.axis = isCompactAdaptive ? .vertical : .horizontal
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension ProfileCardView {
|
extension ProfileCardView {
|
||||||
|
|
|
@ -74,11 +74,9 @@ extension StatusView {
|
||||||
|
|
||||||
// Sensitive
|
// Sensitive
|
||||||
@Published public var isContentSensitive: Bool = false
|
@Published public var isContentSensitive: Bool = false
|
||||||
@Published public var isContentSensitiveToggled: Bool = false
|
|
||||||
@Published public var isMediaSensitive: Bool = false
|
@Published public var isMediaSensitive: Bool = false
|
||||||
@Published public var isMediaSensitiveToggled: Bool = false
|
@Published public var isSensitiveToggled = false
|
||||||
|
|
||||||
@Published public var isSensitive: Bool = false // isContentSensitive || isMediaSensitive
|
|
||||||
@Published public var isContentReveal: Bool = true
|
@Published public var isContentReveal: Bool = true
|
||||||
@Published public var isMediaReveal: Bool = true
|
@Published public var isMediaReveal: Bool = true
|
||||||
|
|
||||||
|
@ -130,9 +128,8 @@ extension StatusView {
|
||||||
authorAvatarImageURL = nil
|
authorAvatarImageURL = nil
|
||||||
|
|
||||||
isContentSensitive = false
|
isContentSensitive = false
|
||||||
isContentSensitiveToggled = false
|
|
||||||
isMediaSensitive = false
|
isMediaSensitive = false
|
||||||
isMediaSensitiveToggled = false
|
isSensitiveToggled = false
|
||||||
|
|
||||||
activeFilters = []
|
activeFilters = []
|
||||||
filterContext = nil
|
filterContext = nil
|
||||||
|
@ -161,28 +158,18 @@ extension StatusView {
|
||||||
$spoilerContent
|
$spoilerContent
|
||||||
.map { $0 != nil }
|
.map { $0 != nil }
|
||||||
.assign(to: &$isContentSensitive)
|
.assign(to: &$isContentSensitive)
|
||||||
// isSensitive
|
// isReveal
|
||||||
Publishers.CombineLatest(
|
Publishers.CombineLatest3(
|
||||||
$isContentSensitive,
|
$isContentSensitive,
|
||||||
$isMediaSensitive
|
|
||||||
)
|
|
||||||
.map { $0 || $1 }
|
|
||||||
.assign(to: &$isSensitive)
|
|
||||||
// $isContentReveal
|
|
||||||
Publishers.CombineLatest(
|
|
||||||
$isContentSensitive,
|
|
||||||
$isContentSensitiveToggled
|
|
||||||
)
|
|
||||||
.map { $0 ? $1 : true }
|
|
||||||
.assign(to: &$isContentReveal)
|
|
||||||
// $isMediaReveal
|
|
||||||
Publishers.CombineLatest(
|
|
||||||
$isMediaSensitive,
|
$isMediaSensitive,
|
||||||
$isMediaSensitiveToggled
|
$isSensitiveToggled
|
||||||
)
|
)
|
||||||
.map { $1 ? !$0 : $0 }
|
.sink { [weak self] isContentSensitive, isMediaSensitive, isSensitiveToggled in
|
||||||
.map { !$0 }
|
guard let self = self else { return }
|
||||||
.assign(to: &$isMediaReveal)
|
self.isContentReveal = isContentSensitive ? isSensitiveToggled : true
|
||||||
|
self.isMediaReveal = isMediaSensitive ? isSensitiveToggled : true
|
||||||
|
}
|
||||||
|
.store(in: &disposeBag)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -326,21 +313,14 @@ extension StatusView.ViewModel {
|
||||||
}
|
}
|
||||||
.store(in: &disposeBag)
|
.store(in: &disposeBag)
|
||||||
|
|
||||||
$isSensitive
|
$isMediaSensitive
|
||||||
.sink { isSensitive in
|
.sink { isSensitive in
|
||||||
guard isSensitive else { return }
|
guard isSensitive else { return }
|
||||||
statusView.setContentSensitiveeToggleButtonDisplay()
|
statusView.setContentSensitiveeToggleButtonDisplay()
|
||||||
}
|
}
|
||||||
.store(in: &disposeBag)
|
.store(in: &disposeBag)
|
||||||
|
|
||||||
// There are 2 conditions:
|
$isSensitiveToggled
|
||||||
// 1. The content may non-sensitive with sensitive media
|
|
||||||
// 2. The content and media both senstivie
|
|
||||||
Publishers.CombineLatest(
|
|
||||||
$isContentSensitiveToggled,
|
|
||||||
$isMediaSensitiveToggled
|
|
||||||
)
|
|
||||||
.map { $0 || $1 }
|
|
||||||
.sink { isSensitiveToggled in
|
.sink { isSensitiveToggled in
|
||||||
// The button indicator go-to state for button action direction
|
// The button indicator go-to state for button action direction
|
||||||
// eye: when media is hidden
|
// eye: when media is hidden
|
||||||
|
@ -405,6 +385,7 @@ extension StatusView.ViewModel {
|
||||||
|
|
||||||
$isMediaReveal
|
$isMediaReveal
|
||||||
.sink { isMediaReveal in
|
.sink { isMediaReveal in
|
||||||
|
statusView.mediaGridContainerView.contentWarningOverlay.isHidden = isMediaReveal
|
||||||
statusView.mediaGridContainerView.viewModel.isSensitiveToggleButtonDisplay = isMediaReveal
|
statusView.mediaGridContainerView.viewModel.isSensitiveToggleButtonDisplay = isMediaReveal
|
||||||
}
|
}
|
||||||
.store(in: &disposeBag)
|
.store(in: &disposeBag)
|
||||||
|
|
|
@ -508,6 +508,7 @@ extension StatusView.Style {
|
||||||
|
|
||||||
// status content
|
// status content
|
||||||
statusView.contentContainer.addArrangedSubview(statusView.contentMetaText.textView)
|
statusView.contentContainer.addArrangedSubview(statusView.contentMetaText.textView)
|
||||||
|
statusView.containerStackView.setCustomSpacing(16, after: statusView.contentMetaText.textView)
|
||||||
|
|
||||||
statusView.spoilerOverlayView.translatesAutoresizingMaskIntoConstraints = false
|
statusView.spoilerOverlayView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
statusView.containerStackView.addSubview(statusView.spoilerOverlayView)
|
statusView.containerStackView.addSubview(statusView.spoilerOverlayView)
|
||||||
|
|
|
@ -114,7 +114,7 @@ extension ActionToolbarContainer {
|
||||||
container.addArrangedSubview(favoriteButton)
|
container.addArrangedSubview(favoriteButton)
|
||||||
container.addArrangedSubview(shareButton)
|
container.addArrangedSubview(shareButton)
|
||||||
NSLayoutConstraint.activate([
|
NSLayoutConstraint.activate([
|
||||||
replyButton.heightAnchor.constraint(equalToConstant: 44).priority(.defaultHigh),
|
replyButton.heightAnchor.constraint(equalToConstant: 36).priority(.defaultHigh),
|
||||||
replyButton.heightAnchor.constraint(equalTo: reblogButton.heightAnchor).priority(.defaultHigh),
|
replyButton.heightAnchor.constraint(equalTo: reblogButton.heightAnchor).priority(.defaultHigh),
|
||||||
replyButton.heightAnchor.constraint(equalTo: favoriteButton.heightAnchor).priority(.defaultHigh),
|
replyButton.heightAnchor.constraint(equalTo: favoriteButton.heightAnchor).priority(.defaultHigh),
|
||||||
replyButton.heightAnchor.constraint(equalTo: shareButton.heightAnchor).priority(.defaultHigh),
|
replyButton.heightAnchor.constraint(equalTo: shareButton.heightAnchor).priority(.defaultHigh),
|
||||||
|
|
|
@ -7,28 +7,24 @@
|
||||||
|
|
||||||
import os.log
|
import os.log
|
||||||
import UIKit
|
import UIKit
|
||||||
|
import MastodonLocalization
|
||||||
public protocol ContentWarningOverlayViewDelegate: AnyObject {
|
|
||||||
func contentWarningOverlayViewDidPressed(_ contentWarningOverlayView: ContentWarningOverlayView)
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class ContentWarningOverlayView: UIView {
|
public final class ContentWarningOverlayView: UIView {
|
||||||
|
|
||||||
public static let blurVisualEffect = UIBlurEffect(style: .systemUltraThinMaterial)
|
|
||||||
|
|
||||||
let logger = Logger(subsystem: "ContentWarningOverlayView", category: "View")
|
let logger = Logger(subsystem: "ContentWarningOverlayView", category: "View")
|
||||||
|
|
||||||
public weak var delegate: ContentWarningOverlayViewDelegate?
|
let hintLabel: UILabel = {
|
||||||
|
let label = UILabel()
|
||||||
public let blurVisualEffectView = UIVisualEffectView(effect: ContentWarningOverlayView.blurVisualEffect)
|
label.font = .systemFont(ofSize: 18, weight: .regular)
|
||||||
public let vibrancyVisualEffectView = UIVisualEffectView(effect: UIVibrancyEffect(blurEffect: ContentWarningOverlayView.blurVisualEffect))
|
label.text = L10n.Common.Controls.Status.tapToReveal
|
||||||
// let alertImageView: UIImageView = {
|
label.textAlignment = .center
|
||||||
// let imageView = UIImageView()
|
label.textColor = .white.withAlphaComponent(0.7)
|
||||||
// imageView.image = Asset.Indices.exclamationmarkTriangleLarge.image.withRenderingMode(.alwaysTemplate)
|
label.layer.shadowOpacity = 0.3
|
||||||
// return imageView
|
label.layer.shadowOffset = CGSize(width: 0, height: 2)
|
||||||
// }()
|
label.layer.shadowRadius = 2
|
||||||
|
label.layer.shadowColor = UIColor.black.cgColor
|
||||||
public let tapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer
|
return label
|
||||||
|
}()
|
||||||
|
|
||||||
override init(frame: CGRect) {
|
override init(frame: CGRect) {
|
||||||
super.init(frame: frame)
|
super.init(frame: frame)
|
||||||
|
@ -44,40 +40,12 @@ public final class ContentWarningOverlayView: UIView {
|
||||||
|
|
||||||
extension ContentWarningOverlayView {
|
extension ContentWarningOverlayView {
|
||||||
private func _init() {
|
private func _init() {
|
||||||
// overlay
|
hintLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||||
blurVisualEffectView.translatesAutoresizingMaskIntoConstraints = false
|
addSubview(hintLabel)
|
||||||
addSubview(blurVisualEffectView)
|
|
||||||
NSLayoutConstraint.activate([
|
NSLayoutConstraint.activate([
|
||||||
blurVisualEffectView.topAnchor.constraint(equalTo: topAnchor),
|
hintLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 8),
|
||||||
blurVisualEffectView.leadingAnchor.constraint(equalTo: leadingAnchor),
|
trailingAnchor.constraint(equalTo: hintLabel.trailingAnchor, constant: 8),
|
||||||
blurVisualEffectView.trailingAnchor.constraint(equalTo: trailingAnchor),
|
centerYAnchor.constraint(equalTo: hintLabel.centerYAnchor, constant: 10),
|
||||||
blurVisualEffectView.bottomAnchor.constraint(equalTo: bottomAnchor),
|
|
||||||
])
|
])
|
||||||
|
|
||||||
vibrancyVisualEffectView.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
blurVisualEffectView.contentView.addSubview(vibrancyVisualEffectView)
|
|
||||||
NSLayoutConstraint.activate([
|
|
||||||
vibrancyVisualEffectView.topAnchor.constraint(equalTo: blurVisualEffectView.contentView.topAnchor),
|
|
||||||
vibrancyVisualEffectView.leadingAnchor.constraint(equalTo: blurVisualEffectView.contentView.leadingAnchor),
|
|
||||||
vibrancyVisualEffectView.trailingAnchor.constraint(equalTo: blurVisualEffectView.contentView.trailingAnchor),
|
|
||||||
vibrancyVisualEffectView.bottomAnchor.constraint(equalTo: blurVisualEffectView.contentView.bottomAnchor),
|
|
||||||
])
|
|
||||||
|
|
||||||
// alertImageView.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
// vibrancyVisualEffectView.contentView.addSubview(alertImageView)
|
|
||||||
// NSLayoutConstraint.activate([
|
|
||||||
// alertImageView.centerXAnchor.constraint(equalTo: vibrancyVisualEffectView.contentView.centerXAnchor),
|
|
||||||
// alertImageView.centerYAnchor.constraint(equalTo: vibrancyVisualEffectView.contentView.centerYAnchor),
|
|
||||||
// ])
|
|
||||||
|
|
||||||
tapGestureRecognizer.addTarget(self, action: #selector(ContentWarningOverlayView.tapGestureRecognizerHandler(_:)))
|
|
||||||
addGestureRecognizer(tapGestureRecognizer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extension ContentWarningOverlayView {
|
|
||||||
@objc private func tapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) {
|
|
||||||
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
|
|
||||||
delegate?.contentWarningOverlayViewDidPressed(self)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue