add option to keep some entries above the selected entry when scrolling

This commit is contained in:
Athou
2024-09-10 16:22:23 +02:00
parent ba496c1395
commit e119941762
46 changed files with 632 additions and 33 deletions

View File

@@ -166,22 +166,34 @@ export const selectEntry = createAppAsyncThunk(
})
if (arg.scrollToEntry) {
const viewMode = state.user.localSettings.viewMode
const entryIndex = state.entries.entries.indexOf(entry)
const entriesToKeepOnTopWhenScrolling =
viewMode === "expanded" ? 0 : Math.min(state.user.settings?.entriesToKeepOnTopWhenScrolling ?? 0, entryIndex)
const entryToScrollTo = state.entries.entries[entryIndex - entriesToKeepOnTopWhenScrolling]
const entryElement = document.getElementById(Constants.dom.entryId(entry))
if (entryElement) {
const entryElementToScrollTo = document.getElementById(Constants.dom.entryId(entryToScrollTo))
if (entryElement && entryElementToScrollTo) {
const scrollMode = state.user.settings?.scrollMode
const entryEntirelyVisible = Constants.layout.isTopVisible(entryElement) && Constants.layout.isBottomVisible(entryElement)
const entryEntirelyVisible =
Constants.layout.isTopVisible(entryElementToScrollTo) && Constants.layout.isBottomVisible(entryElement)
if (scrollMode === "always" || (scrollMode === "if_needed" && !entryEntirelyVisible)) {
const scrollSpeed = state.user.settings?.scrollSpeed
const margin = viewMode === "detailed" ? 8 : 3
thunkApi.dispatch(entriesSlice.actions.setScrollingToEntry(true))
scrollToEntry(entryElement, scrollSpeed, () => thunkApi.dispatch(entriesSlice.actions.setScrollingToEntry(false)))
scrollToEntry(entryElementToScrollTo, margin, scrollSpeed, () =>
thunkApi.dispatch(entriesSlice.actions.setScrollingToEntry(false))
)
}
}
}
}
)
const scrollToEntry = (entryElement: HTMLElement, scrollSpeed: number | undefined, onScrollEnded: () => void) => {
const scrollToEntry = (entryElement: HTMLElement, margin: number, scrollSpeed: number | undefined, onScrollEnded: () => void) => {
const header = document.getElementById(Constants.dom.headerId)?.getBoundingClientRect()
const offset = (header?.bottom ?? 0) + 3
const offset = (header?.bottom ?? 0) + margin
scrollToWithCallback({
options: {
top: entryElement.offsetTop - offset,

View File

@@ -3,6 +3,7 @@ import { entriesSlice } from "app/entries/slice"
import { redirectSlice } from "app/redirect/slice"
import { serverSlice } from "app/server/slice"
import { treeSlice } from "app/tree/slice"
import type { ViewMode } from "app/types"
import { userSlice } from "app/user/slice"
import { type TypedUseSelectorHook, useDispatch, useSelector } from "react-redux"
@@ -14,7 +15,20 @@ export const reducers = {
user: userSlice.reducer,
}
export const store = configureStore({ reducer: reducers })
export const store = configureStore({
reducer: reducers,
preloadedState: {
user: {
localSettings: {
viewMode: localStorage.getItem("view-mode") as ViewMode,
},
},
},
})
store.subscribe(() => {
const state = store.getState()
localStorage.setItem("view-mode", state.user.localSettings.viewMode)
})
export type RootState = ReturnType<typeof store.getState>
export type AppDispatch = typeof store.dispatch

View File

@@ -243,6 +243,7 @@ export interface Settings {
customJs?: string
scrollSpeed: number
scrollMode: ScrollMode
entriesToKeepOnTopWhenScrolling: number
starIconDisplayMode: IconDisplayMode
externalLinkIconDisplayMode: IconDisplayMode
markAllAsReadConfirmation: boolean

View File

@@ -1,9 +1,10 @@
import { t } from "@lingui/macro"
import { showNotification } from "@mantine/notifications"
import { createSlice, isAnyOf } from "@reduxjs/toolkit"
import type { Settings, UserModel } from "app/types"
import { type PayloadAction, createSlice, isAnyOf } from "@reduxjs/toolkit"
import type { Settings, UserModel, ViewMode } from "app/types"
import {
changeCustomContextMenu,
changeEntriesToKeepOnTopWhenScrolling,
changeExternalLinkIconDisplayMode,
changeLanguage,
changeMarkAllAsReadConfirmation,
@@ -25,16 +26,27 @@ import {
interface UserState {
settings?: Settings
localSettings: {
viewMode: ViewMode
}
profile?: UserModel
tags?: string[]
}
const initialState: UserState = {}
const initialState: UserState = {
localSettings: {
viewMode: "detailed",
},
}
export const userSlice = createSlice({
name: "user",
initialState,
reducers: {},
reducers: {
setViewMode: (state, action: PayloadAction<ViewMode>) => {
state.localSettings.viewMode = action.payload
},
},
extraReducers: builder => {
builder.addCase(reloadSettings.fulfilled, (state, action) => {
state.settings = action.payload
@@ -73,6 +85,10 @@ export const userSlice = createSlice({
if (!state.settings) return
state.settings.scrollMode = action.meta.arg
})
builder.addCase(changeEntriesToKeepOnTopWhenScrolling.pending, (state, action) => {
if (!state.settings) return
state.settings.entriesToKeepOnTopWhenScrolling = action.meta.arg
})
builder.addCase(changeStarIconDisplayMode.pending, (state, action) => {
if (!state.settings) return
state.settings.starIconDisplayMode = action.meta.arg
@@ -112,6 +128,7 @@ export const userSlice = createSlice({
changeShowRead.fulfilled,
changeScrollMarks.fulfilled,
changeScrollMode.fulfilled,
changeEntriesToKeepOnTopWhenScrolling.fulfilled,
changeStarIconDisplayMode.fulfilled,
changeExternalLinkIconDisplayMode.fulfilled,
changeMarkAllAsReadConfirmation.fulfilled,
@@ -130,3 +147,5 @@ export const userSlice = createSlice({
)
},
})
export const { setViewMode } = userSlice.actions

View File

@@ -43,6 +43,14 @@ export const changeScrollMode = createAppAsyncThunk("settings/scrollMode", (scro
if (!settings) return
client.user.saveSettings({ ...settings, scrollMode })
})
export const changeEntriesToKeepOnTopWhenScrolling = createAppAsyncThunk(
"settings/entriesToKeepOnTopWhenScrolling",
(entriesToKeepOnTopWhenScrolling: number, thunkApi) => {
const { settings } = thunkApi.getState().user
if (!settings) return
client.user.saveSettings({ ...settings, entriesToKeepOnTopWhenScrolling })
}
)
export const changeStarIconDisplayMode = createAppAsyncThunk(
"settings/starIconDisplayMode",
(starIconDisplayMode: IconDisplayMode, thunkApi) => {

View File

@@ -20,7 +20,6 @@ import { KeyboardShortcutsHelp } from "components/KeyboardShortcutsHelp"
import { Loader } from "components/Loader"
import { useBrowserExtension } from "hooks/useBrowserExtension"
import { useMousetrap } from "hooks/useMousetrap"
import { useViewMode } from "hooks/useViewMode"
import { useEffect } from "react"
import { useContextMenu } from "react-contexify"
import InfiniteScroll from "react-infinite-scroller"
@@ -38,7 +37,7 @@ export function FeedEntries() {
const scrollingToEntry = useAppSelector(state => state.entries.scrollingToEntry)
const sidebarVisible = useAppSelector(state => state.tree.sidebarVisible)
const customContextMenu = useAppSelector(state => state.user.settings?.customContextMenu)
const { viewMode } = useViewMode()
const viewMode = useAppSelector(state => state.user.localSettings.viewMode)
const dispatch = useAppDispatch()
const { openLinkInBackgroundTab } = useBrowserExtension()

View File

@@ -5,7 +5,6 @@ import type { Entry, ViewMode } from "app/types"
import { FeedEntryCompactHeader } from "components/content/header/FeedEntryCompactHeader"
import { FeedEntryHeader } from "components/content/header/FeedEntryHeader"
import { useMobile } from "hooks/useMobile"
import { useViewMode } from "hooks/useViewMode"
import type React from "react"
import { useSwipeable } from "react-swipeable"
import { tss } from "tss"
@@ -95,7 +94,7 @@ const useStyles = tss
})
export function FeedEntry(props: FeedEntryProps) {
const { viewMode } = useViewMode()
const viewMode = useAppSelector(state => state.user.localSettings.viewMode)
const { classes, cx } = useStyles({
read: props.entry.read,
expanded: props.expanded,

View File

@@ -14,7 +14,7 @@ import { client } from "app/client"
import { redirectToAbout, redirectToAdminUsers, redirectToDonate, redirectToMetrics, redirectToSettings } from "app/redirect/thunks"
import { useAppDispatch, useAppSelector } from "app/store"
import type { ViewMode } from "app/types"
import { useViewMode } from "hooks/useViewMode"
import { setViewMode } from "app/user/slice"
import { type ReactNode, useState } from "react"
import {
TbChartLine,
@@ -92,9 +92,9 @@ const viewModeData: ViewModeControlItem[] = [
export function ProfileMenu(props: ProfileMenuProps) {
const [opened, setOpened] = useState(false)
const { viewMode, setViewMode } = useViewMode()
const profile = useAppSelector(state => state.user.profile)
const admin = useAppSelector(state => state.user.profile?.admin)
const viewMode = useAppSelector(state => state.user.localSettings.viewMode)
const dispatch = useAppDispatch()
const { colorScheme, setColorScheme } = useMantineColorScheme()
@@ -156,7 +156,7 @@ export function ProfileMenu(props: ProfileMenuProps) {
orientation="vertical"
data={viewModeData}
value={viewMode}
onChange={e => setViewMode(e as ViewMode)}
onChange={e => dispatch(setViewMode(e as ViewMode))}
mb="xs"
/>

View File

@@ -1,12 +1,13 @@
import { Trans, msg } from "@lingui/macro"
import { useLingui } from "@lingui/react"
import { Divider, Group, Radio, Select, SimpleGrid, Stack, Switch } from "@mantine/core"
import { Divider, Group, NumberInput, Radio, Select, SimpleGrid, Stack, Switch } from "@mantine/core"
import type { ComboboxData } from "@mantine/core/lib/components/Combobox/Combobox.types"
import { Constants } from "app/constants"
import { useAppDispatch, useAppSelector } from "app/store"
import type { IconDisplayMode, ScrollMode, SharingSettings } from "app/types"
import {
changeCustomContextMenu,
changeEntriesToKeepOnTopWhenScrolling,
changeExternalLinkIconDisplayMode,
changeLanguage,
changeMarkAllAsReadConfirmation,
@@ -29,6 +30,7 @@ export function DisplaySettings() {
const showRead = useAppSelector(state => state.user.settings?.showRead)
const scrollMarks = useAppSelector(state => state.user.settings?.scrollMarks)
const scrollMode = useAppSelector(state => state.user.settings?.scrollMode)
const entriesToKeepOnTop = useAppSelector(state => state.user.settings?.entriesToKeepOnTopWhenScrolling)
const starIconDisplayMode = useAppSelector(state => state.user.settings?.starIconDisplayMode)
const externalLinkIconDisplayMode = useAppSelector(state => state.user.settings?.externalLinkIconDisplayMode)
const markAllAsReadConfirmation = useAppSelector(state => state.user.settings?.markAllAsReadConfirmation)
@@ -145,6 +147,14 @@ export function DisplaySettings() {
</Group>
</Radio.Group>
<NumberInput
label={<Trans>Entries to keep above the selected entry when scrolling</Trans>}
description={<Trans>Only applies to compact, cozy and detailed modes</Trans>}
min={0}
value={entriesToKeepOnTop}
onChange={async value => await dispatch(changeEntriesToKeepOnTopWhenScrolling(+value))}
/>
<Switch
label={<Trans>Scroll smoothly when navigating between entries</Trans>}
checked={scrollSpeed ? scrollSpeed > 0 : false}

View File

@@ -1,7 +0,0 @@
import type { ViewMode } from "app/types"
import useLocalStorage from "use-local-storage"
export function useViewMode() {
const [viewMode, setViewMode] = useLocalStorage<ViewMode>("view-mode", "detailed")
return { viewMode, setViewMode }
}

View File

@@ -321,6 +321,10 @@ msgstr "دخول"
msgid "Enter your current password to change profile settings"
msgstr "أدخل كلمة المرور الحالية لتغيير إعدادات ملف التعريف"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "اوووه!"

View File

@@ -321,6 +321,10 @@ msgstr "Entra"
msgid "Enter your current password to change profile settings"
msgstr "introduïu la vostra contrasenya actual per canviar la configuració del perfil"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr "Al mòbil, mostra els botons d'acció a la part inferior de la pantalla"
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Vaja!"

View File

@@ -321,6 +321,10 @@ msgstr "Vstupte"
msgid "Enter your current password to change profile settings"
msgstr "Zadejte své aktuální heslo pro změnu nastavení profilu"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Jejda!"

View File

@@ -321,6 +321,10 @@ msgstr "Ewch i mewn"
msgid "Enter your current password to change profile settings"
msgstr "Rhowch eich cyfrinair presennol i newid gosodiadau proffil"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Wps!"

View File

@@ -321,6 +321,10 @@ msgstr ""
msgid "Enter your current password to change profile settings"
msgstr "Indtast din nuværende adgangskode for at ændre profilindstillinger"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Hovsa!"

View File

@@ -321,6 +321,10 @@ msgstr "Eintreten"
msgid "Enter your current password to change profile settings"
msgstr "Geben Sie Ihr aktuelles Passwort ein, um die Profileinstellungen zu ändern"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr "Auf mobilen Geräten die Aktion-Buttons am unteren Ende des Bildschirms anzeigen"
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Ups!"

View File

@@ -321,6 +321,10 @@ msgstr "Enter"
msgid "Enter your current password to change profile settings"
msgstr "Enter your current password to change profile settings"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr "Entries to keep above the selected entry when scrolling"
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr "Entry headers"
@@ -608,6 +612,10 @@ msgstr "On mobile"
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr "On mobile, show action buttons at the bottom of the screen"
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr "Only applies to compact, cozy and detailed modes"
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Oops!"

View File

@@ -321,6 +321,10 @@ msgstr "Entrar"
msgid "Enter your current password to change profile settings"
msgstr "Ingrese su contraseña actual para cambiar la configuración del perfil"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "¡Ups!"

View File

@@ -321,6 +321,10 @@ msgstr "وارد شوید"
msgid "Enter your current password to change profile settings"
msgstr "رمز عبور فعلی خود را برای تغییر تنظیمات نمایه وارد کنید"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "اوه!"

View File

@@ -321,6 +321,10 @@ msgstr ""
msgid "Enter your current password to change profile settings"
msgstr "Anna nykyinen salasanasi muuttaaksesi profiiliasetuksia"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Hups!"

View File

@@ -321,6 +321,10 @@ msgstr "Entrer"
msgid "Enter your current password to change profile settings"
msgstr "Entrez votre mot de passe actuel pour changer les paramètres du profil"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr "En-têtes de l'entrée"
@@ -608,6 +612,10 @@ msgstr "Version mobile"
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr "Sur mobile, afficher les boutons d'action en bas de l'écran"
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Oups !"

View File

@@ -321,6 +321,10 @@ msgstr "Entra"
msgid "Enter your current password to change profile settings"
msgstr "Introduce o teu contrasinal actual para cambiar a configuración do perfil"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Vaia!"

View File

@@ -321,6 +321,10 @@ msgstr ""
msgid "Enter your current password to change profile settings"
msgstr "Adja meg jelenlegi jelszavát a profilbeállítások módosításához"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Hoppá!"

View File

@@ -321,6 +321,10 @@ msgstr "Masuk"
msgid "Enter your current password to change profile settings"
msgstr "Masukkan kata sandi Anda saat ini untuk mengubah pengaturan profil"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Ups!"

View File

@@ -321,6 +321,10 @@ msgstr "Invio"
msgid "Enter your current password to change profile settings"
msgstr "Inserisci la tua password attuale per modificare le impostazioni del profilo"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Ops!"

View File

@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: \n"
"Last-Translator: https://github.com/dai \n"
"Last-Translator: https://github.com/dai\n"
"Language-Team: \n"
"Plural-Forms: \n"
@@ -29,7 +29,6 @@ msgstr "<0>アカウントをお持ちですか?</0><1>ログインしてくだ
msgid "<0>Hey,</0><1>I'm Jérémie from Belgium and I've been working on CommaFeed in my free time for over 10 years now. Thanks for taking an interest in helping me continue supporting CommaFeed.</1>"
msgstr "<0>こんにちは、</0><1>私はベルギーのジェレミーです。私はこれまで 10 年以上、CommaFeed のオープンソースプロジェクトを無料で開発してきました。あなたの関心に感謝します。</1>"
#: src/pages/auth/LoginPage.tsx
msgid "<0>Need an account?</0><1>Sign up!</1>"
msgstr "<0>アカウントが必要ですか?</0><1>サインアップ!</1>"
@@ -322,6 +321,10 @@ msgstr "入力"
msgid "Enter your current password to change profile settings"
msgstr "プロファイル設定を変更するには、現在のパスワードを入力してください"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr "エントリーヘッダー"
@@ -609,6 +612,10 @@ msgstr "モバイル"
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr "モバイルでは、画面の下部にアクションボタンを表示します"
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "おっと!"
@@ -799,7 +806,6 @@ msgstr "Shift"
msgid "Show CommaFeed's own context menu on right click"
msgstr "右クリックでCommaFeedのコンテキストメニューを表示する"
#: src/components/settings/DisplaySettings.tsx
msgid "Show confirmation when marking all entries as read"
msgstr "すべてのエントリーを既読にするときに確認を表示する"

View File

@@ -321,6 +321,10 @@ msgstr "입력"
msgid "Enter your current password to change profile settings"
msgstr "프로필 설정을 변경하려면 현재 비밀번호를 입력하세요."
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "앗!"

View File

@@ -321,6 +321,10 @@ msgstr "Masuk"
msgid "Enter your current password to change profile settings"
msgstr "Masukkan kata laluan semasa anda untuk menukar tetapan profil"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Aduh!"

View File

@@ -321,6 +321,10 @@ msgstr ""
msgid "Enter your current password to change profile settings"
msgstr "Skriv inn ditt nåværende passord for å endre profilinnstillinger"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Beklager!"

View File

@@ -321,6 +321,10 @@ msgstr ""
msgid "Enter your current password to change profile settings"
msgstr "Voer uw huidige wachtwoord in om de profielinstellingen te wijzigen"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Oeps!"

View File

@@ -321,6 +321,10 @@ msgstr ""
msgid "Enter your current password to change profile settings"
msgstr "Skriv inn ditt nåværende passord for å endre profilinnstillinger"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Beklager!"

View File

@@ -321,6 +321,10 @@ msgstr "Wprowadź"
msgid "Enter your current password to change profile settings"
msgstr "Wprowadź swoje aktualne hasło, aby zmienić ustawienia profilu"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Ups!"

View File

@@ -321,6 +321,10 @@ msgstr "Entrar"
msgid "Enter your current password to change profile settings"
msgstr "Digite sua senha atual para alterar as configurações do perfil"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Opa!"

View File

@@ -321,6 +321,10 @@ msgstr "Ввод"
msgid "Enter your current password to change profile settings"
msgstr "Введите текущий пароль, чтобы изменить настройки профиля."
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr "На мобильных устройствах отображать кнопки действий в нижней части экрана"
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Ой!"

View File

@@ -321,6 +321,10 @@ msgstr "Vstúpte"
msgid "Enter your current password to change profile settings"
msgstr "Ak chcete zmeniť nastavenia profilu, zadajte svoje aktuálne heslo"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Ojoj!"

View File

@@ -321,6 +321,10 @@ msgstr ""
msgid "Enter your current password to change profile settings"
msgstr "Ange ditt nuvarande lösenord för att ändra profilinställningar"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Hoppsan!"

View File

@@ -321,6 +321,10 @@ msgstr "Girin"
msgid "Enter your current password to change profile settings"
msgstr "Profil ayarlarını değiştirmek için mevcut şifrenizi girin"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr ""
@@ -608,6 +612,10 @@ msgstr ""
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "Hata!"

View File

@@ -321,6 +321,10 @@ msgstr "回车"
msgid "Enter your current password to change profile settings"
msgstr "输入您当前的密码以更改配置文件设置"
#: src/components/settings/DisplaySettings.tsx
msgid "Entries to keep above the selected entry when scrolling"
msgstr ""
#: src/components/settings/DisplaySettings.tsx
msgid "Entry headers"
msgstr "条目头部"
@@ -608,6 +612,10 @@ msgstr "移动端"
msgid "On mobile, show action buttons at the bottom of the screen"
msgstr "在移动端,显示屏幕底部的操作按钮"
#: src/components/settings/DisplaySettings.tsx
msgid "Only applies to compact, cozy and detailed modes"
msgstr ""
#: src/pages/ErrorPage.tsx
msgid "Oops!"
msgstr "哎呀!"