diff --git a/ui/src/album/AlbumList.js b/ui/src/album/AlbumList.js
index 284d577a7..50fac62cc 100644
--- a/ui/src/album/AlbumList.js
+++ b/ui/src/album/AlbumList.js
@@ -67,7 +67,9 @@ const AlbumList = (props) => {
return (
}
+ title={
+
+ }
exporter={false}
bulkActionButtons={false}
actions={}
diff --git a/ui/src/artist/ArtistList.js b/ui/src/artist/ArtistList.js
index ae95d33f2..f7f64aba6 100644
--- a/ui/src/artist/ArtistList.js
+++ b/ui/src/artist/ArtistList.js
@@ -25,7 +25,9 @@ const artistRowClick = (id) => {
const ArtistList = (props) => (
}
+ title={
+
+ }
sort={{ field: 'name', order: 'ASC' }}
exporter={false}
bulkActionButtons={false}
diff --git a/ui/src/common/Title.js b/ui/src/common/Title.js
index 07c9f7645..0b4765c43 100644
--- a/ui/src/common/Title.js
+++ b/ui/src/common/Title.js
@@ -1,13 +1,16 @@
import React from 'react'
import { useMediaQuery } from '@material-ui/core'
+import { useTranslate } from 'react-admin'
-const Title = ({ subTitle }) => {
+const Title = ({ subTitle, args }) => {
+ const translate = useTranslate()
const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md'))
+ const text = translate(subTitle, { ...args, _: subTitle })
if (isDesktop) {
- return Navidrome {subTitle ? ` - ${subTitle}` : ''}
+ return Navidrome {text ? ` - ${text}` : ''}
}
- return {subTitle ? subTitle : 'Navidrome'}
+ return {text ? text : 'Navidrome'}
}
export default Title
diff --git a/ui/src/i18n/en.js b/ui/src/i18n/en.js
index 99d4c4b4c..62e821c8c 100644
--- a/ui/src/i18n/en.js
+++ b/ui/src/i18n/en.js
@@ -17,6 +17,7 @@ export default deepmerge(englishMessages, {
},
},
album: {
+ name: 'Album |||| Albums',
fields: {
albumArtist: 'Album Artist',
artist: 'Artist',
@@ -31,6 +32,18 @@ export default deepmerge(englishMessages, {
shuffle: 'Shuffle',
},
},
+ artist: {
+ name: 'Artist |||| Artists',
+ },
+ user: {
+ name: 'User |||| Users',
+ },
+ player: {
+ name: 'Player |||| Players',
+ },
+ transcoding: {
+ name: 'Transcoding |||| Transcodings',
+ },
},
ra: {
auth: {
diff --git a/ui/src/i18n/pt.js b/ui/src/i18n/pt.js
index c023b2bcc..9ab93df70 100644
--- a/ui/src/i18n/pt.js
+++ b/ui/src/i18n/pt.js
@@ -92,6 +92,9 @@ export default deepmerge(portugueseMessages, {
invalidChars: 'Somente use letras e numeros',
passwordDoesNotMatch: 'Senha não confere',
},
+ page: {
+ create: 'Criar %{name}',
+ },
},
menu: {
library: 'Biblioteca',
diff --git a/ui/src/player/PlayerEdit.js b/ui/src/player/PlayerEdit.js
index fbb98bf85..4890f7a85 100644
--- a/ui/src/player/PlayerEdit.js
+++ b/ui/src/player/PlayerEdit.js
@@ -7,11 +7,14 @@ import {
SimpleForm,
SelectInput,
ReferenceInput,
+ useTranslate,
} from 'react-admin'
import { Title } from '../common'
const PlayerTitle = ({ record }) => {
- return
+ const translate = useTranslate()
+ const resourceName = translate('resources.player.name', { smart_count: 1 })
+ return
}
const PlayerEdit = (props) => (
diff --git a/ui/src/player/PlayerList.js b/ui/src/player/PlayerList.js
index 10c72a4a5..ad2b2d283 100644
--- a/ui/src/player/PlayerList.js
+++ b/ui/src/player/PlayerList.js
@@ -13,7 +13,13 @@ import { SimpleList, Title } from '../common'
const PlayerList = (props) => {
const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs'))
return (
-
} exporter={false} {...props}>
+
+ }
+ exporter={false}
+ {...props}
+ >
{isXsmall ? (
r.client}
diff --git a/ui/src/song/SongList.js b/ui/src/song/SongList.js
index f81d768f4..b7de7f6c2 100644
--- a/ui/src/song/SongList.js
+++ b/ui/src/song/SongList.js
@@ -36,7 +36,9 @@ const SongList = (props) => {
return (
}
+ title={
+
+ }
sort={{ field: 'title', order: 'ASC' }}
exporter={false}
bulkActionButtons={}
diff --git a/ui/src/transcoding/TranscodingCreate.js b/ui/src/transcoding/TranscodingCreate.js
index 64684428b..3f85a87f2 100644
--- a/ui/src/transcoding/TranscodingCreate.js
+++ b/ui/src/transcoding/TranscodingCreate.js
@@ -5,11 +5,19 @@ import {
Create,
required,
SimpleForm,
+ useTranslate,
} from 'react-admin'
import { Title } from '../common'
-const TranscodingTitle = ({ record }) => {
- return
+const TranscodingTitle = () => {
+ const translate = useTranslate()
+ const resourceName = translate('resources.transcoding.name', {
+ smart_count: 1,
+ })
+ const title = translate('ra.page.create', {
+ name: `${resourceName}`,
+ })
+ return
}
const TranscodingCreate = (props) => (
diff --git a/ui/src/transcoding/TranscodingEdit.js b/ui/src/transcoding/TranscodingEdit.js
index 406fecfe4..9a6c85c9d 100644
--- a/ui/src/transcoding/TranscodingEdit.js
+++ b/ui/src/transcoding/TranscodingEdit.js
@@ -1,9 +1,20 @@
import React from 'react'
-import { TextInput, SelectInput, Edit, required, SimpleForm } from 'react-admin'
+import {
+ TextInput,
+ SelectInput,
+ Edit,
+ required,
+ SimpleForm,
+ useTranslate,
+} from 'react-admin'
import { Title } from '../common'
const TranscodingTitle = ({ record }) => {
- return
+ const translate = useTranslate()
+ const resourceName = translate('resources.transcoding.name', {
+ smart_count: 1,
+ })
+ return
}
const TranscodingEdit = (props) => (
diff --git a/ui/src/transcoding/TranscodingList.js b/ui/src/transcoding/TranscodingList.js
index 3cfa754fc..162ad2b0e 100644
--- a/ui/src/transcoding/TranscodingList.js
+++ b/ui/src/transcoding/TranscodingList.js
@@ -7,7 +7,12 @@ const TranscodingList = (props) => {
const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs'))
return (
}
+ title={
+
+ }
exporter={false}
{...props}
>
diff --git a/ui/src/user/UserCreate.js b/ui/src/user/UserCreate.js
index df7cca604..5ccf922a7 100644
--- a/ui/src/user/UserCreate.js
+++ b/ui/src/user/UserCreate.js
@@ -7,19 +7,27 @@ import {
required,
email,
SimpleForm,
+ useTranslate,
} from 'react-admin'
import { Title } from '../common'
-const UserCreate = (props) => (
- } {...props}>
-
-
-
-
-
-
-
-
-)
+const UserCreate = (props) => {
+ const translate = useTranslate()
+ const resourceName = translate('resources.user.name', { smart_count: 1 })
+ const title = translate('ra.page.create', {
+ name: `${resourceName}`,
+ })
+ return (
+ } {...props}>
+
+
+
+
+
+
+
+
+ )
+}
export default UserCreate
diff --git a/ui/src/user/UserEdit.js b/ui/src/user/UserEdit.js
index 68d7bb2c1..207fca86a 100644
--- a/ui/src/user/UserEdit.js
+++ b/ui/src/user/UserEdit.js
@@ -8,11 +8,14 @@ import {
required,
email,
SimpleForm,
+ useTranslate,
} from 'react-admin'
import { Title } from '../common'
const UserTitle = ({ record }) => {
- return
+ const translate = useTranslate()
+ const resourceName = translate('resources.user.name', { smart_count: 1 })
+ return
}
const UserEdit = (props) => (
} {...props}>
diff --git a/ui/src/user/UserList.js b/ui/src/user/UserList.js
index e30f074e7..cc1af8c32 100644
--- a/ui/src/user/UserList.js
+++ b/ui/src/user/UserList.js
@@ -24,7 +24,9 @@ const UserList = (props) => {
return (
}
+ title={
+
+ }
sort={{ field: 'userName', order: 'ASC' }}
exporter={false}
filters={}