Merge branch 'main' into feat/selectable-text
This commit is contained in:
+1
-1
@@ -25,7 +25,7 @@ module.exports = function () {
|
||||
/**
|
||||
* Android build number. Must be incremented for each release.
|
||||
*/
|
||||
const ANDROID_VERSION_CODE = 57
|
||||
const ANDROID_VERSION_CODE = 58
|
||||
|
||||
/**
|
||||
* Uses built-in Expo env vars
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "bsky.app",
|
||||
"version": "1.65.0",
|
||||
"version": "1.66.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
|
||||
+11
-22
@@ -1,5 +1,4 @@
|
||||
import * as React from 'react'
|
||||
import {StyleSheet} from 'react-native'
|
||||
import {
|
||||
NavigationContainer,
|
||||
createNavigationContainerRef,
|
||||
@@ -25,7 +24,6 @@ import {
|
||||
import {BottomBar} from './view/shell/bottom-bar/BottomBar'
|
||||
import {buildStateObject} from 'lib/routes/helpers'
|
||||
import {State, RouteParams} from 'lib/routes/types'
|
||||
import {colors} from 'lib/styles'
|
||||
import {isAndroid, isNative} from 'platform/detection'
|
||||
import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle'
|
||||
import {router} from './routes'
|
||||
@@ -299,7 +297,7 @@ function TabsNavigator() {
|
||||
}
|
||||
|
||||
function HomeTabNavigator() {
|
||||
const contentStyle = useColorSchemeStyle(styles.bgLight, styles.bgDark)
|
||||
const pal = usePalette('default')
|
||||
|
||||
return (
|
||||
<HomeTab.Navigator
|
||||
@@ -309,7 +307,7 @@ function HomeTabNavigator() {
|
||||
fullScreenGestureEnabled: true,
|
||||
headerShown: false,
|
||||
animationDuration: 250,
|
||||
contentStyle,
|
||||
contentStyle: pal.view,
|
||||
}}>
|
||||
<HomeTab.Screen
|
||||
name="Home"
|
||||
@@ -322,7 +320,7 @@ function HomeTabNavigator() {
|
||||
}
|
||||
|
||||
function SearchTabNavigator() {
|
||||
const contentStyle = useColorSchemeStyle(styles.bgLight, styles.bgDark)
|
||||
const pal = usePalette('default')
|
||||
return (
|
||||
<SearchTab.Navigator
|
||||
screenOptions={{
|
||||
@@ -331,7 +329,7 @@ function SearchTabNavigator() {
|
||||
fullScreenGestureEnabled: true,
|
||||
headerShown: false,
|
||||
animationDuration: 250,
|
||||
contentStyle,
|
||||
contentStyle: pal.view,
|
||||
}}>
|
||||
<SearchTab.Screen name="Search" getComponent={() => SearchScreen} />
|
||||
{commonScreens(SearchTab as typeof HomeTab)}
|
||||
@@ -340,7 +338,7 @@ function SearchTabNavigator() {
|
||||
}
|
||||
|
||||
function FeedsTabNavigator() {
|
||||
const contentStyle = useColorSchemeStyle(styles.bgLight, styles.bgDark)
|
||||
const pal = usePalette('default')
|
||||
return (
|
||||
<FeedsTab.Navigator
|
||||
screenOptions={{
|
||||
@@ -349,7 +347,7 @@ function FeedsTabNavigator() {
|
||||
fullScreenGestureEnabled: true,
|
||||
headerShown: false,
|
||||
animationDuration: 250,
|
||||
contentStyle,
|
||||
contentStyle: pal.view,
|
||||
}}>
|
||||
<FeedsTab.Screen
|
||||
name="Feeds"
|
||||
@@ -362,7 +360,7 @@ function FeedsTabNavigator() {
|
||||
}
|
||||
|
||||
function NotificationsTabNavigator() {
|
||||
const contentStyle = useColorSchemeStyle(styles.bgLight, styles.bgDark)
|
||||
const pal = usePalette('default')
|
||||
return (
|
||||
<NotificationsTab.Navigator
|
||||
screenOptions={{
|
||||
@@ -371,7 +369,7 @@ function NotificationsTabNavigator() {
|
||||
fullScreenGestureEnabled: true,
|
||||
headerShown: false,
|
||||
animationDuration: 250,
|
||||
contentStyle,
|
||||
contentStyle: pal.view,
|
||||
}}>
|
||||
<NotificationsTab.Screen
|
||||
name="Notifications"
|
||||
@@ -384,7 +382,7 @@ function NotificationsTabNavigator() {
|
||||
}
|
||||
|
||||
function MyProfileTabNavigator() {
|
||||
const contentStyle = useColorSchemeStyle(styles.bgLight, styles.bgDark)
|
||||
const pal = usePalette('default')
|
||||
return (
|
||||
<MyProfileTab.Navigator
|
||||
screenOptions={{
|
||||
@@ -393,7 +391,7 @@ function MyProfileTabNavigator() {
|
||||
fullScreenGestureEnabled: true,
|
||||
headerShown: false,
|
||||
animationDuration: 250,
|
||||
contentStyle,
|
||||
contentStyle: pal.view,
|
||||
}}>
|
||||
<MyProfileTab.Screen
|
||||
// @ts-ignore // TODO: fix this broken type in ProfileScreen
|
||||
@@ -424,7 +422,7 @@ const FlatNavigator = () => {
|
||||
fullScreenGestureEnabled: true,
|
||||
headerShown: false,
|
||||
animationDuration: 250,
|
||||
contentStyle: [pal.view],
|
||||
contentStyle: pal.view,
|
||||
}}>
|
||||
<Flat.Screen
|
||||
name="Home"
|
||||
@@ -620,15 +618,6 @@ function handleLink(url: string) {
|
||||
}
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
bgDark: {
|
||||
backgroundColor: colors.black,
|
||||
},
|
||||
bgLight: {
|
||||
backgroundColor: colors.white,
|
||||
},
|
||||
})
|
||||
|
||||
let didInit = false
|
||||
function logModuleInitTime() {
|
||||
if (didInit) {
|
||||
|
||||
@@ -0,0 +1,253 @@
|
||||
import {CountryCode} from 'libphonenumber-js'
|
||||
|
||||
// ISO 3166-1 alpha-2 codes
|
||||
|
||||
export interface CountryCodeMap {
|
||||
code2: CountryCode
|
||||
name: string
|
||||
}
|
||||
|
||||
export const COUNTRY_CODES: CountryCodeMap[] = [
|
||||
{code2: 'AF', name: 'Afghanistan (+93)'},
|
||||
{code2: 'AX', name: 'Åland Islands (+358)'},
|
||||
{code2: 'AL', name: 'Albania (+355)'},
|
||||
{code2: 'DZ', name: 'Algeria (+213)'},
|
||||
{code2: 'AS', name: 'American Samoa (+1)'},
|
||||
{code2: 'AD', name: 'Andorra (+376)'},
|
||||
{code2: 'AO', name: 'Angola (+244)'},
|
||||
{code2: 'AI', name: 'Anguilla (+1)'},
|
||||
{code2: 'AG', name: 'Antigua and Barbuda (+1)'},
|
||||
{code2: 'AR', name: 'Argentina (+54)'},
|
||||
{code2: 'AM', name: 'Armenia (+374)'},
|
||||
{code2: 'AW', name: 'Aruba (+297)'},
|
||||
{code2: 'AU', name: 'Australia (+61)'},
|
||||
{code2: 'AT', name: 'Austria (+43)'},
|
||||
{code2: 'AZ', name: 'Azerbaijan (+994)'},
|
||||
{code2: 'BS', name: 'Bahamas (+1)'},
|
||||
{code2: 'BH', name: 'Bahrain (+973)'},
|
||||
{code2: 'BD', name: 'Bangladesh (+880)'},
|
||||
{code2: 'BB', name: 'Barbados (+1)'},
|
||||
{code2: 'BY', name: 'Belarus (+375)'},
|
||||
{code2: 'BE', name: 'Belgium (+32)'},
|
||||
{code2: 'BZ', name: 'Belize (+501)'},
|
||||
{code2: 'BJ', name: 'Benin (+229)'},
|
||||
{code2: 'BM', name: 'Bermuda (+1)'},
|
||||
{code2: 'BT', name: 'Bhutan (+975)'},
|
||||
{code2: 'BO', name: 'Bolivia (Plurinational State of) (+591)'},
|
||||
{code2: 'BQ', name: 'Bonaire, Sint Eustatius and Saba (+599)'},
|
||||
{code2: 'BA', name: 'Bosnia and Herzegovina (+387)'},
|
||||
{code2: 'BW', name: 'Botswana (+267)'},
|
||||
{code2: 'BR', name: 'Brazil (+55)'},
|
||||
{code2: 'IO', name: 'British Indian Ocean Territory (+246)'},
|
||||
{code2: 'BN', name: 'Brunei Darussalam (+673)'},
|
||||
{code2: 'BG', name: 'Bulgaria (+359)'},
|
||||
{code2: 'BF', name: 'Burkina Faso (+226)'},
|
||||
{code2: 'BI', name: 'Burundi (+257)'},
|
||||
{code2: 'CV', name: 'Cabo Verde (+238)'},
|
||||
{code2: 'KH', name: 'Cambodia (+855)'},
|
||||
{code2: 'CM', name: 'Cameroon (+237)'},
|
||||
{code2: 'CA', name: 'Canada (+1)'},
|
||||
{code2: 'KY', name: 'Cayman Islands (+1)'},
|
||||
{code2: 'CF', name: 'Central African Republic (+236)'},
|
||||
{code2: 'TD', name: 'Chad (+235)'},
|
||||
{code2: 'CL', name: 'Chile (+56)'},
|
||||
{code2: 'CN', name: 'China (+86)'},
|
||||
{code2: 'CX', name: 'Christmas Island (+61)'},
|
||||
{code2: 'CC', name: 'Cocos (Keeling) Islands (+61)'},
|
||||
{code2: 'CO', name: 'Colombia (+57)'},
|
||||
{code2: 'KM', name: 'Comoros (+269)'},
|
||||
{code2: 'CG', name: 'Congo (+242)'},
|
||||
{code2: 'CD', name: 'Congo, Democratic Republic of the (+243)'},
|
||||
{code2: 'CK', name: 'Cook Islands (+682)'},
|
||||
{code2: 'CR', name: 'Costa Rica (+506)'},
|
||||
{code2: 'CI', name: "Côte d'Ivoire (+225)"},
|
||||
{code2: 'HR', name: 'Croatia (+385)'},
|
||||
{code2: 'CU', name: 'Cuba (+53)'},
|
||||
{code2: 'CW', name: 'Curaçao (+599)'},
|
||||
{code2: 'CY', name: 'Cyprus (+357)'},
|
||||
{code2: 'CZ', name: 'Czechia (+420)'},
|
||||
{code2: 'DK', name: 'Denmark (+45)'},
|
||||
{code2: 'DJ', name: 'Djibouti (+253)'},
|
||||
{code2: 'DM', name: 'Dominica (+1)'},
|
||||
{code2: 'DO', name: 'Dominican Republic (+1)'},
|
||||
{code2: 'EC', name: 'Ecuador (+593)'},
|
||||
{code2: 'EG', name: 'Egypt (+20)'},
|
||||
{code2: 'SV', name: 'El Salvador (+503)'},
|
||||
{code2: 'GQ', name: 'Equatorial Guinea (+240)'},
|
||||
{code2: 'ER', name: 'Eritrea (+291)'},
|
||||
{code2: 'EE', name: 'Estonia (+372)'},
|
||||
{code2: 'SZ', name: 'Eswatini (+268)'},
|
||||
{code2: 'ET', name: 'Ethiopia (+251)'},
|
||||
{code2: 'FK', name: 'Falkland Islands (Malvinas) (+500)'},
|
||||
{code2: 'FO', name: 'Faroe Islands (+298)'},
|
||||
{code2: 'FJ', name: 'Fiji (+679)'},
|
||||
{code2: 'FI', name: 'Finland (+358)'},
|
||||
{code2: 'FR', name: 'France (+33)'},
|
||||
{code2: 'GF', name: 'French Guiana (+594)'},
|
||||
{code2: 'PF', name: 'French Polynesia (+689)'},
|
||||
{code2: 'GA', name: 'Gabon (+241)'},
|
||||
{code2: 'GM', name: 'Gambia (+220)'},
|
||||
{code2: 'GE', name: 'Georgia (+995)'},
|
||||
{code2: 'DE', name: 'Germany (+49)'},
|
||||
{code2: 'GH', name: 'Ghana (+233)'},
|
||||
{code2: 'GI', name: 'Gibraltar (+350)'},
|
||||
{code2: 'GB', name: 'Great Britain (+44)'},
|
||||
{code2: 'GR', name: 'Greece (+30)'},
|
||||
{code2: 'GL', name: 'Greenland (+299)'},
|
||||
{code2: 'GD', name: 'Grenada (+1)'},
|
||||
{code2: 'GP', name: 'Guadeloupe (+590)'},
|
||||
{code2: 'GU', name: 'Guam (+1)'},
|
||||
{code2: 'GT', name: 'Guatemala (+502)'},
|
||||
{code2: 'GG', name: 'Guernsey (+44)'},
|
||||
{code2: 'GN', name: 'Guinea (+224)'},
|
||||
{code2: 'GW', name: 'Guinea-Bissau (+245)'},
|
||||
{code2: 'GY', name: 'Guyana (+592)'},
|
||||
{code2: 'HT', name: 'Haiti (+509)'},
|
||||
{code2: 'VA', name: 'Holy See (+39)'},
|
||||
{code2: 'HN', name: 'Honduras (+504)'},
|
||||
{code2: 'HK', name: 'Hong Kong (+852)'},
|
||||
{code2: 'HU', name: 'Hungary (+36)'},
|
||||
{code2: 'IS', name: 'Iceland (+354)'},
|
||||
{code2: 'IN', name: 'India (+91)'},
|
||||
{code2: 'ID', name: 'Indonesia (+62)'},
|
||||
{code2: 'IR', name: 'Iran (Islamic Republic of) (+98)'},
|
||||
{code2: 'IQ', name: 'Iraq (+964)'},
|
||||
{code2: 'IE', name: 'Ireland (+353)'},
|
||||
{code2: 'IM', name: 'Isle of Man (+44)'},
|
||||
{code2: 'IL', name: 'Israel (+972)'},
|
||||
{code2: 'IT', name: 'Italy (+39)'},
|
||||
{code2: 'JM', name: 'Jamaica (+1)'},
|
||||
{code2: 'JP', name: 'Japan (+81)'},
|
||||
{code2: 'JE', name: 'Jersey (+44)'},
|
||||
{code2: 'JO', name: 'Jordan (+962)'},
|
||||
{code2: 'KZ', name: 'Kazakhstan (+7)'},
|
||||
{code2: 'KE', name: 'Kenya (+254)'},
|
||||
{code2: 'KI', name: 'Kiribati (+686)'},
|
||||
{code2: 'KP', name: "Korea (Democratic People's Republic of) (+850)"},
|
||||
{code2: 'KR', name: 'Korea, Republic of (+82)'},
|
||||
{code2: 'KW', name: 'Kuwait (+965)'},
|
||||
{code2: 'KG', name: 'Kyrgyzstan (+996)'},
|
||||
{code2: 'LA', name: "Lao People's Democratic Republic (+856)"},
|
||||
{code2: 'LV', name: 'Latvia (+371)'},
|
||||
{code2: 'LB', name: 'Lebanon (+961)'},
|
||||
{code2: 'LS', name: 'Lesotho (+266)'},
|
||||
{code2: 'LR', name: 'Liberia (+231)'},
|
||||
{code2: 'LY', name: 'Libya (+218)'},
|
||||
{code2: 'LI', name: 'Liechtenstein (+423)'},
|
||||
{code2: 'LT', name: 'Lithuania (+370)'},
|
||||
{code2: 'LU', name: 'Luxembourg (+352)'},
|
||||
{code2: 'MO', name: 'Macao (+853)'},
|
||||
{code2: 'MG', name: 'Madagascar (+261)'},
|
||||
{code2: 'MW', name: 'Malawi (+265)'},
|
||||
{code2: 'MY', name: 'Malaysia (+60)'},
|
||||
{code2: 'MV', name: 'Maldives (+960)'},
|
||||
{code2: 'ML', name: 'Mali (+223)'},
|
||||
{code2: 'MT', name: 'Malta (+356)'},
|
||||
{code2: 'MH', name: 'Marshall Islands (+692)'},
|
||||
{code2: 'MQ', name: 'Martinique (+596)'},
|
||||
{code2: 'MR', name: 'Mauritania (+222)'},
|
||||
{code2: 'MU', name: 'Mauritius (+230)'},
|
||||
{code2: 'YT', name: 'Mayotte (+262)'},
|
||||
{code2: 'MX', name: 'Mexico (+52)'},
|
||||
{code2: 'FM', name: 'Micronesia (Federated States of) (+691)'},
|
||||
{code2: 'MD', name: 'Moldova, Republic of (+373)'},
|
||||
{code2: 'MC', name: 'Monaco (+377)'},
|
||||
{code2: 'MN', name: 'Mongolia (+976)'},
|
||||
{code2: 'ME', name: 'Montenegro (+382)'},
|
||||
{code2: 'MS', name: 'Montserrat (+1)'},
|
||||
{code2: 'MA', name: 'Morocco (+212)'},
|
||||
{code2: 'MZ', name: 'Mozambique (+258)'},
|
||||
{code2: 'MM', name: 'Myanmar (+95)'},
|
||||
{code2: 'NA', name: 'Namibia (+264)'},
|
||||
{code2: 'NR', name: 'Nauru (+674)'},
|
||||
{code2: 'NP', name: 'Nepal (+977)'},
|
||||
{code2: 'NL', name: 'Netherlands, Kingdom of the (+31)'},
|
||||
{code2: 'NC', name: 'New Caledonia (+687)'},
|
||||
{code2: 'NZ', name: 'New Zealand (+64)'},
|
||||
{code2: 'NI', name: 'Nicaragua (+505)'},
|
||||
{code2: 'NE', name: 'Niger (+227)'},
|
||||
{code2: 'NG', name: 'Nigeria (+234)'},
|
||||
{code2: 'NU', name: 'Niue (+683)'},
|
||||
{code2: 'NF', name: 'Norfolk Island (+672)'},
|
||||
{code2: 'MK', name: 'North Macedonia (+389)'},
|
||||
{code2: 'MP', name: 'Northern Mariana Islands (+1)'},
|
||||
{code2: 'NO', name: 'Norway (+47)'},
|
||||
{code2: 'OM', name: 'Oman (+968)'},
|
||||
{code2: 'PK', name: 'Pakistan (+92)'},
|
||||
{code2: 'PW', name: 'Palau (+680)'},
|
||||
{code2: 'PS', name: 'Palestine, State of (+970)'},
|
||||
{code2: 'PA', name: 'Panama (+507)'},
|
||||
{code2: 'PG', name: 'Papua New Guinea (+675)'},
|
||||
{code2: 'PY', name: 'Paraguay (+595)'},
|
||||
{code2: 'PE', name: 'Peru (+51)'},
|
||||
{code2: 'PH', name: 'Philippines (+63)'},
|
||||
{code2: 'PL', name: 'Poland (+48)'},
|
||||
{code2: 'PT', name: 'Portugal (+351)'},
|
||||
{code2: 'PR', name: 'Puerto Rico (+1)'},
|
||||
{code2: 'QA', name: 'Qatar (+974)'},
|
||||
{code2: 'RE', name: 'Réunion (+262)'},
|
||||
{code2: 'RO', name: 'Romania (+40)'},
|
||||
{code2: 'RU', name: 'Russian Federation (+7)'},
|
||||
{code2: 'RW', name: 'Rwanda (+250)'},
|
||||
{code2: 'BL', name: 'Saint Barthélemy (+590)'},
|
||||
{code2: 'SH', name: 'Saint Helena, Ascension and Tristan da Cunha (+290)'},
|
||||
{code2: 'KN', name: 'Saint Kitts and Nevis (+1)'},
|
||||
{code2: 'LC', name: 'Saint Lucia (+1)'},
|
||||
{code2: 'MF', name: 'Saint Martin (French part) (+590)'},
|
||||
{code2: 'PM', name: 'Saint Pierre and Miquelon (+508)'},
|
||||
{code2: 'VC', name: 'Saint Vincent and the Grenadines (+1)'},
|
||||
{code2: 'WS', name: 'Samoa (+685)'},
|
||||
{code2: 'SM', name: 'San Marino (+378)'},
|
||||
{code2: 'ST', name: 'Sao Tome and Principe (+239)'},
|
||||
{code2: 'SA', name: 'Saudi Arabia (+966)'},
|
||||
{code2: 'SN', name: 'Senegal (+221)'},
|
||||
{code2: 'RS', name: 'Serbia (+381)'},
|
||||
{code2: 'SC', name: 'Seychelles (+248)'},
|
||||
{code2: 'SL', name: 'Sierra Leone (+232)'},
|
||||
{code2: 'SG', name: 'Singapore (+65)'},
|
||||
{code2: 'SX', name: 'Sint Maarten (Dutch part) (+1)'},
|
||||
{code2: 'SK', name: 'Slovakia (+421)'},
|
||||
{code2: 'SI', name: 'Slovenia (+386)'},
|
||||
{code2: 'SB', name: 'Solomon Islands (+677)'},
|
||||
{code2: 'SO', name: 'Somalia (+252)'},
|
||||
{code2: 'ZA', name: 'South Africa (+27)'},
|
||||
{code2: 'SS', name: 'South Sudan (+211)'},
|
||||
{code2: 'ES', name: 'Spain (+34)'},
|
||||
{code2: 'LK', name: 'Sri Lanka (+94)'},
|
||||
{code2: 'SD', name: 'Sudan (+249)'},
|
||||
{code2: 'SR', name: 'Suriname (+597)'},
|
||||
{code2: 'SJ', name: 'Svalbard and Jan Mayen (+47)'},
|
||||
{code2: 'SE', name: 'Sweden (+46)'},
|
||||
{code2: 'CH', name: 'Switzerland (+41)'},
|
||||
{code2: 'SY', name: 'Syrian Arab Republic (+963)'},
|
||||
{code2: 'TW', name: 'Taiwan, Province of China (+886)'},
|
||||
{code2: 'TJ', name: 'Tajikistan (+992)'},
|
||||
{code2: 'TZ', name: 'Tanzania, United Republic of (+255)'},
|
||||
{code2: 'TH', name: 'Thailand (+66)'},
|
||||
{code2: 'TL', name: 'Timor-Leste (+670)'},
|
||||
{code2: 'TG', name: 'Togo (+228)'},
|
||||
{code2: 'TK', name: 'Tokelau (+690)'},
|
||||
{code2: 'TO', name: 'Tonga (+676)'},
|
||||
{code2: 'TT', name: 'Trinidad and Tobago (+1)'},
|
||||
{code2: 'TN', name: 'Tunisia (+216)'},
|
||||
{code2: 'TR', name: 'Türkiye (+90)'},
|
||||
{code2: 'TM', name: 'Turkmenistan (+993)'},
|
||||
{code2: 'TC', name: 'Turks and Caicos Islands (+1)'},
|
||||
{code2: 'TV', name: 'Tuvalu (+688)'},
|
||||
{code2: 'UG', name: 'Uganda (+256)'},
|
||||
{code2: 'UA', name: 'Ukraine (+380)'},
|
||||
{code2: 'AE', name: 'United Arab Emirates (+971)'},
|
||||
{code2: 'US', name: 'United States of America (+1)'},
|
||||
{code2: 'UY', name: 'Uruguay (+598)'},
|
||||
{code2: 'UZ', name: 'Uzbekistan (+998)'},
|
||||
{code2: 'VU', name: 'Vanuatu (+678)'},
|
||||
{code2: 'VE', name: 'Venezuela (Bolivarian Republic of) (+58)'},
|
||||
{code2: 'VN', name: 'Viet Nam (+84)'},
|
||||
{code2: 'VI', name: 'Virgin Islands (+1)'},
|
||||
{code2: 'VG', name: 'Virgin Islands (British) (+1)'},
|
||||
{code2: 'WF', name: 'Wallis and Futuna (+681)'},
|
||||
{code2: 'EH', name: 'Western Sahara (+212)'},
|
||||
{code2: 'YE', name: 'Yemen (+967)'},
|
||||
{code2: 'ZM', name: 'Zambia (+260)'},
|
||||
{code2: 'ZW', name: 'Zimbabwe (+263)'},
|
||||
]
|
||||
+2149
-485
File diff suppressed because it is too large
Load Diff
+273
-174
File diff suppressed because it is too large
Load Diff
+273
-174
File diff suppressed because it is too large
Load Diff
+273
-174
File diff suppressed because it is too large
Load Diff
+157
-133
@@ -23,8 +23,8 @@ msgstr "{0, plural, one {# code d’invitation disponible} other {# codes d’in
|
||||
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:185
|
||||
#: src/view/screens/Settings.tsx:294
|
||||
msgid "{0}"
|
||||
msgstr "{0}"
|
||||
#~ msgid "{0}"
|
||||
#~ msgstr "{0}"
|
||||
|
||||
#: src/view/com/profile/ProfileHeader.tsx:632
|
||||
msgid "{following} following"
|
||||
@@ -45,16 +45,16 @@ msgid "{invitesAvailable} invite codes available"
|
||||
msgstr "{invitesAvailable} codes d’invitation disponibles"
|
||||
|
||||
#: src/view/screens/Search/Search.tsx:87
|
||||
msgid "{message}"
|
||||
msgstr "{message}"
|
||||
#~ msgid "{message}"
|
||||
#~ msgstr "{message}"
|
||||
|
||||
#: src/view/shell/Drawer.tsx:443
|
||||
msgid "{numUnreadNotifications} unread"
|
||||
msgstr "{numUnreadNotifications} non lus"
|
||||
|
||||
#: src/Navigation.tsx:147
|
||||
msgid "@{0}"
|
||||
msgstr "@{0}"
|
||||
#~ msgid "@{0}"
|
||||
#~ msgstr "@{0}"
|
||||
|
||||
#: src/view/com/threadgate/WhoCanReply.tsx:158
|
||||
msgid "<0/> members"
|
||||
@@ -89,7 +89,7 @@ msgid "A new version of the app is available. Please update to continue using th
|
||||
msgstr "Une nouvelle version de l’application est disponible. Veuillez faire la mise à jour pour continuer à utiliser l’application."
|
||||
|
||||
#: src/view/com/util/ViewHeader.tsx:83
|
||||
#: src/view/screens/Search/Search.tsx:538
|
||||
#: src/view/screens/Search/Search.tsx:545
|
||||
msgid "Access navigation links and settings"
|
||||
msgstr "Accède aux liens de navigation et aux paramètres"
|
||||
|
||||
@@ -288,7 +288,7 @@ msgstr "Paramètres de mot de passe d’application"
|
||||
msgid "App passwords"
|
||||
msgstr "Mots de passe d’application"
|
||||
|
||||
#: src/Navigation.tsx:239
|
||||
#: src/Navigation.tsx:237
|
||||
#: src/view/screens/AppPasswords.tsx:187
|
||||
msgid "App Passwords"
|
||||
msgstr "Mots de passe d’application"
|
||||
@@ -337,11 +337,6 @@ msgstr ""
|
||||
msgid "Artistic or non-erotic nudity."
|
||||
msgstr "Nudité artistique ou non érotique."
|
||||
|
||||
#: src/view/com/post-thread/PostThread.tsx:400
|
||||
msgctxt "action"
|
||||
msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: src/view/com/auth/create/CreateAccount.tsx:142
|
||||
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
|
||||
#: src/view/com/auth/login/ForgotPasswordForm.tsx:170
|
||||
@@ -356,6 +351,11 @@ msgstr "Retour"
|
||||
msgid "Back"
|
||||
msgstr "Arrière"
|
||||
|
||||
#: src/view/com/post-thread/PostThread.tsx:400
|
||||
msgctxt "action"
|
||||
msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: src/view/screens/Settings.tsx:489
|
||||
msgid "Basics"
|
||||
msgstr "Principes de base"
|
||||
@@ -391,7 +391,7 @@ msgid "Block this List"
|
||||
msgstr "Bloquer cette liste"
|
||||
|
||||
#: src/view/com/lists/ListCard.tsx:109
|
||||
#: src/view/com/util/post-embeds/QuoteEmbed.tsx:57
|
||||
#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
|
||||
msgid "Blocked"
|
||||
msgstr "Bloqué"
|
||||
|
||||
@@ -399,7 +399,7 @@ msgstr "Bloqué"
|
||||
msgid "Blocked accounts"
|
||||
msgstr "Comptes bloqués"
|
||||
|
||||
#: src/Navigation.tsx:131
|
||||
#: src/Navigation.tsx:129
|
||||
#: src/view/screens/ModerationBlockedAccounts.tsx:107
|
||||
msgid "Blocked Accounts"
|
||||
msgstr "Comptes bloqués"
|
||||
@@ -493,21 +493,12 @@ msgstr "Caméra"
|
||||
msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
|
||||
msgstr "Ne peut contenir que des lettres, des chiffres, des espaces, des tirets et des tirets bas. La longueur doit être d’au moins 4 caractères, mais pas plus de 32."
|
||||
|
||||
#: src/view/com/modals/Confirm.tsx:88
|
||||
#: src/view/com/modals/Confirm.tsx:91
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:293
|
||||
#: src/view/com/modals/DeleteAccount.tsx:152
|
||||
#: src/view/com/modals/DeleteAccount.tsx:230
|
||||
msgctxt "action"
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: src/components/Prompt.tsx:92
|
||||
#: src/view/com/composer/Composer.tsx:300
|
||||
#: src/view/com/composer/Composer.tsx:305
|
||||
#: src/view/com/modals/ChangeEmail.tsx:218
|
||||
#: src/view/com/modals/ChangeEmail.tsx:220
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:288
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:286
|
||||
#: src/view/com/modals/EditImage.tsx:323
|
||||
#: src/view/com/modals/EditProfile.tsx:249
|
||||
#: src/view/com/modals/InAppBrowserConsent.tsx:78
|
||||
@@ -516,8 +507,17 @@ msgstr "Annuler"
|
||||
#: src/view/com/modals/VerifyEmail.tsx:247
|
||||
#: src/view/com/modals/VerifyEmail.tsx:253
|
||||
#: src/view/com/modals/Waitlist.tsx:142
|
||||
#: src/view/screens/Search/Search.tsx:602
|
||||
#: src/view/shell/desktop/Search.tsx:185
|
||||
#: src/view/screens/Search/Search.tsx:609
|
||||
#: src/view/shell/desktop/Search.tsx:238
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: src/view/com/modals/Confirm.tsx:88
|
||||
#: src/view/com/modals/Confirm.tsx:91
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:291
|
||||
#: src/view/com/modals/DeleteAccount.tsx:152
|
||||
#: src/view/com/modals/DeleteAccount.tsx:230
|
||||
msgctxt "action"
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
@@ -543,7 +543,7 @@ msgid "Cancel quote post"
|
||||
msgstr "Annuler la citation"
|
||||
|
||||
#: src/view/com/modals/ListAddRemoveUsers.tsx:87
|
||||
#: src/view/shell/desktop/Search.tsx:181
|
||||
#: src/view/shell/desktop/Search.tsx:234
|
||||
msgid "Cancel search"
|
||||
msgstr "Annuler la recherche"
|
||||
|
||||
@@ -629,7 +629,7 @@ msgid "Clear all storage data (restart after this)"
|
||||
msgstr "Effacer toutes les données de stockage (redémarrer ensuite)"
|
||||
|
||||
#: src/view/com/util/forms/SearchInput.tsx:74
|
||||
#: src/view/screens/Search/Search.tsx:583
|
||||
#: src/view/screens/Search/Search.tsx:590
|
||||
msgid "Clear search query"
|
||||
msgstr "Effacer la recherche"
|
||||
|
||||
@@ -681,7 +681,7 @@ msgstr "Ferme la visionneuse pour l’image d’en-tête"
|
||||
msgid "Collapses list of users for a given notification"
|
||||
msgstr "Réduit la liste des comptes pour une notification donnée"
|
||||
|
||||
#: src/Navigation.tsx:229
|
||||
#: src/Navigation.tsx:227
|
||||
#: src/view/screens/CommunityGuidelines.tsx:32
|
||||
msgid "Community Guidelines"
|
||||
msgstr "Directives communautaires"
|
||||
@@ -694,12 +694,6 @@ msgstr "Permet d’écrire des messages de {MAX_GRAPHEME_LENGTH} caractères max
|
||||
msgid "Compose reply"
|
||||
msgstr "Rédiger une réponse"
|
||||
|
||||
#: src/view/com/modals/Confirm.tsx:75
|
||||
#: src/view/com/modals/Confirm.tsx:78
|
||||
msgctxt "action"
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmer"
|
||||
|
||||
#: src/components/Prompt.tsx:114
|
||||
#: src/view/com/modals/AppealLabel.tsx:98
|
||||
#: src/view/com/modals/SelfLabel.tsx:154
|
||||
@@ -710,6 +704,12 @@ msgstr "Confirmer"
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmer"
|
||||
|
||||
#: src/view/com/modals/Confirm.tsx:75
|
||||
#: src/view/com/modals/Confirm.tsx:78
|
||||
msgctxt "action"
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmer"
|
||||
|
||||
#: src/view/com/modals/ChangeEmail.tsx:193
|
||||
#: src/view/com/modals/ChangeEmail.tsx:195
|
||||
msgid "Confirm Change"
|
||||
@@ -816,7 +816,7 @@ msgstr "Copier le lien vers le profil"
|
||||
msgid "Copy post text"
|
||||
msgstr "Copier le texte du post"
|
||||
|
||||
#: src/Navigation.tsx:234
|
||||
#: src/Navigation.tsx:232
|
||||
#: src/view/screens/CopyrightPolicy.tsx:29
|
||||
msgid "Copyright Policy"
|
||||
msgstr "Politique sur les droits d’auteur"
|
||||
@@ -829,6 +829,10 @@ msgstr "Impossible de charger le fil d’actu"
|
||||
msgid "Could not load list"
|
||||
msgstr "Impossible de charger la liste"
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:89
|
||||
msgid "Country"
|
||||
msgstr ""
|
||||
|
||||
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
|
||||
#: src/view/com/auth/SplashScreen.tsx:46
|
||||
#: src/view/com/auth/SplashScreen.web.tsx:77
|
||||
@@ -931,7 +935,7 @@ msgstr "Supprimer le post"
|
||||
msgid "Delete this post?"
|
||||
msgstr "Supprimer ce post ?"
|
||||
|
||||
#: src/view/com/util/post-embeds/QuoteEmbed.tsx:66
|
||||
#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
|
||||
msgid "Deleted"
|
||||
msgstr "Supprimé"
|
||||
|
||||
@@ -939,8 +943,8 @@ msgstr "Supprimé"
|
||||
msgid "Deleted post."
|
||||
msgstr "Post supprimé."
|
||||
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:239
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:255
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:237
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:253
|
||||
#: src/view/com/modals/EditProfile.tsx:198
|
||||
#: src/view/com/modals/EditProfile.tsx:210
|
||||
msgid "Description"
|
||||
@@ -1036,19 +1040,19 @@ msgstr "ex. Alice Dupont"
|
||||
msgid "e.g. Artist, dog-lover, and avid reader."
|
||||
msgstr "ex. Artiste, amoureuse des chiens et lectrice passionnée."
|
||||
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:225
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:223
|
||||
msgid "e.g. Great Posters"
|
||||
msgstr "ex. Les meilleurs comptes"
|
||||
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:226
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:224
|
||||
msgid "e.g. Spammers"
|
||||
msgstr "ex. Spammeurs"
|
||||
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:246
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:244
|
||||
msgid "e.g. The posters who never miss."
|
||||
msgstr "ex. Ces comptes qui ne ratent jamais leur coup."
|
||||
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:247
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:245
|
||||
msgid "e.g. Users that repeatedly reply with ads."
|
||||
msgstr "ex. Les comptes qui répondent toujours avec des pubs."
|
||||
|
||||
@@ -1070,11 +1074,11 @@ msgstr "Modifier l’image"
|
||||
msgid "Edit list details"
|
||||
msgstr "Modifier les infos de la liste"
|
||||
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:193
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:192
|
||||
msgid "Edit Moderation List"
|
||||
msgstr "Modifier la liste de modération"
|
||||
|
||||
#: src/Navigation.tsx:244
|
||||
#: src/Navigation.tsx:242
|
||||
#: src/view/screens/Feeds.tsx:371
|
||||
#: src/view/screens/SavedFeeds.tsx:84
|
||||
msgid "Edit My Feeds"
|
||||
@@ -1096,7 +1100,7 @@ msgstr "Modifier le profil"
|
||||
msgid "Edit Saved Feeds"
|
||||
msgstr "Modifier les fils d’actu enregistrés"
|
||||
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:188
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:187
|
||||
msgid "Edit User List"
|
||||
msgstr "Modifier la liste de comptes"
|
||||
|
||||
@@ -1109,8 +1113,8 @@ msgid "Edit your profile description"
|
||||
msgstr "Modifier votre description de profil"
|
||||
|
||||
#: src/view/com/auth/create/Step1.tsx:143
|
||||
#: src/view/com/auth/create/Step2.tsx:90
|
||||
#: src/view/com/auth/create/Step2.tsx:164
|
||||
#: src/view/com/auth/create/Step2.tsx:192
|
||||
#: src/view/com/auth/create/Step2.tsx:266
|
||||
#: src/view/com/auth/login/ForgotPasswordForm.tsx:152
|
||||
#: src/view/com/modals/ChangeEmail.tsx:141
|
||||
#: src/view/com/modals/Waitlist.tsx:88
|
||||
@@ -1204,7 +1208,7 @@ msgstr "Entrez votre nouvel e-mail ci-dessus"
|
||||
msgid "Enter your new email address below."
|
||||
msgstr "Entrez votre nouvelle e-mail ci-dessous."
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:84
|
||||
#: src/view/com/auth/create/Step2.tsx:186
|
||||
msgid "Enter your phone number"
|
||||
msgstr ""
|
||||
|
||||
@@ -1212,7 +1216,7 @@ msgstr ""
|
||||
msgid "Enter your username and password"
|
||||
msgstr "Entrez votre pseudo et votre mot de passe"
|
||||
|
||||
#: src/view/screens/Search/Search.tsx:105
|
||||
#: src/view/screens/Search/Search.tsx:107
|
||||
msgid "Error:"
|
||||
msgstr "Erreur :"
|
||||
|
||||
@@ -1229,7 +1233,7 @@ msgid "Exits image view"
|
||||
msgstr "Sort de la vue de l’image"
|
||||
|
||||
#: src/view/com/modals/ListAddRemoveUsers.tsx:88
|
||||
#: src/view/shell/desktop/Search.tsx:182
|
||||
#: src/view/shell/desktop/Search.tsx:235
|
||||
msgid "Exits inputting search query"
|
||||
msgstr "Sort de la saisie de la recherche"
|
||||
|
||||
@@ -1255,7 +1259,7 @@ msgstr "Média externe"
|
||||
msgid "External media may allow websites to collect information about you and your device. No information is sent or requested until you press the \"play\" button."
|
||||
msgstr "Les médias externes peuvent permettre à des sites web de collecter des informations sur vous et votre appareil. Aucune information n’est envoyée ou demandée tant que vous n’appuyez pas sur le bouton de lecture."
|
||||
|
||||
#: src/Navigation.tsx:260
|
||||
#: src/Navigation.tsx:258
|
||||
#: src/view/screens/PreferencesExternalEmbeds.tsx:52
|
||||
#: src/view/screens/Settings.tsx:623
|
||||
msgid "External Media Preferences"
|
||||
@@ -1283,7 +1287,7 @@ msgstr "Échec de la suppression du post, veuillez réessayer"
|
||||
msgid "Failed to load recommended feeds"
|
||||
msgstr "Échec du chargement des fils d’actu recommandés"
|
||||
|
||||
#: src/Navigation.tsx:194
|
||||
#: src/Navigation.tsx:192
|
||||
msgid "Feed"
|
||||
msgstr "Fil d’actu"
|
||||
|
||||
@@ -1304,7 +1308,7 @@ msgstr "Préférences en matière de fil d’actu"
|
||||
msgid "Feedback"
|
||||
msgstr "Feedback"
|
||||
|
||||
#: src/Navigation.tsx:442
|
||||
#: src/Navigation.tsx:440
|
||||
#: src/view/screens/Feeds.tsx:479
|
||||
#: src/view/screens/Profile.tsx:165
|
||||
#: src/view/shell/bottom-bar/BottomBar.tsx:181
|
||||
@@ -1328,11 +1332,11 @@ msgstr "Les fils d’actu sont des algorithmes personnalisés qui se construisen
|
||||
msgid "Find accounts to follow"
|
||||
msgstr "Trouver des comptes à suivre"
|
||||
|
||||
#: src/view/screens/Search/Search.tsx:427
|
||||
#: src/view/screens/Search/Search.tsx:429
|
||||
msgid "Find users on Bluesky"
|
||||
msgstr "Trouver des comptes sur Bluesky"
|
||||
|
||||
#: src/view/screens/Search/Search.tsx:425
|
||||
#: src/view/screens/Search/Search.tsx:427
|
||||
msgid "Find users with the search tool on the right"
|
||||
msgstr "Trouvez des comptes à l’aide de l’outil de recherche, à droite"
|
||||
|
||||
@@ -1460,6 +1464,11 @@ msgstr "Retour"
|
||||
msgid "Go Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: src/view/screens/Search/Search.tsx:640
|
||||
#: src/view/shell/desktop/Search.tsx:262
|
||||
msgid "Go to @{queryMaybeHandle}"
|
||||
msgstr ""
|
||||
|
||||
#: src/view/com/auth/login/ForgotPasswordForm.tsx:185
|
||||
#: src/view/com/auth/login/LoginForm.tsx:285
|
||||
#: src/view/com/auth/login/SetNewPasswordForm.tsx:165
|
||||
@@ -1536,7 +1545,7 @@ msgstr "Mmm… le serveur de fils d’actu ne répond pas. Veuillez informer la
|
||||
msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
|
||||
msgstr "Hmm, nous n’arrivons pas à trouver ce fil d’actu. Il a peut-être été supprimé."
|
||||
|
||||
#: src/Navigation.tsx:432
|
||||
#: src/Navigation.tsx:430
|
||||
#: src/view/shell/bottom-bar/BottomBar.tsx:137
|
||||
#: src/view/shell/desktop/LeftNav.tsx:306
|
||||
#: src/view/shell/Drawer.tsx:401
|
||||
@@ -1544,7 +1553,7 @@ msgstr "Hmm, nous n’arrivons pas à trouver ce fil d’actu. Il a peut-être
|
||||
msgid "Home"
|
||||
msgstr "Accueil"
|
||||
|
||||
#: src/Navigation.tsx:249
|
||||
#: src/Navigation.tsx:247
|
||||
#: src/view/com/pager/FeedsTabBarMobile.tsx:117
|
||||
#: src/view/screens/PreferencesHomeFeed.tsx:104
|
||||
#: src/view/screens/Settings.tsx:509
|
||||
@@ -1633,7 +1642,7 @@ msgstr "Entrez le nouveau mot de passe"
|
||||
msgid "Input password for account deletion"
|
||||
msgstr "Entrez le mot de passe pour la suppression du compte"
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:92
|
||||
#: src/view/com/auth/create/Step2.tsx:194
|
||||
msgid "Input phone number for SMS verification"
|
||||
msgstr ""
|
||||
|
||||
@@ -1645,7 +1654,7 @@ msgstr "Entrez le mot de passe associé à {identifier}"
|
||||
msgid "Input the username or email address you used at signup"
|
||||
msgstr "Entrez le pseudo ou l’adresse e-mail que vous avez utilisé lors de l’inscription"
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:166
|
||||
#: src/view/com/auth/create/Step2.tsx:268
|
||||
msgid "Input the verification code we have texted to you"
|
||||
msgstr ""
|
||||
|
||||
@@ -1683,7 +1692,7 @@ msgstr "Inviter un ami"
|
||||
msgid "Invite code"
|
||||
msgstr "Code d’invitation"
|
||||
|
||||
#: src/view/com/auth/create/state.ts:193
|
||||
#: src/view/com/auth/create/state.ts:199
|
||||
msgid "Invite code not accepted. Check that you input it correctly and try again."
|
||||
msgstr "Code d’invitation refusé. Vérifiez que vous l’avez saisi correctement et réessayez."
|
||||
|
||||
@@ -1724,7 +1733,7 @@ msgstr "Sélection de la langue"
|
||||
msgid "Language settings"
|
||||
msgstr "Préférences de langue"
|
||||
|
||||
#: src/Navigation.tsx:141
|
||||
#: src/Navigation.tsx:139
|
||||
#: src/view/screens/LanguageSettings.tsx:89
|
||||
msgid "Language Settings"
|
||||
msgstr "Paramètres linguistiques"
|
||||
@@ -1793,7 +1802,7 @@ msgstr "Liker"
|
||||
msgid "Like this feed"
|
||||
msgstr "Liker ce fil d’actu"
|
||||
|
||||
#: src/Navigation.tsx:199
|
||||
#: src/Navigation.tsx:197
|
||||
#: src/view/screens/PostLikedBy.tsx:27
|
||||
#: src/view/screens/ProfileFeedLikedBy.tsx:27
|
||||
msgid "Liked by"
|
||||
@@ -1823,11 +1832,11 @@ msgstr "Likes"
|
||||
msgid "Likes on this post"
|
||||
msgstr "Likes sur ce post"
|
||||
|
||||
#: src/Navigation.tsx:168
|
||||
#: src/Navigation.tsx:166
|
||||
msgid "List"
|
||||
msgstr "Liste"
|
||||
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:205
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:203
|
||||
msgid "List Avatar"
|
||||
msgstr "Liste des avatars"
|
||||
|
||||
@@ -1847,7 +1856,7 @@ msgstr "Liste supprimée"
|
||||
msgid "List muted"
|
||||
msgstr "Liste masquée"
|
||||
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:218
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:216
|
||||
msgid "List Name"
|
||||
msgstr "Nom de liste"
|
||||
|
||||
@@ -1859,7 +1868,7 @@ msgstr "Liste débloquée"
|
||||
msgid "List unmuted"
|
||||
msgstr "Liste démasquée"
|
||||
|
||||
#: src/Navigation.tsx:111
|
||||
#: src/Navigation.tsx:109
|
||||
#: src/view/screens/Profile.tsx:166
|
||||
#: src/view/shell/desktop/LeftNav.tsx:379
|
||||
#: src/view/shell/Drawer.tsx:495
|
||||
@@ -1891,7 +1900,7 @@ msgstr "Chargement…"
|
||||
msgid "Local dev server"
|
||||
msgstr "Serveur de dév local"
|
||||
|
||||
#: src/Navigation.tsx:209
|
||||
#: src/Navigation.tsx:207
|
||||
msgid "Log"
|
||||
msgstr "Journaux"
|
||||
|
||||
@@ -1920,7 +1929,7 @@ msgid "Mentioned users"
|
||||
msgstr "Comptes mentionnés"
|
||||
|
||||
#: src/view/com/util/ViewHeader.tsx:81
|
||||
#: src/view/screens/Search/Search.tsx:537
|
||||
#: src/view/screens/Search/Search.tsx:544
|
||||
msgid "Menu"
|
||||
msgstr "Menu"
|
||||
|
||||
@@ -1928,7 +1937,7 @@ msgstr "Menu"
|
||||
msgid "Message from server: {0}"
|
||||
msgstr "Message du serveur : {0}"
|
||||
|
||||
#: src/Navigation.tsx:116
|
||||
#: src/Navigation.tsx:114
|
||||
#: src/view/screens/Moderation.tsx:64
|
||||
#: src/view/screens/Settings.tsx:591
|
||||
#: src/view/shell/desktop/LeftNav.tsx:397
|
||||
@@ -1964,7 +1973,7 @@ msgstr "Liste de modération mise à jour"
|
||||
msgid "Moderation lists"
|
||||
msgstr "Listes de modération"
|
||||
|
||||
#: src/Navigation.tsx:121
|
||||
#: src/Navigation.tsx:119
|
||||
#: src/view/screens/ModerationModlists.tsx:58
|
||||
msgid "Moderation Lists"
|
||||
msgstr "Listes de modération"
|
||||
@@ -2027,7 +2036,7 @@ msgstr ""
|
||||
msgid "Muted accounts"
|
||||
msgstr "Comptes masqués"
|
||||
|
||||
#: src/Navigation.tsx:126
|
||||
#: src/Navigation.tsx:124
|
||||
#: src/view/screens/ModerationMutedAccounts.tsx:107
|
||||
msgid "Muted Accounts"
|
||||
msgstr "Comptes masqués"
|
||||
@@ -2057,7 +2066,7 @@ msgid "My Saved Feeds"
|
||||
msgstr "Mes fils d’actu enregistrés"
|
||||
|
||||
#: src/view/com/modals/AddAppPasswords.tsx:181
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:232
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:230
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
@@ -2094,7 +2103,7 @@ msgstr "Nouveau"
|
||||
msgid "New"
|
||||
msgstr "Nouveau"
|
||||
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:195
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:194
|
||||
msgid "New Moderation List"
|
||||
msgstr "Nouvelle liste de modération"
|
||||
|
||||
@@ -2121,7 +2130,7 @@ msgctxt "action"
|
||||
msgid "New Post"
|
||||
msgstr "Nouveau post"
|
||||
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:190
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:189
|
||||
msgid "New User List"
|
||||
msgstr "Nouvelle liste de comptes"
|
||||
|
||||
@@ -2129,11 +2138,6 @@ msgstr "Nouvelle liste de comptes"
|
||||
msgid "Newest replies first"
|
||||
msgstr "Réponses les plus récentes en premier"
|
||||
|
||||
#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:103
|
||||
msgctxt "action"
|
||||
msgid "Next"
|
||||
msgstr "Suivant"
|
||||
|
||||
#: src/view/com/auth/create/CreateAccount.tsx:155
|
||||
#: src/view/com/auth/login/ForgotPasswordForm.tsx:178
|
||||
#: src/view/com/auth/login/ForgotPasswordForm.tsx:188
|
||||
@@ -2144,6 +2148,11 @@ msgstr "Suivant"
|
||||
msgid "Next"
|
||||
msgstr "Suivant"
|
||||
|
||||
#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:103
|
||||
msgctxt "action"
|
||||
msgid "Next"
|
||||
msgstr "Suivant"
|
||||
|
||||
#: src/view/com/lightbox/Lightbox.web.tsx:142
|
||||
msgid "Next image"
|
||||
msgstr "Image suivante"
|
||||
@@ -2180,10 +2189,8 @@ msgid "No results found for \"{query}\""
|
||||
msgstr "Aucun résultat trouvé pour « {query} »"
|
||||
|
||||
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
|
||||
#: src/view/screens/Search/Search.tsx:270
|
||||
#: src/view/screens/Search/Search.tsx:298
|
||||
#: src/view/screens/Search/Search.tsx:630
|
||||
#: src/view/shell/desktop/Search.tsx:213
|
||||
#: src/view/screens/Search/Search.tsx:272
|
||||
#: src/view/screens/Search/Search.tsx:300
|
||||
msgid "No results found for {query}"
|
||||
msgstr "Aucun résultat trouvé pour {query}"
|
||||
|
||||
@@ -2199,7 +2206,7 @@ msgstr "Personne"
|
||||
msgid "Not Applicable."
|
||||
msgstr "Sans objet."
|
||||
|
||||
#: src/Navigation.tsx:106
|
||||
#: src/Navigation.tsx:104
|
||||
msgid "Not Found"
|
||||
msgstr "Introuvable"
|
||||
|
||||
@@ -2212,7 +2219,7 @@ msgstr "Pas maintenant"
|
||||
msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites."
|
||||
msgstr "Remarque : Bluesky est un réseau ouvert et public. Ce paramètre limite uniquement la visibilité de votre contenu sur l’application et le site Web de Bluesky, et d’autres applications peuvent ne pas respecter ce paramètre. Votre contenu peut toujours être montré aux personnes non connectées par d’autres applications et sites Web."
|
||||
|
||||
#: src/Navigation.tsx:447
|
||||
#: src/Navigation.tsx:445
|
||||
#: src/view/screens/Notifications.tsx:113
|
||||
#: src/view/screens/Notifications.tsx:137
|
||||
#: src/view/shell/bottom-bar/BottomBar.tsx:205
|
||||
@@ -2226,7 +2233,7 @@ msgstr "Notifications"
|
||||
msgid "Nudity"
|
||||
msgstr "Nudité"
|
||||
|
||||
#: src/view/com/util/ErrorBoundary.tsx:34
|
||||
#: src/view/com/util/ErrorBoundary.tsx:35
|
||||
msgid "Oh no!"
|
||||
msgstr "Oh non !"
|
||||
|
||||
@@ -2412,11 +2419,11 @@ msgstr "Mise à jour du mot de passe"
|
||||
msgid "Password updated!"
|
||||
msgstr "Mot de passe mis à jour !"
|
||||
|
||||
#: src/Navigation.tsx:162
|
||||
#: src/Navigation.tsx:160
|
||||
msgid "People followed by @{0}"
|
||||
msgstr "Personnes suivies par @{0}"
|
||||
|
||||
#: src/Navigation.tsx:155
|
||||
#: src/Navigation.tsx:153
|
||||
msgid "People following @{0}"
|
||||
msgstr "Personnes qui suivent @{0}"
|
||||
|
||||
@@ -2428,7 +2435,7 @@ msgstr "Permission d’accès à la pellicule requise."
|
||||
msgid "Permission to access camera roll was denied. Please enable it in your system settings."
|
||||
msgstr "Permission d’accès à la pellicule refusée. Veuillez l’activer dans les paramètres de votre système."
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:79
|
||||
#: src/view/com/auth/create/Step2.tsx:181
|
||||
msgid "Phone number"
|
||||
msgstr ""
|
||||
|
||||
@@ -2458,11 +2465,11 @@ msgstr "Lire la vidéo"
|
||||
msgid "Plays the GIF"
|
||||
msgstr "Lit le GIF"
|
||||
|
||||
#: src/view/com/auth/create/state.ts:171
|
||||
#: src/view/com/auth/create/state.ts:177
|
||||
msgid "Please choose your handle."
|
||||
msgstr "Veuillez choisir votre pseudo."
|
||||
|
||||
#: src/view/com/auth/create/state.ts:154
|
||||
#: src/view/com/auth/create/state.ts:160
|
||||
msgid "Please choose your password."
|
||||
msgstr "Veuillez choisir votre mot de passe."
|
||||
|
||||
@@ -2474,7 +2481,7 @@ msgstr "Veuillez confirmer votre e-mail avant de le modifier. Ceci est temporair
|
||||
msgid "Please enter a name for your app password. All spaces is not allowed."
|
||||
msgstr "Veuillez entrer un nom pour votre mot de passe d’application. Les espaces ne sont pas autorisés."
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:102
|
||||
#: src/view/com/auth/create/Step2.tsx:204
|
||||
msgid "Please enter a phone number that can receive SMS text messages."
|
||||
msgstr ""
|
||||
|
||||
@@ -2482,15 +2489,19 @@ msgstr ""
|
||||
msgid "Please enter a unique name for this App Password or use our randomly generated one."
|
||||
msgstr "Veuillez saisir un nom unique pour le mot de passe de l’application ou utiliser celui que nous avons généré de manière aléatoire."
|
||||
|
||||
#: src/view/com/auth/create/state.ts:164
|
||||
#: src/view/com/auth/create/state.ts:170
|
||||
msgid "Please enter the code you received by SMS."
|
||||
msgstr ""
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:177
|
||||
msgid "Please enter the verification code sent to"
|
||||
#~ msgid "Please enter the verification code sent to"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:279
|
||||
msgid "Please enter the verification code sent to {phoneNumberFormatted}."
|
||||
msgstr ""
|
||||
|
||||
#: src/view/com/auth/create/state.ts:140
|
||||
#: src/view/com/auth/create/state.ts:146
|
||||
msgid "Please enter your email."
|
||||
msgstr "Veuillez entrer votre e-mail."
|
||||
|
||||
@@ -2531,9 +2542,9 @@ msgstr "Post"
|
||||
msgid "Post by {0}"
|
||||
msgstr "Post de {0}"
|
||||
|
||||
#: src/Navigation.tsx:174
|
||||
#: src/Navigation.tsx:181
|
||||
#: src/Navigation.tsx:188
|
||||
#: src/Navigation.tsx:172
|
||||
#: src/Navigation.tsx:179
|
||||
#: src/Navigation.tsx:186
|
||||
msgid "Post by @{0}"
|
||||
msgstr "Post de @{0}"
|
||||
|
||||
@@ -2586,7 +2597,7 @@ msgstr "Définissez des priorités de vos suivis"
|
||||
msgid "Privacy"
|
||||
msgstr "Vie privée"
|
||||
|
||||
#: src/Navigation.tsx:219
|
||||
#: src/Navigation.tsx:217
|
||||
#: src/view/screens/PrivacyPolicy.tsx:29
|
||||
#: src/view/screens/Settings.tsx:824
|
||||
#: src/view/shell/Drawer.tsx:265
|
||||
@@ -2808,7 +2819,7 @@ msgstr "Reposts de ce post"
|
||||
msgid "Request Change"
|
||||
msgstr "Demande de modification"
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:115
|
||||
#: src/view/com/auth/create/Step2.tsx:217
|
||||
msgid "Request code"
|
||||
msgstr ""
|
||||
|
||||
@@ -2864,7 +2875,7 @@ msgstr "Réessaye la dernière action, qui a échoué"
|
||||
|
||||
#: src/view/com/auth/create/CreateAccount.tsx:164
|
||||
#: src/view/com/auth/create/CreateAccount.tsx:168
|
||||
#: src/view/com/auth/create/Step2.tsx:150
|
||||
#: src/view/com/auth/create/Step2.tsx:252
|
||||
#: src/view/com/auth/login/LoginForm.tsx:265
|
||||
#: src/view/com/auth/login/LoginForm.tsx:268
|
||||
#: src/view/com/util/error/ErrorMessage.tsx:55
|
||||
@@ -2872,7 +2883,7 @@ msgstr "Réessaye la dernière action, qui a échoué"
|
||||
msgid "Retry"
|
||||
msgstr "Réessayer"
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:143
|
||||
#: src/view/com/auth/create/Step2.tsx:245
|
||||
msgid "Retry."
|
||||
msgstr ""
|
||||
|
||||
@@ -2884,8 +2895,8 @@ msgstr "Retourne à la page précédente"
|
||||
msgid "SANDBOX. Posts and accounts are not permanent."
|
||||
msgstr "SANDBOX. Les posts et les comptes ne sont pas permanents."
|
||||
|
||||
#: src/view/com/lightbox/Lightbox.tsx:125
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:278
|
||||
#: src/view/com/lightbox/Lightbox.tsx:129
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:276
|
||||
msgctxt "action"
|
||||
msgid "Save"
|
||||
msgstr "Enregistrer"
|
||||
@@ -2893,7 +2904,7 @@ msgstr "Enregistrer"
|
||||
#: src/view/com/modals/BirthDateSettings.tsx:94
|
||||
#: src/view/com/modals/BirthDateSettings.tsx:97
|
||||
#: src/view/com/modals/ChangeHandle.tsx:173
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:270
|
||||
#: src/view/com/modals/CreateOrEditList.tsx:268
|
||||
#: src/view/com/modals/EditProfile.tsx:224
|
||||
#: src/view/screens/ProfileFeed.tsx:354
|
||||
msgid "Save"
|
||||
@@ -2931,23 +2942,28 @@ msgstr "Enregistre le changement de pseudo en {handle}"
|
||||
msgid "Scroll to top"
|
||||
msgstr "Remonter en haut"
|
||||
|
||||
#: src/Navigation.tsx:437
|
||||
#: src/Navigation.tsx:435
|
||||
#: src/view/com/auth/LoggedOut.tsx:122
|
||||
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
|
||||
#: src/view/com/util/forms/SearchInput.tsx:53
|
||||
#: src/view/com/util/forms/SearchInput.tsx:65
|
||||
#: src/view/screens/Search/Search.tsx:406
|
||||
#: src/view/screens/Search/Search.tsx:559
|
||||
#: src/view/screens/Search/Search.tsx:572
|
||||
#: src/view/screens/Search/Search.tsx:408
|
||||
#: src/view/screens/Search/Search.tsx:566
|
||||
#: src/view/screens/Search/Search.tsx:579
|
||||
#: src/view/shell/bottom-bar/BottomBar.tsx:159
|
||||
#: src/view/shell/desktop/LeftNav.tsx:324
|
||||
#: src/view/shell/desktop/Search.tsx:161
|
||||
#: src/view/shell/desktop/Search.tsx:170
|
||||
#: src/view/shell/desktop/Search.tsx:214
|
||||
#: src/view/shell/desktop/Search.tsx:223
|
||||
#: src/view/shell/Drawer.tsx:365
|
||||
#: src/view/shell/Drawer.tsx:366
|
||||
msgid "Search"
|
||||
msgstr "Recherche"
|
||||
|
||||
#: src/view/screens/Search/Search.tsx:628
|
||||
#: src/view/shell/desktop/Search.tsx:255
|
||||
msgid "Search for \"{query}\""
|
||||
msgstr ""
|
||||
|
||||
#: src/view/com/auth/LoggedOut.tsx:104
|
||||
#: src/view/com/auth/LoggedOut.tsx:105
|
||||
#: src/view/com/modals/ListAddRemoveUsers.tsx:70
|
||||
@@ -2995,6 +3011,10 @@ msgstr "Sélectionnez les langues que vous souhaitez voir figurer dans les fils
|
||||
msgid "Select your app language for the default text to display in the app"
|
||||
msgstr "Sélectionnez la langue de votre application à afficher par défaut"
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:153
|
||||
msgid "Select your phone's country"
|
||||
msgstr ""
|
||||
|
||||
#: src/view/screens/LanguageSettings.tsx:190
|
||||
msgid "Select your preferred language for translations in your feed."
|
||||
msgstr "Sélectionnez votre langue préférée pour traduire votre fils d’actu."
|
||||
@@ -3097,7 +3117,7 @@ msgstr "Définit l’hébergeur pour la réinitialisation du mot de passe"
|
||||
msgid "Sets server for the Bluesky client"
|
||||
msgstr "Définit le serveur pour le client Bluesky"
|
||||
|
||||
#: src/Navigation.tsx:136
|
||||
#: src/Navigation.tsx:134
|
||||
#: src/view/screens/Settings.tsx:294
|
||||
#: src/view/shell/desktop/LeftNav.tsx:433
|
||||
#: src/view/shell/Drawer.tsx:570
|
||||
@@ -3109,7 +3129,7 @@ msgstr "Paramètres"
|
||||
msgid "Sexual activity or erotic nudity."
|
||||
msgstr "Activité sexuelle ou nudité érotique."
|
||||
|
||||
#: src/view/com/lightbox/Lightbox.tsx:134
|
||||
#: src/view/com/lightbox/Lightbox.tsx:138
|
||||
msgctxt "action"
|
||||
msgid "Share"
|
||||
msgstr "Partager"
|
||||
@@ -3270,7 +3290,7 @@ msgstr "Déconnecte {0} de Bluesky"
|
||||
msgid "Skip"
|
||||
msgstr "Ignorer"
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:70
|
||||
#: src/view/com/auth/create/Step2.tsx:80
|
||||
msgid "SMS verification"
|
||||
msgstr ""
|
||||
|
||||
@@ -3318,7 +3338,7 @@ msgstr ""
|
||||
msgid "Storage cleared, you need to restart the app now."
|
||||
msgstr "Stockage effacé, vous devez redémarrer l’application maintenant."
|
||||
|
||||
#: src/Navigation.tsx:204
|
||||
#: src/Navigation.tsx:202
|
||||
#: src/view/screens/Settings.tsx:740
|
||||
msgid "Storybook"
|
||||
msgstr "Historique"
|
||||
@@ -3339,7 +3359,7 @@ msgstr "S’abonner à cette liste"
|
||||
#~ msgid "Subscribed"
|
||||
#~ msgstr "Abonné·e"
|
||||
|
||||
#: src/view/screens/Search/Search.tsx:362
|
||||
#: src/view/screens/Search/Search.tsx:364
|
||||
msgid "Suggested Follows"
|
||||
msgstr "Suivis suggérés"
|
||||
|
||||
@@ -3351,7 +3371,7 @@ msgstr "Suggérés pour vous"
|
||||
msgid "Suggestive"
|
||||
msgstr "Suggestif"
|
||||
|
||||
#: src/Navigation.tsx:214
|
||||
#: src/Navigation.tsx:212
|
||||
#: src/view/screens/Support.tsx:30
|
||||
#: src/view/screens/Support.tsx:33
|
||||
msgid "Support"
|
||||
@@ -3395,7 +3415,7 @@ msgstr "Tapper pour voir en entier"
|
||||
msgid "Terms"
|
||||
msgstr "Conditions générales"
|
||||
|
||||
#: src/Navigation.tsx:224
|
||||
#: src/Navigation.tsx:222
|
||||
#: src/view/screens/Settings.tsx:818
|
||||
#: src/view/screens/TermsOfService.tsx:29
|
||||
#: src/view/shell/Drawer.tsx:259
|
||||
@@ -3504,14 +3524,18 @@ msgstr "Il y a eu un problème ! {0}"
|
||||
msgid "There was an issue. Please check your internet connection and try again."
|
||||
msgstr "Il y a eu un problème. Veuillez vérifier votre connexion Internet et réessayez."
|
||||
|
||||
#: src/view/com/util/ErrorBoundary.tsx:35
|
||||
#: src/view/com/util/ErrorBoundary.tsx:36
|
||||
msgid "There was an unexpected issue in the application. Please let us know if this happened to you!"
|
||||
msgstr "Un problème inattendu s’est produit dans l’application. N’hésitez pas à nous faire savoir si cela vous est arrivé !"
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:47
|
||||
msgid "There's something wrong with this number. Please include your country and/or area code!"
|
||||
#: src/view/com/auth/create/Step2.tsx:53
|
||||
msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
|
||||
msgstr ""
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:47
|
||||
#~ msgid "There's something wrong with this number. Please include your country and/or area code!"
|
||||
#~ msgstr ""
|
||||
|
||||
#: src/view/com/util/moderation/ScreenHider.tsx:88
|
||||
msgid "This {screenDescription} has been flagged:"
|
||||
msgstr "Ce {screenDescription} a été signalé :"
|
||||
@@ -3603,7 +3627,7 @@ msgstr "Préférences des fils de discussion"
|
||||
msgid "Threaded Mode"
|
||||
msgstr "Mode arborescent"
|
||||
|
||||
#: src/Navigation.tsx:254
|
||||
#: src/Navigation.tsx:252
|
||||
msgid "Threads Preferences"
|
||||
msgstr "Préférences de fils de discussion"
|
||||
|
||||
@@ -3641,13 +3665,13 @@ msgstr "Réafficher cette liste"
|
||||
msgid "Unable to contact your service. Please check your Internet connection."
|
||||
msgstr "Impossible de contacter votre service. Veuillez vérifier votre connexion Internet."
|
||||
|
||||
#: src/view/com/profile/ProfileHeader.tsx:475
|
||||
msgctxt "action"
|
||||
#: src/view/com/profile/ProfileHeader.tsx:472
|
||||
#: src/view/screens/ProfileList.tsx:568
|
||||
msgid "Unblock"
|
||||
msgstr "Débloquer"
|
||||
|
||||
#: src/view/com/profile/ProfileHeader.tsx:472
|
||||
#: src/view/screens/ProfileList.tsx:568
|
||||
#: src/view/com/profile/ProfileHeader.tsx:475
|
||||
msgctxt "action"
|
||||
msgid "Unblock"
|
||||
msgstr "Débloquer"
|
||||
|
||||
@@ -3672,7 +3696,7 @@ msgstr "Se désabonner"
|
||||
msgid "Unfollow {0}"
|
||||
msgstr "Se désabonner de {0}"
|
||||
|
||||
#: src/view/com/auth/create/state.ts:289
|
||||
#: src/view/com/auth/create/state.ts:298
|
||||
msgid "Unfortunately, you do not meet the requirements to create an account."
|
||||
msgstr "Malheureusement, vous ne remplissez pas les conditions requises pour créer un compte."
|
||||
|
||||
@@ -3811,7 +3835,7 @@ msgstr "comptes suivis par <0/>"
|
||||
msgid "Users in \"{0}\""
|
||||
msgstr "Comptes dans « {0} »"
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:139
|
||||
#: src/view/com/auth/create/Step2.tsx:241
|
||||
msgid "Verification code"
|
||||
msgstr ""
|
||||
|
||||
@@ -3880,7 +3904,7 @@ msgstr "Nous sommes ravis de vous accueillir !"
|
||||
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
|
||||
msgstr "Nous sommes désolés, mais nous n’avons pas pu charger cette liste. Si cela persiste, veuillez contacter l’origine de la liste, @{handleOrDid}."
|
||||
|
||||
#: src/view/screens/Search/Search.tsx:243
|
||||
#: src/view/screens/Search/Search.tsx:245
|
||||
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
|
||||
msgstr "Nous sommes désolés, mais votre recherche a été annulée. Veuillez réessayer dans quelques minutes."
|
||||
|
||||
@@ -3927,7 +3951,7 @@ msgstr "Rédiger un post"
|
||||
msgid "Write your reply"
|
||||
msgstr "Rédigez votre réponse"
|
||||
|
||||
#: src/view/com/auth/create/Step2.tsx:158
|
||||
#: src/view/com/auth/create/Step2.tsx:260
|
||||
msgid "XXXXXX"
|
||||
msgstr ""
|
||||
|
||||
@@ -4040,7 +4064,7 @@ msgstr "Votre date de naissance"
|
||||
msgid "Your choice will be saved, but can be changed later in settings."
|
||||
msgstr ""
|
||||
|
||||
#: src/view/com/auth/create/state.ts:147
|
||||
#: src/view/com/auth/create/state.ts:153
|
||||
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
|
||||
msgid "Your email appears to be invalid."
|
||||
msgstr "Votre e-mail semble être invalide."
|
||||
|
||||
+273
-174
File diff suppressed because it is too large
Load Diff
+273
-174
File diff suppressed because it is too large
Load Diff
+273
-174
File diff suppressed because it is too large
Load Diff
+273
-174
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+273
-174
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
import React from 'react'
|
||||
import {AppBskyEmbedRecord} from '@atproto/api'
|
||||
import {AppBskyEmbedRecord, AppBskyRichtextFacet} from '@atproto/api'
|
||||
import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback'
|
||||
|
||||
export interface ComposerOptsPostRef {
|
||||
@@ -17,6 +17,7 @@ export interface ComposerOptsQuote {
|
||||
uri: string
|
||||
cid: string
|
||||
text: string
|
||||
facets?: AppBskyRichtextFacet.Main[]
|
||||
indexedAt: string
|
||||
author: {
|
||||
did: string
|
||||
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
TouchableWithoutFeedback,
|
||||
View,
|
||||
} from 'react-native'
|
||||
import RNPickerSelect from 'react-native-picker-select'
|
||||
import {
|
||||
CreateAccountState,
|
||||
CreateAccountDispatch,
|
||||
@@ -17,11 +18,16 @@ import {usePalette} from 'lib/hooks/usePalette'
|
||||
import {TextInput} from '../util/TextInput'
|
||||
import {Button} from '../../util/forms/Button'
|
||||
import {ErrorMessage} from 'view/com/util/error/ErrorMessage'
|
||||
import {isWeb} from 'platform/detection'
|
||||
import {isAndroid, isWeb} from 'platform/detection'
|
||||
import {Trans, msg} from '@lingui/macro'
|
||||
import {useLingui} from '@lingui/react'
|
||||
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
|
||||
import parsePhoneNumber from 'libphonenumber-js'
|
||||
import {COUNTRY_CODES} from '#/lib/country-codes'
|
||||
import {
|
||||
FontAwesomeIcon,
|
||||
FontAwesomeIconStyle,
|
||||
} from '@fortawesome/react-native-fontawesome'
|
||||
|
||||
export function Step2({
|
||||
uiState,
|
||||
@@ -37,14 +43,14 @@ export function Step2({
|
||||
const onPressRequest = React.useCallback(() => {
|
||||
if (
|
||||
uiState.verificationPhone.length >= 9 &&
|
||||
parsePhoneNumber(uiState.verificationPhone, 'US')
|
||||
parsePhoneNumber(uiState.verificationPhone, uiState.phoneCountry)
|
||||
) {
|
||||
requestVerificationCode({uiState, uiDispatch, _})
|
||||
} else {
|
||||
uiDispatch({
|
||||
type: 'set-error',
|
||||
value: _(
|
||||
msg`There's something wrong with this number. Please include your country and/or area code!`,
|
||||
msg`There's something wrong with this number. Please choose your country and enter your full phone number!`,
|
||||
),
|
||||
})
|
||||
}
|
||||
@@ -59,10 +65,14 @@ export function Step2({
|
||||
uiState.hasRequestedVerificationCode
|
||||
? parsePhoneNumber(
|
||||
uiState.verificationPhone,
|
||||
'US',
|
||||
uiState.phoneCountry,
|
||||
)?.formatInternational()
|
||||
: '',
|
||||
[uiState.hasRequestedVerificationCode, uiState.verificationPhone],
|
||||
[
|
||||
uiState.hasRequestedVerificationCode,
|
||||
uiState.verificationPhone,
|
||||
uiState.phoneCountry,
|
||||
],
|
||||
)
|
||||
|
||||
return (
|
||||
@@ -71,6 +81,98 @@ export function Step2({
|
||||
|
||||
{!uiState.hasRequestedVerificationCode ? (
|
||||
<>
|
||||
<View style={s.pb10}>
|
||||
<Text
|
||||
type="md-medium"
|
||||
style={[pal.text, s.mb2]}
|
||||
nativeID="phoneCountry">
|
||||
<Trans>Country</Trans>
|
||||
</Text>
|
||||
<View
|
||||
style={[
|
||||
{position: 'relative'},
|
||||
isAndroid && {
|
||||
borderWidth: 1,
|
||||
borderColor: pal.border.borderColor,
|
||||
borderRadius: 4,
|
||||
},
|
||||
]}>
|
||||
<RNPickerSelect
|
||||
placeholder={{}}
|
||||
value={uiState.phoneCountry}
|
||||
onValueChange={value =>
|
||||
uiDispatch({type: 'set-phone-country', value})
|
||||
}
|
||||
items={COUNTRY_CODES.filter(l => Boolean(l.code2)).map(l => ({
|
||||
label: l.name,
|
||||
value: l.code2,
|
||||
key: l.code2,
|
||||
}))}
|
||||
style={{
|
||||
inputAndroid: {
|
||||
backgroundColor: pal.view.backgroundColor,
|
||||
color: pal.text.color,
|
||||
fontSize: 21,
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: '500',
|
||||
paddingHorizontal: 14,
|
||||
paddingVertical: 8,
|
||||
borderRadius: 4,
|
||||
},
|
||||
inputIOS: {
|
||||
backgroundColor: pal.view.backgroundColor,
|
||||
color: pal.text.color,
|
||||
fontSize: 14,
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: '500',
|
||||
paddingHorizontal: 14,
|
||||
paddingVertical: 8,
|
||||
borderWidth: 1,
|
||||
borderColor: pal.border.borderColor,
|
||||
borderRadius: 4,
|
||||
},
|
||||
inputWeb: {
|
||||
// @ts-ignore web only
|
||||
cursor: 'pointer',
|
||||
'-moz-appearance': 'none',
|
||||
'-webkit-appearance': 'none',
|
||||
appearance: 'none',
|
||||
outline: 0,
|
||||
borderWidth: 1,
|
||||
borderColor: pal.border.borderColor,
|
||||
backgroundColor: pal.view.backgroundColor,
|
||||
color: pal.text.color,
|
||||
fontSize: 14,
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: '500',
|
||||
paddingHorizontal: 14,
|
||||
paddingVertical: 8,
|
||||
borderRadius: 4,
|
||||
},
|
||||
}}
|
||||
accessibilityLabel={_(msg`Select your phone's country`)}
|
||||
accessibilityHint=""
|
||||
accessibilityLabelledBy="phoneCountry"
|
||||
/>
|
||||
<View
|
||||
style={{
|
||||
position: 'absolute',
|
||||
top: 1,
|
||||
right: 1,
|
||||
bottom: 1,
|
||||
width: 40,
|
||||
pointerEvents: 'none',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
}}>
|
||||
<FontAwesomeIcon
|
||||
icon="chevron-down"
|
||||
style={pal.text as FontAwesomeIconStyle}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
|
||||
<View style={s.pb20}>
|
||||
<Text
|
||||
type="md-medium"
|
||||
@@ -174,8 +276,10 @@ export function Step2({
|
||||
autoFocus={true}
|
||||
/>
|
||||
<Text type="sm" style={[pal.textLight, s.mt5]}>
|
||||
<Trans>Please enter the verification code sent to</Trans>{' '}
|
||||
{phoneNumberFormatted}.
|
||||
<Trans>
|
||||
Please enter the verification code sent to{' '}
|
||||
{phoneNumberFormatted}.
|
||||
</Trans>
|
||||
</Text>
|
||||
</View>
|
||||
</>
|
||||
|
||||
@@ -14,7 +14,7 @@ import {cleanError} from '#/lib/strings/errors'
|
||||
import {DispatchContext as OnboardingDispatchContext} from '#/state/shell/onboarding'
|
||||
import {ApiContext as SessionApiContext} from '#/state/session'
|
||||
import {DEFAULT_SERVICE} from '#/lib/constants'
|
||||
import parsePhoneNumber from 'libphonenumber-js'
|
||||
import parsePhoneNumber, {CountryCode} from 'libphonenumber-js'
|
||||
|
||||
export type ServiceDescription = ComAtprotoServerDescribeServer.OutputSchema
|
||||
const DEFAULT_DATE = new Date(Date.now() - 60e3 * 60 * 24 * 365 * 20) // default to 20 years ago
|
||||
@@ -29,6 +29,7 @@ export type CreateAccountAction =
|
||||
| {type: 'set-invite-code'; value: string}
|
||||
| {type: 'set-email'; value: string}
|
||||
| {type: 'set-password'; value: string}
|
||||
| {type: 'set-phone-country'; value: CountryCode}
|
||||
| {type: 'set-verification-phone'; value: string}
|
||||
| {type: 'set-verification-code'; value: string}
|
||||
| {type: 'set-has-requested-verification-code'; value: boolean}
|
||||
@@ -48,6 +49,7 @@ export interface CreateAccountState {
|
||||
inviteCode: string
|
||||
email: string
|
||||
password: string
|
||||
phoneCountry: CountryCode
|
||||
verificationPhone: string
|
||||
verificationCode: string
|
||||
hasRequestedVerificationCode: boolean
|
||||
@@ -75,6 +77,7 @@ export function useCreateAccount() {
|
||||
inviteCode: '',
|
||||
email: '',
|
||||
password: '',
|
||||
phoneCountry: 'US',
|
||||
verificationPhone: '',
|
||||
verificationCode: '',
|
||||
hasRequestedVerificationCode: false,
|
||||
@@ -97,7 +100,10 @@ export async function requestVerificationCode({
|
||||
uiDispatch: CreateAccountDispatch
|
||||
_: I18nContext['_']
|
||||
}) {
|
||||
const phoneNumber = parsePhoneNumber(uiState.verificationPhone, 'US')?.number
|
||||
const phoneNumber = parsePhoneNumber(
|
||||
uiState.verificationPhone,
|
||||
uiState.phoneCountry,
|
||||
)?.number
|
||||
if (!phoneNumber) {
|
||||
return
|
||||
}
|
||||
@@ -261,6 +267,9 @@ function createReducer({_}: {_: I18nContext['_']}) {
|
||||
case 'set-password': {
|
||||
return compute({...state, password: action.value})
|
||||
}
|
||||
case 'set-phone-country': {
|
||||
return compute({...state, phoneCountry: action.value})
|
||||
}
|
||||
case 'set-verification-phone': {
|
||||
return compute({
|
||||
...state,
|
||||
|
||||
@@ -2,6 +2,7 @@ import React, {Component, ErrorInfo, ReactNode} from 'react'
|
||||
import {ErrorScreen} from './error/ErrorScreen'
|
||||
import {CenteredView} from './Views'
|
||||
import {t} from '@lingui/macro'
|
||||
import {logger} from '#/logger'
|
||||
|
||||
interface Props {
|
||||
children?: ReactNode
|
||||
@@ -23,7 +24,7 @@ export class ErrorBoundary extends Component<Props, State> {
|
||||
}
|
||||
|
||||
public componentDidCatch(error: Error, errorInfo: ErrorInfo) {
|
||||
console.error('Uncaught error:', error, errorInfo)
|
||||
logger.error(error, {errorInfo})
|
||||
}
|
||||
|
||||
public render() {
|
||||
|
||||
@@ -94,7 +94,7 @@ export function ContentHider({
|
||||
<ShieldExclamation size={18} style={pal.textLight} />
|
||||
)}
|
||||
</Pressable>
|
||||
<Text type="md" style={pal.text}>
|
||||
<Text type="md" style={[pal.text, {flex: 1}]} numberOfLines={2}>
|
||||
{desc.name}
|
||||
</Text>
|
||||
<View style={styles.showBtn}>
|
||||
@@ -131,7 +131,7 @@ const styles = StyleSheet.create({
|
||||
cover: {
|
||||
flexDirection: 'row',
|
||||
alignItems: 'center',
|
||||
gap: 4,
|
||||
gap: 6,
|
||||
borderRadius: 8,
|
||||
marginTop: 4,
|
||||
paddingVertical: 14,
|
||||
|
||||
@@ -29,22 +29,13 @@ export const ExternalLinkEmbed = ({
|
||||
}, [link.uri, externalEmbedPrefs])
|
||||
|
||||
return (
|
||||
<View style={{flexDirection: 'column'}}>
|
||||
<View style={styles.container}>
|
||||
{link.thumb && !embedPlayerParams ? (
|
||||
<View
|
||||
style={{
|
||||
borderTopLeftRadius: 6,
|
||||
borderTopRightRadius: 6,
|
||||
width: '100%',
|
||||
height: isMobile ? 200 : 300,
|
||||
overflow: 'hidden',
|
||||
}}>
|
||||
<Image
|
||||
style={styles.extImage}
|
||||
source={{uri: link.thumb}}
|
||||
accessibilityIgnoresInvertColors
|
||||
/>
|
||||
</View>
|
||||
<Image
|
||||
style={{aspectRatio: 1.91}}
|
||||
source={{uri: link.thumb}}
|
||||
accessibilityIgnoresInvertColors
|
||||
/>
|
||||
) : undefined}
|
||||
{(embedPlayerParams?.isGif && (
|
||||
<ExternalGifEmbed link={link} params={embedPlayerParams} />
|
||||
@@ -52,12 +43,7 @@ export const ExternalLinkEmbed = ({
|
||||
(embedPlayerParams && (
|
||||
<ExternalPlayer link={link} params={embedPlayerParams} />
|
||||
))}
|
||||
<View
|
||||
style={{
|
||||
paddingHorizontal: isMobile ? 10 : 14,
|
||||
paddingTop: 8,
|
||||
paddingBottom: 10,
|
||||
}}>
|
||||
<View style={[styles.info, {paddingHorizontal: isMobile ? 10 : 14}]}>
|
||||
<Text
|
||||
type="sm"
|
||||
numberOfLines={1}
|
||||
@@ -65,14 +51,14 @@ export const ExternalLinkEmbed = ({
|
||||
{toNiceDomain(link.uri)}
|
||||
</Text>
|
||||
{!embedPlayerParams?.isGif && (
|
||||
<Text type="lg-bold" numberOfLines={4} style={[pal.text]}>
|
||||
<Text type="lg-bold" numberOfLines={3} style={[pal.text]}>
|
||||
{link.title || link.uri}
|
||||
</Text>
|
||||
)}
|
||||
{link.description && !embedPlayerParams?.hideDetails ? (
|
||||
<Text
|
||||
type="md"
|
||||
numberOfLines={4}
|
||||
numberOfLines={link.thumb ? 2 : 4}
|
||||
style={[pal.text, styles.extDescription]}>
|
||||
{link.description}
|
||||
</Text>
|
||||
@@ -83,8 +69,16 @@ export const ExternalLinkEmbed = ({
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
extImage: {
|
||||
flex: 1,
|
||||
container: {
|
||||
flexDirection: 'column',
|
||||
borderRadius: 6,
|
||||
overflow: 'hidden',
|
||||
},
|
||||
info: {
|
||||
width: '100%',
|
||||
bottom: 0,
|
||||
paddingTop: 8,
|
||||
paddingBottom: 10,
|
||||
},
|
||||
extUri: {
|
||||
marginTop: 2,
|
||||
|
||||
@@ -7,6 +7,7 @@ import {
|
||||
AppBskyEmbedRecordWithMedia,
|
||||
ModerationUI,
|
||||
AppBskyEmbedExternal,
|
||||
RichText as RichTextAPI,
|
||||
} from '@atproto/api'
|
||||
import {AtUri} from '@atproto/api'
|
||||
import {PostMeta} from '../PostMeta'
|
||||
@@ -19,6 +20,7 @@ import {PostAlerts} from '../moderation/PostAlerts'
|
||||
import {makeProfileLink} from 'lib/routes/links'
|
||||
import {InfoCircleIcon} from 'lib/icons'
|
||||
import {Trans} from '@lingui/macro'
|
||||
import {RichText} from 'view/com/util/text/RichText'
|
||||
|
||||
export function MaybeQuoteEmbed({
|
||||
embed,
|
||||
@@ -43,6 +45,7 @@ export function MaybeQuoteEmbed({
|
||||
uri: embed.record.uri,
|
||||
indexedAt: embed.record.indexedAt,
|
||||
text: embed.record.value.text,
|
||||
facets: embed.record.value.facets,
|
||||
embeds: embed.record.embeds,
|
||||
}}
|
||||
moderation={moderation}
|
||||
@@ -84,9 +87,12 @@ export function QuoteEmbed({
|
||||
const itemUrip = new AtUri(quote.uri)
|
||||
const itemHref = makeProfileLink(quote.author, 'post', itemUrip.rkey)
|
||||
const itemTitle = `Post by ${quote.author.handle}`
|
||||
const isEmpty = React.useMemo(
|
||||
() => quote.text.trim().length === 0,
|
||||
[quote.text],
|
||||
const richText = React.useMemo(
|
||||
() =>
|
||||
quote.text.trim()
|
||||
? new RichTextAPI({text: quote.text, facets: quote.facets})
|
||||
: undefined,
|
||||
[quote.text, quote.facets],
|
||||
)
|
||||
const embed = React.useMemo(() => {
|
||||
const e = quote.embeds?.[0]
|
||||
@@ -117,10 +123,14 @@ export function QuoteEmbed({
|
||||
{moderation ? (
|
||||
<PostAlerts moderation={moderation} style={styles.alert} />
|
||||
) : null}
|
||||
{!isEmpty ? (
|
||||
<Text type="post-text" style={pal.text} numberOfLines={20}>
|
||||
{quote.text}
|
||||
</Text>
|
||||
{richText ? (
|
||||
<RichText
|
||||
richText={richText}
|
||||
type="post-text"
|
||||
style={pal.text}
|
||||
numberOfLines={20}
|
||||
noLinks
|
||||
/>
|
||||
) : null}
|
||||
{embed && <PostEmbeds embed={embed} moderation={{}} />}
|
||||
</Link>
|
||||
|
||||
@@ -18,6 +18,7 @@ export function RichText({
|
||||
style,
|
||||
numberOfLines,
|
||||
selectable,
|
||||
noLinks,
|
||||
}: {
|
||||
testID?: string
|
||||
type?: TypographyVariant
|
||||
@@ -26,6 +27,7 @@ export function RichText({
|
||||
style?: StyleProp<TextStyle>
|
||||
numberOfLines?: number
|
||||
selectable?: boolean
|
||||
noLinks?: boolean
|
||||
}) {
|
||||
const theme = useTheme()
|
||||
const pal = usePalette('default')
|
||||
@@ -77,7 +79,11 @@ export function RichText({
|
||||
for (const segment of richText.segments()) {
|
||||
const link = segment.link
|
||||
const mention = segment.mention
|
||||
if (mention && AppBskyRichtextFacet.validateMention(mention).success) {
|
||||
if (
|
||||
!noLinks &&
|
||||
mention &&
|
||||
AppBskyRichtextFacet.validateMention(mention).success
|
||||
) {
|
||||
els.push(
|
||||
<TextLink
|
||||
key={key}
|
||||
@@ -90,18 +96,22 @@ export function RichText({
|
||||
/>,
|
||||
)
|
||||
} else if (link && AppBskyRichtextFacet.validateLink(link).success) {
|
||||
els.push(
|
||||
<TextLink
|
||||
key={key}
|
||||
type={type}
|
||||
text={toShortUrl(segment.text)}
|
||||
href={link.uri}
|
||||
style={[style, lineHeightStyle, pal.link, {pointerEvents: 'auto'}]}
|
||||
dataSet={WORD_WRAP}
|
||||
warnOnMismatchingLabel
|
||||
selectable={selectable}
|
||||
/>,
|
||||
)
|
||||
if (noLinks) {
|
||||
els.push(toShortUrl(segment.text))
|
||||
} else {
|
||||
els.push(
|
||||
<TextLink
|
||||
key={key}
|
||||
type={type}
|
||||
text={toShortUrl(segment.text)}
|
||||
href={link.uri}
|
||||
style={[style, lineHeightStyle, pal.link, {pointerEvents: 'auto'}]}
|
||||
dataSet={WORD_WRAP}
|
||||
warnOnMismatchingLabel
|
||||
selectable={selectable}
|
||||
/>,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
els.push(segment.text)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user