Browse Source

Merge branch 'refactor/gui-v2' into feat/gui-v2-quick-import

pull/2795/head
Wing-Kam Wong 2 years ago
parent
commit
d68ab047d5
  1. 5
      packages/nc-gui-v2/components/cell/Attachment.vue
  2. 2
      packages/nc-gui-v2/components/cell/Checkbox.vue
  3. 3
      packages/nc-gui-v2/components/cell/DateTimePicker.vue
  4. 2
      packages/nc-gui-v2/components/cell/Duration.vue
  5. 2
      packages/nc-gui-v2/components/cell/MultiSelect.vue
  6. 2
      packages/nc-gui-v2/components/cell/Rating.vue
  7. 2
      packages/nc-gui-v2/components/cell/SingleSelect.vue
  8. 2
      packages/nc-gui-v2/components/cell/Url.vue
  9. 3
      packages/nc-gui-v2/components/dashboard/TreeView.vue
  10. 6
      packages/nc-gui-v2/components/dlg/TableCreate.vue
  11. 2
      packages/nc-gui-v2/components/dlg/ViewCreate.vue
  12. 2
      packages/nc-gui-v2/components/smartsheet-header/Cell.vue
  13. 2
      packages/nc-gui-v2/components/smartsheet-header/CellIcon.vue
  14. 2
      packages/nc-gui-v2/components/smartsheet-header/VirtualCell.vue
  15. 2
      packages/nc-gui-v2/components/smartsheet-header/VirtualCellIcon.vue
  16. 2
      packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilter.vue
  17. 2
      packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilterMenu.vue
  18. 2
      packages/nc-gui-v2/components/smartsheet-toolbar/FieldListAutoCompleteDropdown.vue
  19. 2
      packages/nc-gui-v2/components/smartsheet-toolbar/FieldsMenu.vue
  20. 2
      packages/nc-gui-v2/components/smartsheet-toolbar/SortListMenu.vue
  21. 2
      packages/nc-gui-v2/components/smartsheet/Cell.vue
  22. 2
      packages/nc-gui-v2/components/smartsheet/Gallery.vue
  23. 2
      packages/nc-gui-v2/components/smartsheet/Grid.vue
  24. 2
      packages/nc-gui-v2/components/smartsheet/Pagination.vue
  25. 2
      packages/nc-gui-v2/components/smartsheet/Sidebar.vue
  26. 2
      packages/nc-gui-v2/components/smartsheet/VirtualCell.vue
  27. 2
      packages/nc-gui-v2/components/tabs/Smartsheet.vue
  28. 2
      packages/nc-gui-v2/components/virtual-cell/BelongsTo.vue
  29. 5
      packages/nc-gui-v2/components/virtual-cell/Formula.vue
  30. 2
      packages/nc-gui-v2/components/virtual-cell/HasMany.vue
  31. 2
      packages/nc-gui-v2/components/virtual-cell/ManyToMany.vue
  32. 2
      packages/nc-gui-v2/components/virtual-cell/components/ItemChip.vue
  33. 2
      packages/nc-gui-v2/composables/useColumn.ts
  34. 2
      packages/nc-gui-v2/composables/useMetas.ts
  35. 33
      packages/nc-gui-v2/composables/useProject.ts
  36. 1
      packages/nc-gui-v2/composables/useTableCreate.ts
  37. 2
      packages/nc-gui-v2/composables/useViewData.ts
  38. 2
      packages/nc-gui-v2/context/index.ts
  39. 6
      packages/nc-gui-v2/lang/da.json
  40. 6
      packages/nc-gui-v2/lang/de.json
  41. 5
      packages/nc-gui-v2/lang/en.json
  42. 8
      packages/nc-gui-v2/lang/es.json
  43. 4
      packages/nc-gui-v2/lang/fa.json
  44. 6
      packages/nc-gui-v2/lang/fi.json
  45. 120
      packages/nc-gui-v2/lang/fr.json
  46. 6
      packages/nc-gui-v2/lang/hr.json
  47. 6
      packages/nc-gui-v2/lang/id.json
  48. 6
      packages/nc-gui-v2/lang/it_IT.json
  49. 24
      packages/nc-gui-v2/lang/iw.json
  50. 4
      packages/nc-gui-v2/lang/ja.json
  51. 444
      packages/nc-gui-v2/lang/ko.json
  52. 6
      packages/nc-gui-v2/lang/lv.json
  53. 6
      packages/nc-gui-v2/lang/nl.json
  54. 6
      packages/nc-gui-v2/lang/no.json
  55. 6
      packages/nc-gui-v2/lang/pl.json
  56. 6
      packages/nc-gui-v2/lang/pt.json
  57. 6
      packages/nc-gui-v2/lang/pt_BR.json
  58. 5
      packages/nc-gui-v2/lang/ru.json
  59. 6
      packages/nc-gui-v2/lang/sl.json
  60. 6
      packages/nc-gui-v2/lang/sv.json
  61. 6
      packages/nc-gui-v2/lang/th.json
  62. 6
      packages/nc-gui-v2/lang/tr.json
  63. 6
      packages/nc-gui-v2/lang/uk.json
  64. 6
      packages/nc-gui-v2/lang/vi.json
  65. 4
      packages/nc-gui-v2/lang/zh_CN.json
  66. 4
      packages/nc-gui-v2/lang/zh_HK.json
  67. 6
      packages/nc-gui-v2/lang/zh_TW.json
  68. 28908
      packages/nc-gui-v2/package-lock.json
  69. 1
      packages/nc-gui-v2/package.json
  70. 73
      packages/nc-gui-v2/pages/index/index.vue
  71. 12
      packages/nc-gui-v2/pages/nc/[projectId].vue
  72. 17
      packages/nc-gui-v2/pages/project/index/create-external.vue
  73. 4
      packages/nc-gui-v2/pages/signin.vue
  74. 31
      packages/nc-gui-v2/pages/signup.vue

5
packages/nc-gui-v2/components/cell/Attachment.vue

@ -1,9 +1,8 @@
<script setup lang="ts"> <script setup lang="ts">
import { useToast } from 'vue-toastification' import { useToast } from 'vue-toastification'
import { inject, ref, watchEffect } from '#imports' import { inject, ref, useProject, watchEffect } from '#imports'
import { useNuxtApp } from '#app' import { useNuxtApp } from '#app'
import { ColumnInj, MetaInj } from '~/components' import { ColumnInj, MetaInj } from '~/context'
import useProject from '~/composables/useProject'
import { NOCO } from '~/lib/constants' import { NOCO } from '~/lib/constants'
import { isImage } from '~/utils/fileUtils' import { isImage } from '~/utils/fileUtils'
import MaterialPlusIcon from '~icons/mdi/plus' import MaterialPlusIcon from '~icons/mdi/plus'

2
packages/nc-gui-v2/components/cell/Checkbox.vue

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed, inject } from '#imports' import { computed, inject } from '#imports'
import { ColumnInj, IsFormInj } from '~/components' import { ColumnInj, IsFormInj } from '~/context'
interface Props { interface Props {
modelValue?: boolean | undefined | number modelValue?: boolean | undefined | number

3
packages/nc-gui-v2/components/cell/DateTimePicker.vue

@ -1,7 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import dayjs from 'dayjs' import dayjs from 'dayjs'
import { computed, ref } from '#imports' import { computed, ref, useProject } from '#imports'
import useProject from '~/composables/useProject'
interface Props { interface Props {
modelValue?: string modelValue?: string

2
packages/nc-gui-v2/components/cell/Duration.vue

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed, inject, ref } from '#imports' import { computed, inject, ref } from '#imports'
import { ColumnInj } from '~/components' import { ColumnInj } from '~/context'
import { convertDurationToSeconds, convertMS2Duration, durationOptions } from '~/utils/durationHelper' import { convertDurationToSeconds, convertMS2Duration, durationOptions } from '~/utils/durationHelper'
interface Props { interface Props {

2
packages/nc-gui-v2/components/cell/MultiSelect.vue

@ -1,6 +1,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import { computed, inject } from '#imports' import { computed, inject } from '#imports'
import { ColumnInj } from '~/components' import { ColumnInj } from '~/context'
interface Props { interface Props {
modelValue: string modelValue: string

2
packages/nc-gui-v2/components/cell/Rating.vue

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed, inject } from '#imports' import { computed, inject } from '#imports'
import { ColumnInj, IsFormInj } from '~/components' import { ColumnInj, IsFormInj } from '~/context'
import MdiStarIcon from '~icons/mdi/star' import MdiStarIcon from '~icons/mdi/star'
import MdiStarOutlineIcon from '~icons/mdi/star-outline' import MdiStarOutlineIcon from '~icons/mdi/star-outline'

2
packages/nc-gui-v2/components/cell/SingleSelect.vue

@ -1,6 +1,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import { computed, inject } from '#imports' import { computed, inject } from '#imports'
import { ColumnInj } from '~/components' import { ColumnInj } from '~/context'
interface Props { interface Props {
modelValue: string modelValue: string

2
packages/nc-gui-v2/components/cell/Url.vue

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed, ref } from '#imports' import { computed, ref } from '#imports'
import { ColumnInj } from '~/components' import { ColumnInj } from '~/context'
import { isValidURL } from '~/utils/urlUtils' import { isValidURL } from '~/utils/urlUtils'
interface Props { interface Props {

3
packages/nc-gui-v2/components/dashboard/TreeView.vue

@ -1,6 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import useProject from '~/composables/useProject' import { useProject, useTabs } from '#imports'
import useTabs from '~/composables/useTabs'
import MdiSettingIcon from '~icons/mdi/cog' import MdiSettingIcon from '~icons/mdi/cog'
const { tables } = useProject() const { tables } = useProject()

6
packages/nc-gui-v2/components/dlg/TableCreate.vue

@ -1,9 +1,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { onMounted } from '@vue/runtime-core' import { onMounted } from '@vue/runtime-core'
import { Form } from 'ant-design-vue'
import { useProject, useTableCreate, useTabs } from '#imports' import { useProject, useTableCreate, useTabs } from '#imports'
import { validateTableName } from '~/utils/validation'
import { Form } from 'ant-design-vue'
import { useToast } from 'vue-toastification' import { useToast } from 'vue-toastification'
import { fieldRequiredValidator, importUrlValidator, validateTableName } from '~/utils/validation'
const { modelValue = false } = defineProps<{ modelValue?: boolean }>() const { modelValue = false } = defineProps<{ modelValue?: boolean }>()
@ -67,7 +67,7 @@ const formState = reactive({
const validators = computed(() => { const validators = computed(() => {
return { return {
title: [validateTableName, validateDuplicateAlias], title: [validateTableName, validateDuplicateAlias],
table_name: [], table_name: [validateTableName],
} }
}) })
const { resetFields, validate, validateInfos } = useForm(formState, validators) const { resetFields, validate, validateInfos } = useForm(formState, validators)

2
packages/nc-gui-v2/components/dlg/ViewCreate.vue

@ -3,7 +3,7 @@ import { inject } from '@vue/runtime-core'
import type { TableType } from 'nocodb-sdk' import type { TableType } from 'nocodb-sdk'
import { ViewTypes } from 'nocodb-sdk' import { ViewTypes } from 'nocodb-sdk'
import type { Ref } from '#imports' import type { Ref } from '#imports'
import { ActiveViewInj, MetaInj, ViewListInj } from '~/components' import { ActiveViewInj, MetaInj, ViewListInj } from '~/context'
import useViewCreate from '~/composables/useViewCreate' import useViewCreate from '~/composables/useViewCreate'
const { modelValue, type } = defineProps<{ type: ViewTypes; modelValue: boolean }>() const { modelValue, type } = defineProps<{ type: ViewTypes; modelValue: boolean }>()

2
packages/nc-gui-v2/components/smartsheet-header/Cell.vue

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import type { ColumnType } from 'nocodb-sdk' import type { ColumnType } from 'nocodb-sdk'
import { ColumnInj } from '../index' import { ColumnInj } from '../../context'
const { column } = defineProps<{ column: ColumnType & { meta: any } }>() const { column } = defineProps<{ column: ColumnType & { meta: any } }>()
provide(ColumnInj, column) provide(ColumnInj, column)

2
packages/nc-gui-v2/components/smartsheet-header/CellIcon.vue

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import type { ColumnType } from 'nocodb-sdk' import type { ColumnType } from 'nocodb-sdk'
import { ColumnInj } from '~/components' import { ColumnInj } from '~/context'
import useColumn from '~/composables/useColumn' import useColumn from '~/composables/useColumn'
import KeyIcon from '~icons/mdi/key-variant' import KeyIcon from '~icons/mdi/key-variant'
import JSONIcon from '~icons/mdi/code-json' import JSONIcon from '~icons/mdi/code-json'

2
packages/nc-gui-v2/components/smartsheet-header/VirtualCell.vue

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import type { ColumnType } from 'nocodb-sdk' import type { ColumnType } from 'nocodb-sdk'
import { ColumnInj } from '../index' import { ColumnInj } from '../../context'
import { provide } from '#imports' import { provide } from '#imports'
const { column } = defineProps<{ column: ColumnType & { meta: any } }>() const { column } = defineProps<{ column: ColumnType & { meta: any } }>()

2
packages/nc-gui-v2/components/smartsheet-header/VirtualCellIcon.vue

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { LinkToAnotherRecordType, RelationTypes, UITypes } from "nocodb-sdk"; import { LinkToAnotherRecordType, RelationTypes, UITypes } from "nocodb-sdk";
import { ColumnInj } from '~/components' import { ColumnInj } from '~/context'
import GenericIcon from '~icons/mdi/square-rounded' import GenericIcon from '~icons/mdi/square-rounded'
import HMIcon from '~icons/mdi/table-arrow-right' import HMIcon from '~icons/mdi/table-arrow-right'
import BTIcon from '~icons/mdi/table-arrow-left' import BTIcon from '~icons/mdi/table-arrow-left'

2
packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilter.vue

@ -4,7 +4,7 @@ import FieldListAutoCompleteDropdown from './FieldListAutoCompleteDropdown.vue'
import { useNuxtApp } from '#app' import { useNuxtApp } from '#app'
import { inject } from '#imports' import { inject } from '#imports'
import { comparisonOpList } from '~/utils/filterUtils' import { comparisonOpList } from '~/utils/filterUtils'
import { ActiveViewInj, MetaInj, ReloadViewDataHookInj } from '~/components' import { ActiveViewInj, MetaInj, ReloadViewDataHookInj } from '~/context'
import useViewFilters from '~/composables/useViewFilters' import useViewFilters from '~/composables/useViewFilters'
import MdiDeleteIcon from '~icons/mdi/close-box' import MdiDeleteIcon from '~icons/mdi/close-box'

2
packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilterMenu.vue

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
// todo: move to persisted state // todo: move to persisted state
import { useState } from '#app' import { useState } from '#app'
import { IsLockedInj } from '~/components' import { IsLockedInj } from '~/context'
import MdiFilterIcon from '~icons/mdi/filter-outline' import MdiFilterIcon from '~icons/mdi/filter-outline'
import MdiMenuDownIcon from '~icons/mdi/menu-down' import MdiMenuDownIcon from '~icons/mdi/menu-down'

2
packages/nc-gui-v2/components/smartsheet-toolbar/FieldListAutoCompleteDropdown.vue

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { MetaInj } from '~/components' import { MetaInj } from '~/context'
interface Props { interface Props {
modelValue?: string modelValue?: string

2
packages/nc-gui-v2/components/smartsheet-toolbar/FieldsMenu.vue

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed, inject } from 'vue' import { computed, inject } from 'vue'
import { ActiveViewInj, FieldsInj, IsLockedInj, MetaInj, ReloadViewDataHookInj } from '~/components' import { ActiveViewInj, FieldsInj, IsLockedInj, MetaInj, ReloadViewDataHookInj } from '~/context'
import useViewColumns from '~/composables/useViewColumns' import useViewColumns from '~/composables/useViewColumns'
import MdiMenuDownIcon from '~icons/mdi/menu-down' import MdiMenuDownIcon from '~icons/mdi/menu-down'
import MdiEyeIcon from '~icons/mdi/eye-off-outline' import MdiEyeIcon from '~icons/mdi/eye-off-outline'

2
packages/nc-gui-v2/components/smartsheet-toolbar/SortListMenu.vue

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import FieldListAutoCompleteDropdown from './FieldListAutoCompleteDropdown.vue' import FieldListAutoCompleteDropdown from './FieldListAutoCompleteDropdown.vue'
import { computed, inject } from '#imports' import { computed, inject } from '#imports'
import { ActiveViewInj, IsLockedInj, MetaInj, ReloadViewDataHookInj } from '~/components' import { ActiveViewInj, IsLockedInj, MetaInj, ReloadViewDataHookInj } from '~/context'
import useViewSorts from '~/composables/useViewSorts' import useViewSorts from '~/composables/useViewSorts'
import MdiMenuDownIcon from '~icons/mdi/menu-down' import MdiMenuDownIcon from '~icons/mdi/menu-down'
import MdiSortIcon from '~icons/mdi/sort' import MdiSortIcon from '~icons/mdi/sort'

2
packages/nc-gui-v2/components/smartsheet/Cell.vue

@ -2,7 +2,7 @@
import type { ColumnType } from 'nocodb-sdk' import type { ColumnType } from 'nocodb-sdk'
import { provide } from 'vue' import { provide } from 'vue'
import { computed } from '#imports' import { computed } from '#imports'
import { ColumnInj } from '~/components' import { ColumnInj } from '~/context'
import useColumn from '~/composables/useColumn' import useColumn from '~/composables/useColumn'
interface Props { interface Props {

2
packages/nc-gui-v2/components/smartsheet/Gallery.vue

@ -1,7 +1,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { isVirtualCol } from 'nocodb-sdk' import { isVirtualCol } from 'nocodb-sdk'
import { inject, onKeyStroke, onMounted, provide } from '#imports' import { inject, onKeyStroke, onMounted, provide } from '#imports'
import { ActiveViewInj, ChangePageInj, IsFormInj, IsGridInj, MetaInj, PaginationDataInj, ReadonlyInj } from '~/components' import { ActiveViewInj, ChangePageInj, IsFormInj, IsGridInj, MetaInj, PaginationDataInj, ReadonlyInj } from '~/context'
import useViewData from '~/composables/useViewData' import useViewData from '~/composables/useViewData'
const meta = inject(MetaInj) const meta = inject(MetaInj)

2
packages/nc-gui-v2/components/smartsheet/Grid.vue

@ -11,7 +11,7 @@ import {
MetaInj, MetaInj,
PaginationDataInj, PaginationDataInj,
ReloadViewDataHookInj, ReloadViewDataHookInj,
} from '~/components' } from '~/context'
import useViewData from '~/composables/useViewData' import useViewData from '~/composables/useViewData'
const meta = inject(MetaInj) const meta = inject(MetaInj)

2
packages/nc-gui-v2/components/smartsheet/Pagination.vue

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed, inject } from 'vue' import { computed, inject } from 'vue'
import { ChangePageInj, PaginationDataInj } from '~/components' import { ChangePageInj, PaginationDataInj } from '~/context'
import MdiKeyboardIcon from '~icons/mdi/keyboard-return' import MdiKeyboardIcon from '~icons/mdi/keyboard-return'
const paginatedData = inject(PaginationDataInj) const paginatedData = inject(PaginationDataInj)

2
packages/nc-gui-v2/components/smartsheet/Sidebar.vue

@ -3,7 +3,7 @@ import { ViewTypes } from 'nocodb-sdk'
import type { TableType } from 'nocodb-sdk' import type { TableType } from 'nocodb-sdk'
import type { Ref } from 'vue' import type { Ref } from 'vue'
import { inject, ref } from '#imports' import { inject, ref } from '#imports'
import { ActiveViewInj, MetaInj, ViewListInj } from '~/components' import { ActiveViewInj, MetaInj, ViewListInj } from '~/context'
import useViews from '~/composables/useViews' import useViews from '~/composables/useViews'
import { viewIcons } from '~/utils/viewUtils' import { viewIcons } from '~/utils/viewUtils'
import MdiPlusIcon from '~icons/mdi/plus' import MdiPlusIcon from '~icons/mdi/plus'

2
packages/nc-gui-v2/components/smartsheet/VirtualCell.vue

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import type { ColumnType } from 'nocodb-sdk' import type { ColumnType } from 'nocodb-sdk'
import { provide } from '#imports' import { provide } from '#imports'
import { ColumnInj } from '~/components' import { ColumnInj } from '~/context'
import useVirtualCell from '~/composables/useVirtualCell' import useVirtualCell from '~/composables/useVirtualCell'
interface Props { interface Props {

2
packages/nc-gui-v2/components/tabs/Smartsheet.vue

@ -3,7 +3,7 @@ import { useEventBus } from '@vueuse/core'
import type { ColumnType, FormType, GalleryType, GridType, KanbanType } from 'nocodb-sdk' import type { ColumnType, FormType, GalleryType, GridType, KanbanType } from 'nocodb-sdk'
import { ViewTypes } from 'nocodb-sdk' import { ViewTypes } from 'nocodb-sdk'
import { computed, onMounted, provide, watch } from '#imports' import { computed, onMounted, provide, watch } from '#imports'
import { ActiveViewInj, FieldsInj, IsLockedInj, MetaInj, ReloadViewDataHookInj, TabMetaInj } from '~/components' import { ActiveViewInj, FieldsInj, IsLockedInj, MetaInj, ReloadViewDataHookInj, TabMetaInj } from '~/context'
import useMetas from '~/composables/useMetas' import useMetas from '~/composables/useMetas'
const { tabMeta } = defineProps({ const { tabMeta } = defineProps({

2
packages/nc-gui-v2/components/virtual-cell/BelongsTo.vue

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import type { ColumnType } from 'nocodb-sdk' import type { ColumnType } from 'nocodb-sdk'
import ItemChip from './components/ItemChip.vue' import ItemChip from './components/ItemChip.vue'
import { ColumnInj } from '~/components' import { ColumnInj } from '~/context'
import useBelongsTo from '~/composables/useBelongsTo' import useBelongsTo from '~/composables/useBelongsTo'
const column = inject(ColumnInj) const column = inject(ColumnInj)

5
packages/nc-gui-v2/components/virtual-cell/Formula.vue

@ -1,8 +1,9 @@
<script lang="ts" setup> <script lang="ts" setup>
import { computed } from '#imports' import { computed, useProject } from '#imports'
import { ColumnInj } from '~/components' import { ColumnInj } from '~/context'
import { handleTZ } from '~/utils/dateTimeUtils' import { handleTZ } from '~/utils/dateTimeUtils'
import { replaceUrlsWithLink } from '~/utils/urlUtils' import { replaceUrlsWithLink } from '~/utils/urlUtils'
const column = inject(ColumnInj) const column = inject(ColumnInj)
const value = inject('value') const value = inject('value')

2
packages/nc-gui-v2/components/virtual-cell/HasMany.vue

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import type { ColumnType } from 'nocodb-sdk' import type { ColumnType } from 'nocodb-sdk'
import ItemChip from './components/ItemChip.vue' import ItemChip from './components/ItemChip.vue'
import { ColumnInj } from '~/components' import { ColumnInj } from '~/context'
import useHasMany from '~/composables/useHasMany' import useHasMany from '~/composables/useHasMany'
const column = inject(ColumnInj) const column = inject(ColumnInj)
const value = inject('value') const value = inject('value')

2
packages/nc-gui-v2/components/virtual-cell/ManyToMany.vue

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import type { ColumnType } from 'nocodb-sdk' import type { ColumnType } from 'nocodb-sdk'
import ItemChip from './components/ItemChip.vue' import ItemChip from './components/ItemChip.vue'
import { ColumnInj } from '~/components' import { ColumnInj } from '~/context'
import useManyToMany from '~/composables/useManyToMany' import useManyToMany from '~/composables/useManyToMany'
const column = inject(ColumnInj) const column = inject(ColumnInj)
const value = inject('value') const value = inject('value')

2
packages/nc-gui-v2/components/virtual-cell/components/ItemChip.vue

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { ReadonlyInj } from '~/components' import { ReadonlyInj } from '~/context'
import MdiCloseThickIcon from '~icons/mdi/close-thick' import MdiCloseThickIcon from '~icons/mdi/close-thick'
interface Props { interface Props {

2
packages/nc-gui-v2/composables/useColumn.ts

@ -1,6 +1,6 @@
import type { ColumnType } from 'nocodb-sdk' import type { ColumnType } from 'nocodb-sdk'
import { SqlUiFactory, UITypes, isVirtualCol } from 'nocodb-sdk' import { SqlUiFactory, UITypes, isVirtualCol } from 'nocodb-sdk'
import useProject from '~/composables/useProject' import { useProject } from '#imports'
export default (column: ColumnType) => { export default (column: ColumnType) => {
const { project } = useProject() const { project } = useProject()

2
packages/nc-gui-v2/composables/useMetas.ts

@ -1,6 +1,6 @@
import type { TableType } from 'nocodb-sdk' import type { TableType } from 'nocodb-sdk'
import { useNuxtApp, useState } from '#app' import { useNuxtApp, useState } from '#app'
import useProject from '~/composables/useProject' import { useProject } from '#imports'
export default () => { export default () => {
const { $api } = useNuxtApp() const { $api } = useNuxtApp()

33
packages/nc-gui-v2/composables/useProject.ts

@ -1,17 +1,19 @@
import { SqlUiFactory } from 'nocodb-sdk' import { SqlUiFactory } from 'nocodb-sdk'
import type { ProjectType, TableType } from 'nocodb-sdk' import type { ProjectType, TableType } from 'nocodb-sdk'
import type { MaybeRef } from '@vueuse/core'
import { useNuxtApp, useState } from '#app' import { useNuxtApp, useState } from '#app'
import { USER_PROJECT_ROLES } from '~/lib/constants' import { USER_PROJECT_ROLES } from '~/lib/constants'
export default () => { export default (projectId?: MaybeRef<string>) => {
const projectRoles = useState<Record<string, boolean>>(USER_PROJECT_ROLES, () => ({})) const projectRoles = useState<Record<string, boolean>>(USER_PROJECT_ROLES, () => ({}))
const { $api } = useNuxtApp() const { $api } = useNuxtApp()
const _projectId = $computed(() => unref(projectId))
const project = useState<ProjectType>('project') const project = useState<ProjectType>('project')
const tables = useState<TableType[]>('tables') const tables = useState<TableType[]>('tables', () => [] as TableType[])
const loadProjectRoles = async () => { async function loadProjectRoles() {
projectRoles.value = {} projectRoles.value = {}
if (project.value.id) { if (project.value.id) {
@ -19,21 +21,30 @@ export default () => {
projectRoles.value = user.roles projectRoles.value = user.roles
} }
} }
const loadTables = async () => { async function loadTables() {
if (project.value.id) { if (project.value.id) {
const tablesResponse = await $api.dbTable.list(project.value.id) const tablesResponse = await $api.dbTable.list(project.value.id)
if (tablesResponse.list) tables.value = tablesResponse.list if (tablesResponse.list) tables.value = tablesResponse.list
} }
} }
const loadProject = async (projectId: string) => { async function loadProject(id: string) {
project.value = await $api.project.read(projectId) project.value = await $api.project.read(id)
await loadProjectRoles() await loadProjectRoles()
} }
const isMysql = computed(() => ['mysql', 'mysql2'].includes(project.value?.bases?.[0]?.type || '')) watchEffect(async () => {
const isPg = computed(() => project.value?.bases?.[0]?.type === 'pg') if (_projectId) {
const sqlUi = computed(() => SqlUiFactory.create({ client: project.value?.bases?.[0]?.type || '' })) await loadProject(_projectId)
await loadTables()
}
})
const projectBaseType = $computed(() => project.value?.bases?.[0]?.type || '')
const isMysql = computed(() => ['mysql', 'mysql2'].includes(projectBaseType))
const isPg = computed(() => projectBaseType === 'pg')
const sqlUi = computed(() => SqlUiFactory.create({ client: projectBaseType }))
return { project, tables, loadProject, loadTables, isMysql, isPg, sqlUi } return { project, tables, loadProjectRoles, loadProject, loadTables, isMysql, isPg, sqlUi }
} }

1
packages/nc-gui-v2/composables/useTableCreate.ts

@ -1,6 +1,7 @@
import type { TableType } from 'nocodb-sdk' import type { TableType } from 'nocodb-sdk'
import { UITypes } from 'nocodb-sdk' import { UITypes } from 'nocodb-sdk'
import { useNuxtApp } from '#app' import { useNuxtApp } from '#app'
import { useProject } from '#imports'
export default (onTableCreate?: (tableMeta: TableType) => void) => { export default (onTableCreate?: (tableMeta: TableType) => void) => {
const table = reactive<{ title: string; table_name: string; columns: string[] }>({ const table = reactive<{ title: string; table_name: string; columns: string[] }>({

2
packages/nc-gui-v2/composables/useViewData.ts

@ -1,7 +1,7 @@
import type { Api, FormType, GalleryType, GridType, PaginatedType, TableType } from 'nocodb-sdk' import type { Api, FormType, GalleryType, GridType, PaginatedType, TableType } from 'nocodb-sdk'
import type { ComputedRef, Ref } from 'vue' import type { ComputedRef, Ref } from 'vue'
import { useNuxtApp } from '#app' import { useNuxtApp } from '#app'
import useProject from '~/composables/useProject' import { useProject } from '#imports'
import { NOCO } from '~/lib/constants' import { NOCO } from '~/lib/constants'
const formatData = (list: Record<string, any>[]) => const formatData = (list: Record<string, any>[]) =>

2
packages/nc-gui-v2/components/index.ts → packages/nc-gui-v2/context/index.ts

@ -1,7 +1,7 @@
import type { ColumnType, TableType, ViewType } from 'nocodb-sdk' import type { ColumnType, TableType, ViewType } from 'nocodb-sdk'
import type { InjectionKey, Ref } from 'vue' import type { InjectionKey, Ref } from 'vue'
import type { EventHook } from '@vueuse/core' import type { EventHook } from '@vueuse/core'
import type useViewData from '~/composables/useViewData' import type { useViewData } from '#imports'
export const ColumnInj: InjectionKey<ColumnType & { meta: any }> = Symbol('column-injection') export const ColumnInj: InjectionKey<ColumnType & { meta: any }> = Symbol('column-injection')
export const MetaInj: InjectionKey<Ref<TableType>> = Symbol('meta-injection') export const MetaInj: InjectionKey<Ref<TableType>> = Symbol('meta-injection')

6
packages/nc-gui-v2/lang/da.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL Output.", "sqlOutput": "SQL Output.",
"addOption": "Tilføj option", "addOption": "Tilføj option",
"aggregateFunction": "Aggregate Function.", "aggregateFunction": "Aggregate Function.",
"database": "Database",
"dbCreateIfNotExists": "DATABASE: Opret, hvis ikke eksisterer", "dbCreateIfNotExists": "DATABASE: Opret, hvis ikke eksisterer",
"clientKey": "Klientnøgle", "clientKey": "Klientnøgle",
"clientCert": "Klient cert.", "clientCert": "Klient cert.",
@ -412,7 +413,7 @@
"deleteProject": "Ønsker du at slette projektet?", "deleteProject": "Ønsker du at slette projektet?",
"shareBasePrivate": "Generer offentligt delbart readonly base", "shareBasePrivate": "Generer offentligt delbart readonly base",
"shareBasePublic": "Enhver på internettet med dette link kan se", "shareBasePublic": "Enhver på internettet med dette link kan se",
"userInviteNoSMTP": "Ser ud som om du ikke har konfigureret mailer endnu!\nKopier venligst ovenstående invitation link og send det til", "userInviteNoSMTP": "Ser ud som om du ikke har konfigureret mailer endnu! Kopier venligst ovenstående invitation link og send det til",
"dragDropHide": "Træk og slip felter her for at skjule", "dragDropHide": "Træk og slip felter her for at skjule",
"formInput": "Indtast formularindgangsmærke", "formInput": "Indtast formularindgangsmærke",
"formHelpText": "Tilføj nogle hjælpetekst", "formHelpText": "Tilføj nogle hjælpetekst",
@ -496,7 +497,8 @@
"emailReqd": "E-mail er påkrævet", "emailReqd": "E-mail er påkrævet",
"emailInvalid": "E-mail skal være gyldig", "emailInvalid": "E-mail skal være gyldig",
"passwdRequired": "adgangskode er påkrævet", "passwdRequired": "adgangskode er påkrævet",
"passwdLength": "Din adgangskode skal være mindst 8 tegn" "passwdLength": "Din adgangskode skal være mindst 8 tegn",
"passwdMismatch": "Kodeordene er ikke ens"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/de.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL-Ausgabe", "sqlOutput": "SQL-Ausgabe",
"addOption": "Option hinzufügen", "addOption": "Option hinzufügen",
"aggregateFunction": "Globale Funktion", "aggregateFunction": "Globale Funktion",
"database": "Datenbank",
"dbCreateIfNotExists": "Datenbank: Erstellen, falls nicht vorhanden", "dbCreateIfNotExists": "Datenbank: Erstellen, falls nicht vorhanden",
"clientKey": "Client-Schlüssel", "clientKey": "Client-Schlüssel",
"clientCert": "Client Cert", "clientCert": "Client Cert",
@ -412,7 +413,7 @@
"deleteProject": "Möchten Sie das Projekt löschen?", "deleteProject": "Möchten Sie das Projekt löschen?",
"shareBasePrivate": "Öffentlich freigegebene Nur-Lese-Datenbank generieren", "shareBasePrivate": "Öffentlich freigegebene Nur-Lese-Datenbank generieren",
"shareBasePublic": "Für Jeden im Internet mit diesem Link sichtbar", "shareBasePublic": "Für Jeden im Internet mit diesem Link sichtbar",
"userInviteNoSMTP": "Es sieht so aus, als hätten Sie den Mailer noch nicht konfiguriert! \\ n Bitte kopieren Sie den obigen Einladungs-Link und senden Sie ihn an", "userInviteNoSMTP": "Es sieht so aus, als hätten Sie den Mailer noch nicht konfiguriert! Bitte kopieren Sie den obigen Einladungs-Link und senden Sie ihn an",
"dragDropHide": "Ziehen Sie die Felder hierher, um sie zu verstecken", "dragDropHide": "Ziehen Sie die Felder hierher, um sie zu verstecken",
"formInput": "Formularbezeichnung eingeben", "formInput": "Formularbezeichnung eingeben",
"formHelpText": "Einen Hilfs-Text hinzufügen", "formHelpText": "Einen Hilfs-Text hinzufügen",
@ -496,7 +497,8 @@
"emailReqd": "E-Mail ist erforderlich", "emailReqd": "E-Mail ist erforderlich",
"emailInvalid": "Email muß gültig sein", "emailInvalid": "Email muß gültig sein",
"passwdRequired": "Passwort ist erforderlich", "passwdRequired": "Passwort ist erforderlich",
"passwdLength": "Ihr Passwort muß mindestens 8 Zeichen haben" "passwdLength": "Ihr Passwort muß mindestens 8 Zeichen haben",
"passwdMismatch": "Passwörter stimmen nicht überein"
} }
}, },
"toast": { "toast": {

5
packages/nc-gui-v2/lang/en.json

@ -413,7 +413,7 @@
"deleteProject": "Do you want to delete the project?", "deleteProject": "Do you want to delete the project?",
"shareBasePrivate": "Generate publicly shareable readonly base", "shareBasePrivate": "Generate publicly shareable readonly base",
"shareBasePublic": "Anyone on the internet with this link can view", "shareBasePublic": "Anyone on the internet with this link can view",
"userInviteNoSMTP": "Looks like you have not configured mailer yet!\nPlease copy above invite link and send it to", "userInviteNoSMTP": "Looks like you have not configured mailer yet! Please copy above invite link and send it to",
"dragDropHide": "Drag and drop fields here to hide", "dragDropHide": "Drag and drop fields here to hide",
"formInput": "Enter form input label", "formInput": "Enter form input label",
"formHelpText": "Add some help text", "formHelpText": "Add some help text",
@ -497,7 +497,8 @@
"emailReqd": "E-mail is required", "emailReqd": "E-mail is required",
"emailInvalid": "E-mail must be valid", "emailInvalid": "E-mail must be valid",
"passwdRequired": "Password is required", "passwdRequired": "Password is required",
"passwdLength": "You password must be atleast 8 characters" "passwdLength": "You password must be atleast 8 characters",
"passwdMismatch": "Passwords do not match"
} }
}, },
"toast": { "toast": {

8
packages/nc-gui-v2/lang/es.json

@ -12,7 +12,7 @@
"add": "Agregar", "add": "Agregar",
"edit": "Editar", "edit": "Editar",
"remove": "Eliminar", "remove": "Eliminar",
"save": "Guardar", "save": "Salvar",
"cancel": "Cancelar", "cancel": "Cancelar",
"submit": "Enviar", "submit": "Enviar",
"create": "Crear", "create": "Crear",
@ -213,6 +213,7 @@
"sqlOutput": "Salida SQL", "sqlOutput": "Salida SQL",
"addOption": "Añadir opción", "addOption": "Añadir opción",
"aggregateFunction": "Función agregada", "aggregateFunction": "Función agregada",
"database": "Base de datos",
"dbCreateIfNotExists": "Base de datos : Crear si no existe", "dbCreateIfNotExists": "Base de datos : Crear si no existe",
"clientKey": "Clave de Cliente", "clientKey": "Clave de Cliente",
"clientCert": "Certificado de Cliente", "clientCert": "Certificado de Cliente",
@ -412,7 +413,7 @@
"deleteProject": "¿Quieres eliminar el proyecto?", "deleteProject": "¿Quieres eliminar el proyecto?",
"shareBasePrivate": "Generar una base de sólo lectura compartible públicamente", "shareBasePrivate": "Generar una base de sólo lectura compartible públicamente",
"shareBasePublic": "Cualquier persona en Internet con este enlace puede ver", "shareBasePublic": "Cualquier persona en Internet con este enlace puede ver",
"userInviteNoSMTP": "¡Parece que aún no has configurado Mailer!\nPor favor, copia el link de invitación de arriba y envíalo a", "userInviteNoSMTP": "¡Parece que aún no has configurado Mailer! Por favor, copia el link de invitación de arriba y envíalo a",
"dragDropHide": "Arrastra y suelta los campos a ocultar aquí", "dragDropHide": "Arrastra y suelta los campos a ocultar aquí",
"formInput": "Ingrese la etiqueta de entrada del formulario", "formInput": "Ingrese la etiqueta de entrada del formulario",
"formHelpText": "Añade algo de texto de ayuda", "formHelpText": "Añade algo de texto de ayuda",
@ -496,7 +497,8 @@
"emailReqd": "E-mail requerido", "emailReqd": "E-mail requerido",
"emailInvalid": "E-mail debe ser correcto", "emailInvalid": "E-mail debe ser correcto",
"passwdRequired": "Contraseña requerida", "passwdRequired": "Contraseña requerida",
"passwdLength": "Tu contraseña debe tener al menos 8 carácteres" "passwdLength": "Tu contraseña debe tener al menos 8 carácteres",
"passwdMismatch": "Las contraseñas no coinciden"
} }
}, },
"toast": { "toast": {

4
packages/nc-gui-v2/lang/fa.json

@ -213,6 +213,7 @@
"sqlOutput": "خروجی SQL", "sqlOutput": "خروجی SQL",
"addOption": "افزودن گزینه", "addOption": "افزودن گزینه",
"aggregateFunction": "تابع جمع", "aggregateFunction": "تابع جمع",
"database": "بخش پایگاه داده",
"dbCreateIfNotExists": "پایگاه داده: ایجاد در صورت عدم وجود", "dbCreateIfNotExists": "پایگاه داده: ایجاد در صورت عدم وجود",
"clientKey": "کلید Client", "clientKey": "کلید Client",
"clientCert": "گواهینامه Client", "clientCert": "گواهینامه Client",
@ -496,7 +497,8 @@
"emailReqd": "پست الکترونیکی مورد نیاز است", "emailReqd": "پست الکترونیکی مورد نیاز است",
"emailInvalid": "پست الکترونیکی باید معتبر باشد", "emailInvalid": "پست الکترونیکی باید معتبر باشد",
"passwdRequired": "کلمه عبور مورد نیاز است", "passwdRequired": "کلمه عبور مورد نیاز است",
"passwdLength": "کلمه عبور شما باید حداقل 8 کاراکتر داشته باشد" "passwdLength": "کلمه عبور شما باید حداقل 8 کاراکتر داشته باشد",
"passwdMismatch": "رمزهای ورود مطابقت ندارند"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/fi.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL-lähtö", "sqlOutput": "SQL-lähtö",
"addOption": "Lisää vaihtoehto", "addOption": "Lisää vaihtoehto",
"aggregateFunction": "Kokonaistoiminto", "aggregateFunction": "Kokonaistoiminto",
"database": "Tietokanta",
"dbCreateIfNotExists": "Tietokanta: Luo jos ei ole olemassa", "dbCreateIfNotExists": "Tietokanta: Luo jos ei ole olemassa",
"clientKey": "Asiakasnäppäin", "clientKey": "Asiakasnäppäin",
"clientCert": "Asiakassuhde", "clientCert": "Asiakassuhde",
@ -412,7 +413,7 @@
"deleteProject": "Haluatko poistaa projektin?", "deleteProject": "Haluatko poistaa projektin?",
"shareBasePrivate": "Luo julkisesti jakattava Readonly Base", "shareBasePrivate": "Luo julkisesti jakattava Readonly Base",
"shareBasePublic": "Jokainen Internetissä tällä linkillä voi tarkastella", "shareBasePublic": "Jokainen Internetissä tällä linkillä voi tarkastella",
"userInviteNoSMTP": "Näyttää siltä, ettet ole määrittänyt sähköpostia!\nKopioi yllä kutsun linkki ja lähetä se", "userInviteNoSMTP": "Näyttää siltä, ettet ole määrittänyt sähköpostia! Kopioi yllä kutsun linkki ja lähetä se",
"dragDropHide": "Vedä ja pudota kentät täällä piiloutumaan", "dragDropHide": "Vedä ja pudota kentät täällä piiloutumaan",
"formInput": "Anna lomakkeen syöttömerkki", "formInput": "Anna lomakkeen syöttömerkki",
"formHelpText": "Lisää joitain ohjeita", "formHelpText": "Lisää joitain ohjeita",
@ -496,7 +497,8 @@
"emailReqd": "Sähköposti vaaditaan", "emailReqd": "Sähköposti vaaditaan",
"emailInvalid": "Sähköpostin on oltava voimassa", "emailInvalid": "Sähköpostin on oltava voimassa",
"passwdRequired": "salasana tarvitaan", "passwdRequired": "salasana tarvitaan",
"passwdLength": "Salasanan on oltava vähintään 8 merkkiä" "passwdLength": "Salasanan on oltava vähintään 8 merkkiä",
"passwdMismatch": "Salasanat eivät täsmää"
} }
}, },
"toast": { "toast": {

120
packages/nc-gui-v2/lang/fr.json

@ -6,7 +6,7 @@
"close": "Fermer", "close": "Fermer",
"yes": "Oui", "yes": "Oui",
"no": "Non", "no": "Non",
"ok": "d'accord", "ok": "D'accord",
"and": "Et", "and": "Et",
"or": "Ou", "or": "Ou",
"add": "Ajouter", "add": "Ajouter",
@ -67,8 +67,8 @@
"columns": "Colonnes", "columns": "Colonnes",
"page": "Page", "page": "Page",
"pages": "Pages", "pages": "Pages",
"record": "Entrée", "record": "Ligne",
"records": "Entrées", "records": "Lignes",
"webhook": "Webhook", "webhook": "Webhook",
"webhooks": "Webhooks", "webhooks": "Webhooks",
"view": "Vue", "view": "Vue",
@ -89,7 +89,7 @@
"creator": "Créateur", "creator": "Créateur",
"editor": "Éditeur", "editor": "Éditeur",
"commenter": "Commentateur", "commenter": "Commentateur",
"viewer": "Spectateur" "viewer": "Lecture seule"
} }
}, },
"datatype": { "datatype": {
@ -104,44 +104,44 @@
"Collaborator": "Collaborateur", "Collaborator": "Collaborateur",
"Date": "Date", "Date": "Date",
"Year": "Année", "Year": "Année",
"Time": "Temps", "Time": "Heure",
"PhoneNumber": "Numéro de téléphone", "PhoneNumber": "Numéro de téléphone",
"Email": "Couriel", "Email": "Courriel",
"URL": "Lien URL", "URL": "URL",
"Number": "Nombre", "Number": "Nombre",
"Decimal": "Décimal", "Decimal": "Décimal",
"Currency": "Devise", "Currency": "Devise",
"Percent": "Pour cent", "Percent": "Pourcentage",
"Duration": "Durée", "Duration": "Durée",
"Rating": "Évaluation", "Rating": "Évaluation",
"Formula": "Formule", "Formula": "Formule",
"Rollup": "Synthèse", "Rollup": "Synthèse",
"Count": "Compteur", "Count": "Compteur",
"Lookup": "Chercher", "Lookup": "Lookup",
"DateTime": "Heure", "DateTime": "Date et heure",
"CreateTime": "Date de création", "CreateTime": "Date de création",
"LastModifiedTime": "Dernière modification", "LastModifiedTime": "Dernière modification",
"AutoNumber": "Numérotation automatique", "AutoNumber": "Numérotation automatique",
"Barcode": "Code barre", "Barcode": "Code-barres",
"Button": "Bouton", "Button": "Bouton",
"Password": "Mot de passe", "Password": "Mot de passe",
"relationProperties": { "relationProperties": {
"noAction": "Pas d'action", "noAction": "Pas d'action",
"cascade": "Chevauchement", "cascade": "Cascade",
"restrict": "Limité", "restrict": "Limiter",
"setNull": "Laisser vide", "setNull": "Laisser vide",
"setDefault": "Définir par defaut" "setDefault": "Définir comme défaut"
} }
}, },
"filterOperation": { "filterOperation": {
"isEqual": "est égale", "isEqual": "est égale",
"isNotEqual": "n'est pas égale", "isNotEqual": "n'est pas égale",
"isLike": "est comme", "isLike": "contient",
"isNot like": "N'est pas comme", "isNot like": "ne contient pas",
"isEmpty": "est vide", "isEmpty": "est vide",
"isNotEmpty": "n'est pas vide", "isNotEmpty": "n'est pas vide",
"isNull": "est null", "isNull": "est null",
"isNotNull": "est non nulle" "isNotNull": "est non null"
}, },
"title": { "title": {
"newProj": "Nouveau projet", "newProj": "Nouveau projet",
@ -152,7 +152,7 @@
"personalView": "Vue personnelle", "personalView": "Vue personnelle",
"appStore": "Magasin d'applications", "appStore": "Magasin d'applications",
"teamAndAuth": "Équipe & Authentification", "teamAndAuth": "Équipe & Authentification",
"rolesUserMgmt": "Rôles & Gestion utilisateurs", "rolesUserMgmt": "Gestion des utilisateurs & rôles",
"userMgmt": "Gestion des utilisateurs", "userMgmt": "Gestion des utilisateurs",
"apiTokenMgmt": "Gestion des jetons API", "apiTokenMgmt": "Gestion des jetons API",
"rolesMgmt": "Gestion des rôles", "rolesMgmt": "Gestion des rôles",
@ -170,9 +170,9 @@
"headCreateProject": "Créer un projet | Nocodb", "headCreateProject": "Créer un projet | Nocodb",
"headLogin": "Connexion | Nocodb", "headLogin": "Connexion | Nocodb",
"resetPassword": "Réinitialiser le mot de passe", "resetPassword": "Réinitialiser le mot de passe",
"teamAndSettings": "Team & Settings", "teamAndSettings": "Équipe & paramètres",
"apiDocs": "API Docs", "apiDocs": "API Docs",
"importFromAirtable": "Import From Airtable" "importFromAirtable": "Importer depuis Airtable"
}, },
"labels": { "labels": {
"notifyVia": "Notifier via", "notifyVia": "Notifier via",
@ -192,7 +192,7 @@
"port": "Numéro de port", "port": "Numéro de port",
"username": "Utilisateur", "username": "Utilisateur",
"password": "Mot de passe", "password": "Mot de passe",
"schemaName": "Schema name", "schemaName": "Nom du schéma",
"action": "Action", "action": "Action",
"actions": "Actions", "actions": "Actions",
"operation": "Opération", "operation": "Opération",
@ -213,9 +213,10 @@
"sqlOutput": "Sortie SQL", "sqlOutput": "Sortie SQL",
"addOption": "Ajouter une option", "addOption": "Ajouter une option",
"aggregateFunction": "Fonction agrégée", "aggregateFunction": "Fonction agrégée",
"database": "Base de données",
"dbCreateIfNotExists": "Base de données : la créer si elle n'existe pas", "dbCreateIfNotExists": "Base de données : la créer si elle n'existe pas",
"clientKey": "Clé client", "clientKey": "Clé client",
"clientCert": "Certificat Client", "clientCert": "Certificat client",
"serverCA": "Serveur d'authentification", "serverCA": "Serveur d'authentification",
"requriedCa": "Authentification requise", "requriedCa": "Authentification requise",
"requriedIdentity": "Identité requise", "requriedIdentity": "Identité requise",
@ -234,7 +235,7 @@
"followNocodb": "Suivre NocoDB" "followNocodb": "Suivre NocoDB"
}, },
"docReference": "Référence de document", "docReference": "Référence de document",
"selectUserRole": "Sélectionnez le rôle d'utilisateur", "selectUserRole": "Sélectionner le rôle d'utilisateur",
"childTable": "Table enfant", "childTable": "Table enfant",
"childColumn": "Colonne enfant", "childColumn": "Colonne enfant",
"onUpdate": "Mise à jour en cours", "onUpdate": "Mise à jour en cours",
@ -265,7 +266,7 @@
"translate": "Aider à la traduction", "translate": "Aider à la traduction",
"account": { "account": {
"authToken": "Copier le jeton d'authentification", "authToken": "Copier le jeton d'authentification",
"swagger": "APIS SWAGGER DOC", "swagger": "Doc Swagger de l'API",
"projInfo": "Copier les informations du projet", "projInfo": "Copier les informations du projet",
"themes": "Thèmes" "themes": "Thèmes"
}, },
@ -286,14 +287,14 @@
"newUser": "Nouvel utilisateur", "newUser": "Nouvel utilisateur",
"editUser": "Modifier l'utilisateur", "editUser": "Modifier l'utilisateur",
"deleteUser": "Supprimer l'utilisateur du projet", "deleteUser": "Supprimer l'utilisateur du projet",
"resendInvite": "Renvoyer une invitation par e-mail", "resendInvite": "Renvoyer une invitation par courriel",
"copyInviteURL": "Copier l'URL d'invitation", "copyInviteURL": "Copier l'URL d'invitation",
"newRole": "Nouveau rôle", "newRole": "Nouveau rôle",
"reloadRoles": "Actualiser les rôles", "reloadRoles": "Actualiser les rôles",
"nextPage": "Page suivante", "nextPage": "Page suivante",
"prevPage": "Page précédente", "prevPage": "Page précédente",
"nextRecord": "Prochain enregistrement", "nextRecord": "Ligne suivante",
"previousRecord": "Précédent enregistrement", "previousRecord": "Ligne précédente",
"copyApiURL": "Copier l'URL de l'API", "copyApiURL": "Copier l'URL de l'API",
"createTable": "Créer un tableau", "createTable": "Créer un tableau",
"refreshTable": "Actualiser le tableau", "refreshTable": "Actualiser le tableau",
@ -332,16 +333,16 @@
"copyUrl": "Copier le lien", "copyUrl": "Copier le lien",
"openTab": "Ouvrir nouvel onglet", "openTab": "Ouvrir nouvel onglet",
"iFrame": "Copier le code HTML intégré", "iFrame": "Copier le code HTML intégré",
"addWebhook": "Ajout de webhook", "addWebhook": "Ajout un webhook",
"newToken": "Ajout de nouveau jeton", "newToken": "Ajout un nouveau jeton",
"exportZip": "Exporter un zip", "exportZip": "Exporter un zip",
"importZip": "Importer un zip", "importZip": "Importer un zip",
"metaSync": "Synchroniser maintenant", "metaSync": "Synchroniser maintenant",
"settings": "Paramètres", "settings": "Paramètres",
"previewAs": "Aperçu", "previewAs": "Aperçu",
"resetReview": "Réinitiliser l'aperçu", "resetReview": "Réinitialiser l'aperçu",
"testDbConn": "Tester la connexion à la base de données", "testDbConn": "Tester la connexion à la base de données",
"removeDbFromEnv": "Supprimer la base de données de l'environement", "removeDbFromEnv": "Supprimer la base de données de l'environnement",
"editConnJson": "Éditer le JSON de connexion", "editConnJson": "Éditer le JSON de connexion",
"sponsorUs": "Nous Parrainer", "sponsorUs": "Nous Parrainer",
"sendEmail": "ENVOYER UN EMAIL" "sendEmail": "ENVOYER UN EMAIL"
@ -367,7 +368,7 @@
"sqlMigration": "Recharger des migrations", "sqlMigration": "Recharger des migrations",
"updateRestart": "Mettre à jour et redémarrer", "updateRestart": "Mettre à jour et redémarrer",
"cancelReturn": "Annuler et revenir en arrière", "cancelReturn": "Annuler et revenir en arrière",
"exportMetadata": "Exportez toutes les métadonnées des méta-tables vers le répertoire Meta.", "exportMetadata": "Exporter toutes les métadonnées des méta-tables vers le répertoire Meta.",
"importMetadata": "Importer toutes les métadonnées du répertoire Meta en méta-tables.", "importMetadata": "Importer toutes les métadonnées du répertoire Meta en méta-tables.",
"clearMetadata": "Effacer toutes les métadonnées des méta-tables.", "clearMetadata": "Effacer toutes les métadonnées des méta-tables.",
"clientKey": "Selectionner un fichier .key", "clientKey": "Selectionner un fichier .key",
@ -377,7 +378,7 @@
"placeholder": { "placeholder": {
"projName": "Saisir le nom du projet", "projName": "Saisir le nom du projet",
"password": { "password": {
"enter": "Saisie le mot de passe", "enter": "Saisir le mot de passe",
"current": "Mot de passe actuel", "current": "Mot de passe actuel",
"new": "Nouveau mot de passe", "new": "Nouveau mot de passe",
"save": "Enregistrer le mot de passe", "save": "Enregistrer le mot de passe",
@ -395,13 +396,13 @@
"msg": { "msg": {
"info": { "info": {
"footerInfo": "Lignes par page", "footerInfo": "Lignes par page",
"upload": "Sélectionnez un fichier à téléverser", "upload": "Sélectionner un fichier à téléverser",
"upload_sub": "ou glisser-déposer un fichier", "upload_sub": "ou glisser-déposer un fichier",
"excelSupport": "Pris en charge: .xls, .xlsx, .xlsm, .ods, .ots", "excelSupport": "Pris en charge: .xls, .xlsx, .xlsm, .ods, .ots",
"excelURL": "Entrez l'URL du fichier Excel", "excelURL": "Définir l'URL du fichier Excel",
"csvURL": "Enter CSV file URL", "csvURL": "Définir l'URL du CSV",
"footMsg": "Nombre de lignes à analyser pour déduire le type de données", "footMsg": "Nombre de lignes à analyser pour déduire le type de données",
"excelImport": "Les feuilles sont disponibles pour l'importation", "excelImport": "Les tableaux sont disponibles pour l'import",
"exportMetadata": "Voulez-vous exporter des métadonnées des méta-tables?", "exportMetadata": "Voulez-vous exporter des métadonnées des méta-tables?",
"importMetadata": "Voulez-vous importer des métadonnées des méta-tables?", "importMetadata": "Voulez-vous importer des métadonnées des méta-tables?",
"clearMetadata": "Voulez-vous effacer les métadonnées des méta-tables?", "clearMetadata": "Voulez-vous effacer les métadonnées des méta-tables?",
@ -412,12 +413,12 @@
"deleteProject": "Voulez-vous supprimer le projet ?", "deleteProject": "Voulez-vous supprimer le projet ?",
"shareBasePrivate": "Générer une base partagée en lecture seule", "shareBasePrivate": "Générer une base partagée en lecture seule",
"shareBasePublic": "Toute personne avec ce lien peut consulter", "shareBasePublic": "Toute personne avec ce lien peut consulter",
"userInviteNoSMTP": "On dirait que vous n'avez pas encore configuré Mailer!\nMerci de copier-coller le lien d'invitation ci-dessous et l'envoyer à", "userInviteNoSMTP": "On dirait que vous n'avez pas encore configuré Mailer!\\nMerci de copier-coller le lien d'invitation ci-dessous et l'envoyer à",
"dragDropHide": "Glisser et déposer des champs ici pour masquer", "dragDropHide": "Glisser et déposer des champs ici pour les masquer",
"formInput": "Entrer le libelé du formulaire", "formInput": "Entrer le libellé du formulaire",
"formHelpText": "Ajouter du texte d'assitance", "formHelpText": "Ajouter un texte d'aide",
"onlyCreator": "Visible uniquement pour les créateurs", "onlyCreator": "Visible uniquement pour les créateurs",
"formDesc": "Ajouter un formulaire de description", "formDesc": "Ajouter une description du formulaire",
"beforeEnablePwd": "Restreindre l’accès à l’aide d’un mot de passe", "beforeEnablePwd": "Restreindre l’accès à l’aide d’un mot de passe",
"afterEnablePwd": "L’accès est restreint par un mot de passe", "afterEnablePwd": "L’accès est restreint par un mot de passe",
"privateLink": "Cette vue est partagée avec un lien privé", "privateLink": "Cette vue est partagée avec un lien privé",
@ -437,20 +438,20 @@
"personalView": "Seulement vous pouvez modifier la configuration de la vue. Les autres vues personnelles des collaborateurs sont cachées par défaut.", "personalView": "Seulement vous pouvez modifier la configuration de la vue. Les autres vues personnelles des collaborateurs sont cachées par défaut.",
"ownerDesc": "Peut ajouter / supprimer des créateurs. Et éditer des structures de base de données complètes et des champs.", "ownerDesc": "Peut ajouter / supprimer des créateurs. Et éditer des structures de base de données complètes et des champs.",
"creatorDesc": "Peut éditer complètement la structure de la base de données et les valeurs.", "creatorDesc": "Peut éditer complètement la structure de la base de données et les valeurs.",
"editorDesc": "Peut éditer des enregistrements mais ne peut pas modifier la structure de la base de données / des champs.", "editorDesc": "Peut éditer des lignes mais ne peut pas modifier la structure de la base de données / des champs.",
"commenterDesc": "Peut voir et commenter les archives mais ne peut rien éditer", "commenterDesc": "Peut voir et commenter les archives mais ne peut rien éditer",
"viewerDesc": "Peut voir les enregistrements mais ne peut rien éditer", "viewerDesc": "Peut voir les données mais ne peut rien éditer",
"addUser": "Ajouter un nouvel utilisateur", "addUser": "Ajouter un nouvel utilisateur",
"staticRoleInfo": "Les rôles définis du système ne peuvent pas être modifiés", "staticRoleInfo": "Les rôles définis sur le système ne peuvent pas être modifiés",
"exportZip": "Exporter le meta projet dans un fichier Zip et le télécharger.", "exportZip": "Exporter le meta projet dans un fichier Zip et le télécharger.",
"importZip": "Importer le fichier ZIP du meta projet et redémarrer.", "importZip": "Importer le fichier ZIP du meta projet et redémarrer.",
"importText": "Importer un projet NocoDB à partir d'un fichier ZIP de métadonnées", "importText": "Importer un projet NocoDB à partir d'un fichier ZIP de métadonnées",
"metaNoChange": "Aucun changement identifié", "metaNoChange": "Aucun changement identifié",
"sqlMigration": "Les migrations de schéma seront créées automatiquement. Créez une table et rafraîchissez cette page.", "sqlMigration": "Les migrations de schéma seront créées automatiquement. Créez une table et rafraîchissez cette page.",
"dbConnectionStatus": "Environnement validé", "dbConnectionStatus": "Environnement validé",
"dbConnected": "Connexion réussi", "dbConnected": "Connexion réussie",
"notifications": { "notifications": {
"no_new": "Pas de nouvelles notifications", "no_new": "Pas de nouvelle notification",
"clear": "Effacer" "clear": "Effacer"
}, },
"sponsor": { "sponsor": {
@ -459,14 +460,14 @@
}, },
"loginMsg": "Se connecter à NocoDB", "loginMsg": "Se connecter à NocoDB",
"passwordRecovery": { "passwordRecovery": {
"message_1": "Veuillez fournir l'adresse e-mail que vous avez utilisée lorsque vous vous êtes inscrit.", "message_1": "Veuillez fournir l'adresse mail que vous avez utilisée lorsque vous vous êtes inscrit.",
"message_2": "Nous vous enverrons un email avec un lien pour réinitialiser votre mot de passe.", "message_2": "Nous vous enverrons un courriel avec un lien pour réinitialiser votre mot de passe.",
"success": "Veuillez vérifier votre email pour réinitialiser le mot de passe" "success": "Veuillez vérifier votre email pour réinitialiser le mot de passe"
}, },
"signUp": { "signUp": {
"superAdmin": "Vous serez le 'super admin'", "superAdmin": "Vous serez le 'super admin'",
"alreadyHaveAccount": "Avez-vous déjà un compte ?", "alreadyHaveAccount": "Avez-vous déjà un compte ?",
"workEmail": "Saisir votre adresse email professionnel", "workEmail": "Saisir votre adresse mail professionnelle",
"enterPassword": "Saisir votre mot de passe", "enterPassword": "Saisir votre mot de passe",
"forgotPassword": "Mot de passe oublié ?", "forgotPassword": "Mot de passe oublié ?",
"dontHaveAccount": "Vous n'avez pas de compte ?" "dontHaveAccount": "Vous n'avez pas de compte ?"
@ -479,13 +480,13 @@
"calendar": "Ajouter une vue Calendrier" "calendar": "Ajouter une vue Calendrier"
}, },
"tablesMetadataInSync": "Les métadonnées de tables sont en synchronisation", "tablesMetadataInSync": "Les métadonnées de tables sont en synchronisation",
"addMultipleUsers": "Vous pouvez ajouter plusieurs courriels séparés de virgule (,)", "addMultipleUsers": "Vous pouvez ajouter plusieurs courriels séparés par des virgules (,)",
"enterTableName": "Entrez le nom de la table", "enterTableName": "Entrer le nom de la table",
"addDefaultColumns": "Ajouter des colonnes par défaut", "addDefaultColumns": "Ajouter des colonnes par défaut",
"tableNameInDb": "Nom de la table comme enregistré dans la base de données" "tableNameInDb": "Nom de la table tel qu'enregistré dans la base de données"
}, },
"error": { "error": {
"searchProject": "Votre recherche pour {search} n'a renvoyée aucun résultat", "searchProject": "Votre recherche pour {search} n'a renvoyé aucun résultat",
"invalidChar": "Caractère invalide dans le chemin du dossier.", "invalidChar": "Caractère invalide dans le chemin du dossier.",
"invalidDbCredentials": "Identifiants de base de données invalides.", "invalidDbCredentials": "Identifiants de base de données invalides.",
"unableToConnectToDb": "Connexion impossible à la base de données, merci de vérifier que la base de données est démarrée et accessible.", "unableToConnectToDb": "Connexion impossible à la base de données, merci de vérifier que la base de données est démarrée et accessible.",
@ -496,13 +497,14 @@
"emailReqd": "Adresse mail requise", "emailReqd": "Adresse mail requise",
"emailInvalid": "L'adresse mail doit être valide", "emailInvalid": "L'adresse mail doit être valide",
"passwdRequired": "Mot de passe requis", "passwdRequired": "Mot de passe requis",
"passwdLength": "Votre mot de passe doit contenir au moins 8 caractères" "passwdLength": "Votre mot de passe doit contenir au moins 8 caractères",
"passwdMismatch": "Les mots de passe ne correspondent pas"
} }
}, },
"toast": { "toast": {
"exportMetadata": "Les métadonnées de projet sont exportée avec succès", "exportMetadata": "Les métadonnées de projet sont exportées avec succès",
"importMetadata": "Les métadonnées du projet sont importée avec succès", "importMetadata": "Les métadonnées du projet sont importées avec succès",
"clearMetadata": "Les métadonnées du projet sont effacée avec succès", "clearMetadata": "Les métadonnées du projet sont effacées avec succès",
"stopProject": "Projet arrêté avec succès", "stopProject": "Projet arrêté avec succès",
"startProject": "Projet démarré avec succès", "startProject": "Projet démarré avec succès",
"restartProject": "Projet redémarré avec succès", "restartProject": "Projet redémarré avec succès",
@ -510,7 +512,7 @@
"authToken": "Auth Token copié dans le presse-papier", "authToken": "Auth Token copié dans le presse-papier",
"projInfo": "Informations de projet copiées dans le presse-papier", "projInfo": "Informations de projet copiées dans le presse-papier",
"inviteUrlCopy": "URL d'invitation copiée dans le presse-papier", "inviteUrlCopy": "URL d'invitation copiée dans le presse-papier",
"createView": "Vue créé avec succès", "createView": "Vue créée avec succès",
"formEmailSMTP": "Veuillez activer le plugin SMTP dans l'App Store pour permettre la notification par courrier électronique", "formEmailSMTP": "Veuillez activer le plugin SMTP dans l'App Store pour permettre la notification par courrier électronique",
"collabView": "Vous êtes bien dans la vue collaborative", "collabView": "Vous êtes bien dans la vue collaborative",
"lockedView": "Vous êtes bien dans la vue vérouillée", "lockedView": "Vous êtes bien dans la vue vérouillée",

6
packages/nc-gui-v2/lang/hr.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL izlaz", "sqlOutput": "SQL izlaz",
"addOption": "Dodajte opciju", "addOption": "Dodajte opciju",
"aggregateFunction": "Agregatna funkcija", "aggregateFunction": "Agregatna funkcija",
"database": "Baza podataka",
"dbCreateIfNotExists": "Baza podataka: stvoriti ako ne postoji", "dbCreateIfNotExists": "Baza podataka: stvoriti ako ne postoji",
"clientKey": "Ključ klijenta", "clientKey": "Ključ klijenta",
"clientCert": "Klijent cert", "clientCert": "Klijent cert",
@ -412,7 +413,7 @@
"deleteProject": "Želite li izbrisati projekt?", "deleteProject": "Želite li izbrisati projekt?",
"shareBasePrivate": "Generirajte javno zajedničko upravljanje", "shareBasePrivate": "Generirajte javno zajedničko upravljanje",
"shareBasePublic": "Svatko na internetu s ovom linkom može vidjeti", "shareBasePublic": "Svatko na internetu s ovom linkom može vidjeti",
"userInviteNoSMTP": "Izgleda da još niste konfigurirali mailer! n Molimo kopirajte iznad poziva veze i pošaljite ga na", "userInviteNoSMTP": "Izgleda da još niste konfigurirali mailer! Molimo kopirajte iznad poziva veze i pošaljite ga na",
"dragDropHide": "Povucite i ispustite polja za skrivanje", "dragDropHide": "Povucite i ispustite polja za skrivanje",
"formInput": "Unesite oznaku ulazne obrasce", "formInput": "Unesite oznaku ulazne obrasce",
"formHelpText": "Dodajte neki tekst pomoći", "formHelpText": "Dodajte neki tekst pomoći",
@ -496,7 +497,8 @@
"emailReqd": "Potrebna je e-pošta", "emailReqd": "Potrebna je e-pošta",
"emailInvalid": "E-pošta mora biti valjana", "emailInvalid": "E-pošta mora biti valjana",
"passwdRequired": "potrebna je lozinka", "passwdRequired": "potrebna je lozinka",
"passwdLength": "Vi lozinka mora biti najmanje 8 znakova" "passwdLength": "Vi lozinka mora biti najmanje 8 znakova",
"passwdMismatch": "Lozinke se ne podudaraju"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/id.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL Output", "sqlOutput": "SQL Output",
"addOption": "Tambahkan opsi", "addOption": "Tambahkan opsi",
"aggregateFunction": "Fungsi agregat.", "aggregateFunction": "Fungsi agregat.",
"database": "Basis Data",
"dbCreateIfNotExists": "Basis Data: Buat jika tidak ada", "dbCreateIfNotExists": "Basis Data: Buat jika tidak ada",
"clientKey": "Kunci klien", "clientKey": "Kunci klien",
"clientCert": "Sertifikat klien", "clientCert": "Sertifikat klien",
@ -412,7 +413,7 @@
"deleteProject": "Apakah Anda ingin menghapus proyek?", "deleteProject": "Apakah Anda ingin menghapus proyek?",
"shareBasePrivate": "Menghasilkan basis readonly yang dapat dibagikan secara publik", "shareBasePrivate": "Menghasilkan basis readonly yang dapat dibagikan secara publik",
"shareBasePublic": "Siapa pun di Internet dengan tautan ini dapat dilihat", "shareBasePublic": "Siapa pun di Internet dengan tautan ini dapat dilihat",
"userInviteNoSMTP": "Sepertinya Anda belum mengonfigurasi mailer!\nHarap salin tautan undangan di atas dan kirimkan ke", "userInviteNoSMTP": "Sepertinya Anda belum mengonfigurasi mailer! Harap salin tautan undangan di atas dan kirimkan ke",
"dragDropHide": "Seret dan jatuhkan bidang di sini untuk bersembunyi", "dragDropHide": "Seret dan jatuhkan bidang di sini untuk bersembunyi",
"formInput": "Masukkan label input formulir", "formInput": "Masukkan label input formulir",
"formHelpText": "Tambahkan beberapa teks bantuan", "formHelpText": "Tambahkan beberapa teks bantuan",
@ -496,7 +497,8 @@
"emailReqd": "E-mail diperlukan", "emailReqd": "E-mail diperlukan",
"emailInvalid": "E-mail harus valid", "emailInvalid": "E-mail harus valid",
"passwdRequired": "katakunci dibutuhkan", "passwdRequired": "katakunci dibutuhkan",
"passwdLength": "Kata sandi Anda harus minimal 8 karakter" "passwdLength": "Kata sandi Anda harus minimal 8 karakter",
"passwdMismatch": "Sandi tidak cocok"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/it_IT.json

@ -213,6 +213,7 @@
"sqlOutput": "Output SQL", "sqlOutput": "Output SQL",
"addOption": "Aggiungi opzione", "addOption": "Aggiungi opzione",
"aggregateFunction": "Aggrega funzione", "aggregateFunction": "Aggrega funzione",
"database": "Database",
"dbCreateIfNotExists": "Database: crea se non esiste", "dbCreateIfNotExists": "Database: crea se non esiste",
"clientKey": "Chiave client", "clientKey": "Chiave client",
"clientCert": "Certificato client", "clientCert": "Certificato client",
@ -412,7 +413,7 @@
"deleteProject": "Vuoi cancellare il progetto?", "deleteProject": "Vuoi cancellare il progetto?",
"shareBasePrivate": "Genera base readonly condivisibile pubblicamente", "shareBasePrivate": "Genera base readonly condivisibile pubblicamente",
"shareBasePublic": "Chiunque su Internet con questo link può visualizzare", "shareBasePublic": "Chiunque su Internet con questo link può visualizzare",
"userInviteNoSMTP": "Sembra che non abbia ancora configurato il mailer! \\n Manda il link d'invito sopra a", "userInviteNoSMTP": "Sembra che non abbia ancora configurato il mailer! Manda il link d'invito sopra a",
"dragDropHide": "Rilascia qui i campi da nascondere", "dragDropHide": "Rilascia qui i campi da nascondere",
"formInput": "Inserisci l'etichetta di input del modulo", "formInput": "Inserisci l'etichetta di input del modulo",
"formHelpText": "Aggiungi testo di aiuto", "formHelpText": "Aggiungi testo di aiuto",
@ -496,7 +497,8 @@
"emailReqd": "L'e-mail è richiesta", "emailReqd": "L'e-mail è richiesta",
"emailInvalid": "L'email deve essere valida", "emailInvalid": "L'email deve essere valida",
"passwdRequired": "È richiesta la password", "passwdRequired": "È richiesta la password",
"passwdLength": "La tua password deve essere di almeno 8 caratteri" "passwdLength": "La tua password deve essere di almeno 8 caratteri",
"passwdMismatch": "le passwords non corrispondono"
} }
}, },
"toast": { "toast": {

24
packages/nc-gui-v2/lang/iw.json

@ -151,7 +151,7 @@
"lockedView": "תצוגה נעולה", "lockedView": "תצוגה נעולה",
"personalView": "תצוגה אישית", "personalView": "תצוגה אישית",
"appStore": "חנות אפליקציות", "appStore": "חנות אפליקציות",
"teamAndAuth": "צוות & auth.", "teamAndAuth": "Team & Auth",
"rolesUserMgmt": "תפקידים & ניהול משתמשים", "rolesUserMgmt": "תפקידים & ניהול משתמשים",
"userMgmt": "ניהול משתמשים", "userMgmt": "ניהול משתמשים",
"apiTokenMgmt": "API Tokens Management", "apiTokenMgmt": "API Tokens Management",
@ -162,14 +162,14 @@
"exportImportMeta": "Export/ Import Metadata", "exportImportMeta": "Export/ Import Metadata",
"uiACL": "בקרת גישה לממשק UI.", "uiACL": "בקרת גישה לממשק UI.",
"metaOperations": "פעולות מטא נתונים", "metaOperations": "פעולות מטא נתונים",
"audit": "בְּדִיקָה", "audit": "Audit",
"auditLogs": "יומן ביקורת", "auditLogs": "Audit Log",
"sqlMigrations": "SQL הגבלות", "sqlMigrations": "SQL Migrations",
"dbCredentials": "אישורי מסד נתונים", "dbCredentials": "Database Credentials",
"advancedParameters": "SSL & פרמטרים מתקדמים", "advancedParameters": "SSL & Advanced parameters",
"headCreateProject": "יצירת פרויקט נוקודב", "headCreateProject": "יצירת פרויקט",
"headLogin": "התחבר | נוקודב", "headLogin": "התחבר",
"resetPassword": "לאפס את הסיסמה שלך", "resetPassword": "איפוס סיסמא",
"teamAndSettings": "Team & Settings", "teamAndSettings": "Team & Settings",
"apiDocs": "API Docs", "apiDocs": "API Docs",
"importFromAirtable": "Import From Airtable" "importFromAirtable": "Import From Airtable"
@ -213,6 +213,7 @@
"sqlOutput": "פלט SQL", "sqlOutput": "פלט SQL",
"addOption": "הוסף אפשרות", "addOption": "הוסף אפשרות",
"aggregateFunction": "פונקציה מצטברת", "aggregateFunction": "פונקציה מצטברת",
"database": "מאגר מידע",
"dbCreateIfNotExists": "מסד נתונים: צור אם לא קיים", "dbCreateIfNotExists": "מסד נתונים: צור אם לא קיים",
"clientKey": "מפתח הלקוח", "clientKey": "מפתח הלקוח",
"clientCert": "Client Cert.", "clientCert": "Client Cert.",
@ -412,7 +413,7 @@
"deleteProject": "האם ברצונך למחוק את הפרויקט?", "deleteProject": "האם ברצונך למחוק את הפרויקט?",
"shareBasePrivate": "ליצור בסיס שיתוף פעולה לציבור", "shareBasePrivate": "ליצור בסיס שיתוף פעולה לציבור",
"shareBasePublic": "כל אחד באינטרנט עם קישור זה יכול להציג", "shareBasePublic": "כל אחד באינטרנט עם קישור זה יכול להציג",
"userInviteNoSMTP": "נראה כאילו לא הגדרת מיילר עדיין!\nאנא העתק מעל הזמנת קישור ולשלוח אותו", "userInviteNoSMTP": "נראה כאילו לא הגדרת מיילר עדיין! \\ N אנא העתק מעל הזמנת קישור ולשלוח אותו",
"dragDropHide": "גרור ושחרר שדות כאן כדי להסתיר", "dragDropHide": "גרור ושחרר שדות כאן כדי להסתיר",
"formInput": "הזן תווית קלט טופס", "formInput": "הזן תווית קלט טופס",
"formHelpText": "הוסף טקסט עזרה", "formHelpText": "הוסף טקסט עזרה",
@ -496,7 +497,8 @@
"emailReqd": "דואר אלקטרוני נדרש", "emailReqd": "דואר אלקטרוני נדרש",
"emailInvalid": "דואר אלקטרוני חייב להיות תקף", "emailInvalid": "דואר אלקטרוני חייב להיות תקף",
"passwdRequired": "דרושה סיסמא", "passwdRequired": "דרושה סיסמא",
"passwdLength": "הסיסמה שלך חייבת להיות atleast 8 תווים" "passwdLength": "הסיסמה שלך חייבת להיות atleast 8 תווים",
"passwdMismatch": "סיסמאות לא תואמות"
} }
}, },
"toast": { "toast": {

4
packages/nc-gui-v2/lang/ja.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL出力", "sqlOutput": "SQL出力",
"addOption": "オプションを追加", "addOption": "オプションを追加",
"aggregateFunction": "集約関数", "aggregateFunction": "集約関数",
"database": "データベース",
"dbCreateIfNotExists": "データベース:存在しない場合は作成", "dbCreateIfNotExists": "データベース:存在しない場合は作成",
"clientKey": "クライアントキー", "clientKey": "クライアントキー",
"clientCert": "クライアント証明書", "clientCert": "クライアント証明書",
@ -496,7 +497,8 @@
"emailReqd": "メールアドレスが必要です", "emailReqd": "メールアドレスが必要です",
"emailInvalid": "有効なメールアドレスを入力してください", "emailInvalid": "有効なメールアドレスを入力してください",
"passwdRequired": "パスワードが必要です", "passwdRequired": "パスワードが必要です",
"passwdLength": "パスワードは8文字以上にしてください" "passwdLength": "パスワードは8文字以上にしてください",
"passwdMismatch": "パスワードが一致していません"
} }
}, },
"toast": { "toast": {

444
packages/nc-gui-v2/lang/ko.json

@ -1,84 +1,84 @@
{ {
"general": { "general": {
"home": "", "home": "",
"load": "", "load": "불러오기",
"open": "열려있는", "open": "열",
"close": "닫", "close": "닫",
"yes": "네", "yes": "네",
"no": "아니요", "no": "아니요",
"ok": "확인", "ok": "확인",
"and": "그리고", "and": "그리고",
"or": "또는", "or": "또는",
"add": "추가하다", "add": "추가",
"edit": "편집하다", "edit": "편집",
"remove": "제거하다", "remove": "제거",
"save": "구하다", "save": "저장",
"cancel": "취소", "cancel": "취소",
"submit": "제출하다", "submit": "제출",
"create": "생성", "create": "생성",
"insert": "끼워 넣다", "insert": "삽입",
"delete": "삭제", "delete": "삭제",
"update": "업데이트", "update": "업데이트",
"rename": "이름 바꾸기", "rename": "이름 바꾸기",
"reload": "재 장전", "reload": "다시 불러오기",
"reset": "초기화", "reset": "초기화",
"install": "설치", "install": "설치",
"show": "보여 주다", "show": "표시",
"hide": "숨", "hide": "숨기기",
"showAll": "모두 표시", "showAll": "모두 표시",
"hideAll": "모두 숨기기", "hideAll": "모두 숨기기",
"showMore": "자세히보기", "showMore": "자세히 보기",
"showOptions": " 옵션", "showOptions": "보기 옵션",
"hideOptions": "옵션 숨기기", "hideOptions": "옵션 숨기기",
"showMenu": "메뉴 표시", "showMenu": "메뉴 표시",
"hideMenu": "메뉴 숨기기", "hideMenu": "메뉴 숨기기",
"addAll": "모두 추가하십시오", "addAll": "모두 추가",
"removeAll": "모두 제거", "removeAll": "모두 제거",
"signUp": "가입하기", "signUp": "가입하기",
"signIn": "로그인", "signIn": "로그인",
"signOut": "로그 아웃하십시오", "signOut": "로그아웃",
"required": "필수의", "required": "필수의",
"preferred": "우선의", "preferred": "우선의",
"mandatory": "필수적인", "mandatory": "필수적인",
"loading": "...에 적재 ...", "loading": "불러오는 중 ...",
"title": "제목", "title": "제목",
"upload": "업로드", "upload": "업로드",
"download": "... 다운로드하기", "download": "다운로드",
"default": "기본", "default": "기본",
"more": "", "more": "기타",
"less": "더 적은", "less": "더 적은",
"event": "이벤트", "event": "이벤트",
"condition": "상태", "condition": "상태",
"after": "후에", "after": "후에",
"before": "전에", "before": "전에",
"search": "검색", "search": "검색",
"notification": "공고", "notification": "알림",
"reference": "참조", "reference": "참조",
"function": "함수" "function": "기능"
}, },
"objects": { "objects": {
"project": "프로젝트", "project": "프로젝트",
"projects": "프로젝트", "projects": "프로젝트",
"table": "테이블", "table": "테이블",
"tables": "테이블", "tables": "테이블",
"field": "", "field": "필드",
"fields": "필드", "fields": "필드",
"column": "열", "column": "열",
"columns": "열", "columns": "열",
"page": "페이지", "page": "페이지",
"pages": "페이지", "pages": "페이지",
"record": "기록", "record": "레코드",
"records": "기록", "records": "레코드",
"webhook": "웹후의", "webhook": "웹",
"webhooks": "WebHooks.", "webhooks": "웹훅",
"view": "보다", "view": "",
"views": "보기", "views": "",
"viewType": { "viewType": {
"grid": "그리드", "grid": "그리드",
"gallery": "갤러리", "gallery": "갤러리",
"form": "양식", "form": "",
"kanban": "Kanban", "kanban": "칸반",
"calendar": "달력" "calendar": "캘린더"
}, },
"user": "사용자", "user": "사용자",
"users": "사용자", "users": "사용자",
@ -86,7 +86,7 @@
"roles": "역할", "roles": "역할",
"roleType": { "roleType": {
"owner": "소유자", "owner": "소유자",
"creator": "창조자", "creator": "생성자",
"editor": "편집자", "editor": "편집자",
"commenter": "해설자", "commenter": "해설자",
"viewer": "뷰어" "viewer": "뷰어"
@ -94,14 +94,14 @@
}, },
"datatype": { "datatype": {
"ID": "ID", "ID": "ID",
"ForeignKey": "외 키", "ForeignKey": "외 키",
"SingleLineText": "단일 줄 텍스트", "SingleLineText": " 줄 텍스트",
"LongText": "긴 텍스트", "LongText": "긴 텍스트",
"Attachment": "부", "Attachment": "부",
"Checkbox": "체크 박스", "Checkbox": "체크 박스",
"MultiSelect": "다중 선택", "MultiSelect": "다중 선택",
"SingleSelect": "단일 선택", "SingleSelect": "단일 선택",
"Collaborator": "협력자", "Collaborator": "동료",
"Date": "날짜", "Date": "날짜",
"Year": "년도", "Year": "년도",
"Time": "시간", "Time": "시간",
@ -112,44 +112,44 @@
"Decimal": "소수", "Decimal": "소수",
"Currency": "통화", "Currency": "통화",
"Percent": "퍼센트", "Percent": "퍼센트",
"Duration": "지속", "Duration": "기간",
"Rating": "평가", "Rating": "등급",
"Formula": "공식", "Formula": "공식",
"Rollup": "롤업", "Rollup": "롤업",
"Count": "세다", "Count": "카운트",
"Lookup": "조회", "Lookup": "조회",
"DateTime": "날짜 시간", "DateTime": "일시",
"CreateTime": "시간을 만드십시오", "CreateTime": "생성시간",
"LastModifiedTime": "마지막 수정 된 시간", "LastModifiedTime": "최종수정시간",
"AutoNumber": "자동 번호", "AutoNumber": "자동번호",
"Barcode": "바코드", "Barcode": "바코드",
"Button": "단추", "Button": "버튼",
"Password": "비밀번호", "Password": "비밀번호",
"relationProperties": { "relationProperties": {
"noAction": "조치 없음", "noAction": "조치없음",
"cascade": "종속", "cascade": "캐스케이드",
"restrict": "얽매다", "restrict": "제한",
"setNull": "null.", "setNull": "null 설정",
"setDefault": "기본값으로 설정" "setDefault": "기본값 설정"
} }
}, },
"filterOperation": { "filterOperation": {
"isEqual": "~는 같다", "isEqual": "is equal",
"isNotEqual": "같지 않다", "isNotEqual": "is not equal",
"isLike": "처럼", "isLike": "is like",
"isNot like": "아닙니다", "isNot like": "is not like",
"isEmpty": "비었다", "isEmpty": "is empty",
"isNotEmpty": "비어 있지 않습니다", "isNotEmpty": "is not empty",
"isNull": "null입니다", "isNull": "is null",
"isNotNull": "null이 아닙니다" "isNotNull": "is not null"
}, },
"title": { "title": {
"newProj": "새 프로젝트", "newProj": "새 프로젝트",
"myProject": "내 프로젝트", "myProject": "내 프로젝트",
"formTitle": "양식 제목", "formTitle": "양식 제목",
"collabView": "협업보기", "collabView": "공동작업 뷰",
"lockedView": "잠긴보기", "lockedView": "\b잠긴 뷰",
"personalView": "개인적인 견해", "personalView": "개인",
"appStore": "앱 스토어", "appStore": "앱 스토어",
"teamAndAuth": "팀 및 인증", "teamAndAuth": "팀 및 인증",
"rolesUserMgmt": "역할 및 사용자 관리", "rolesUserMgmt": "역할 및 사용자 관리",
@ -159,32 +159,32 @@
"projMeta": "프로젝트 메타 데이터", "projMeta": "프로젝트 메타 데이터",
"metaMgmt": "메타 관리", "metaMgmt": "메타 관리",
"metadata": "메타 데이터", "metadata": "메타 데이터",
"exportImportMeta": "내보내기 / 가져 오기 메타 데이터", "exportImportMeta": "메타 데이터 내보내기/가져오기 ",
"uiACL": "UI 액세스 제어", "uiACL": "UI 액세스 제어",
"metaOperations": "메타 데이터 작업", "metaOperations": "메타 데이터 작업",
"audit": "사", "audit": "사",
"auditLogs": "감사 로그", "auditLogs": "감사 로그",
"sqlMigrations": "SQL 마이그레이션", "sqlMigrations": "SQL 마이그레이션",
"dbCredentials": "데이터베이스 자격 증명", "dbCredentials": "데이터베이스 자격 증명",
"advancedParameters": "SSL 및 고급 매개 변수", "advancedParameters": "SSL 및 고급 매개 변수",
"headCreateProject": "프로젝트 만들기 | nocodb.", "headCreateProject": "프로젝트 만들기 | nocoDB",
"headLogin": "로그인 | NocoDB.", "headLogin": "로그인 | NocoDB",
"resetPassword": "비밀번호 재설정", "resetPassword": "비밀번호 재설정",
"teamAndSettings": "Team & Settings", "teamAndSettings": "팀 & 설정",
"apiDocs": "API Docs", "apiDocs": "API 문서",
"importFromAirtable": "Import From Airtable" "importFromAirtable": "Airtable에서 불러오기"
}, },
"labels": { "labels": {
"notifyVia": "통지를 통지합니다", "notifyVia": "공지",
"projName": "프로젝트 이름", "projName": "프로젝트 이름",
"tableName": " 이름", "tableName": "테이블 이름",
"viewName": "이름을 봅니다", "viewName": "이름 보기",
"viewLink": "링크보기", "viewLink": "링크 보기",
"columnName": "열 이름", "columnName": "열 이름",
"columnType": "열 유형", "columnType": "열 유형",
"roleName": "역할 이름", "roleName": "역할 이름",
"roleDescription": "역할 설명", "roleDescription": "역할 설명",
"databaseType": "데이터베이스 입력하십시오", "databaseType": "데이터베이스 입력",
"lengthValue": "길이 / 값", "lengthValue": "길이 / 값",
"dbType": "데이터베이스 유형", "dbType": "데이터베이스 유형",
"sqliteFile": "SQLite 파일", "sqliteFile": "SQLite 파일",
@ -192,57 +192,58 @@
"port": "포트 번호", "port": "포트 번호",
"username": "사용자 이름", "username": "사용자 이름",
"password": "비밀번호", "password": "비밀번호",
"schemaName": "Schema name", "schemaName": "스키마 이름",
"action": "동작", "action": "동작",
"actions": "행위", "actions": "행위",
"operation": "작업", "operation": "작업",
"operationType": "작 유형", "operationType": "작 유형",
"operationSubType": "작 하위 유형", "operationSubType": "작 하위 유형",
"description": "설명", "description": "설명",
"authentication": "증", "authentication": "증",
"token": "토큰", "token": "토큰",
"where": "어디에", "where": "위치",
"cache": "은닉처", "cache": "캐시",
"chat": "채팅", "chat": "채팅",
"email": "이메일", "email": "이메일",
"storage": "저장", "storage": "스토리지",
"uiAcl": "UI-ACL", "uiAcl": "UI-ACL",
"models": "모델", "models": "모델",
"syncState": "동기화 상태", "syncState": "동기화 상태",
"created": "만들어진", "created": "생성",
"sqlOutput": "SQL 출력", "sqlOutput": "SQL 출력",
"addOption": "옵션 추가", "addOption": "옵션 추가",
"aggregateFunction": "집계 기능", "aggregateFunction": "집합 함수",
"database": "데이터 베이스",
"dbCreateIfNotExists": "데이터베이스 : 존재하지 않는 경우 생성", "dbCreateIfNotExists": "데이터베이스 : 존재하지 않는 경우 생성",
"clientKey": "클라이언트 키", "clientKey": "클라이언트 키",
"clientCert": "클라이언트 Cert.", "clientCert": "클라이언트 Cert.",
"serverCA": "서버 CA.", "serverCA": "서버 CA",
"requriedCa": "필수 -CA", "requriedCa": "필수 CA",
"requriedIdentity": "필수 - IDENTITY", "requriedIdentity": "필수 - IDENTITY",
"inflection": { "inflection": {
"tableName": "편집 - 표 이름", "tableName": "편집 - 표 이름",
"columnName": "편집 - 열 이름" "columnName": "편집 - 열 이름"
}, },
"community": { "community": {
"starUs1": "", "starUs1": "",
"starUs2": "우리는 github에 있습니다", "starUs2": "Github",
"bookDemo": "무료 데모 예약하십시오", "bookDemo": "무료 데모 예약",
"getAnswered": "귀하의 질문에 답변 해주십시오", "getAnswered": "디스코드",
"joinDiscord": "디스코드 참가", "joinDiscord": "디스코드 참가",
"joinCommunity": "Join NocoDB Community", "joinCommunity": "NocoDB 커뮤니티 참가",
"joinReddit": "가입 /r/NocoDB", "joinReddit": "Join /r/NocoDB",
"followNocodb": "NocoDB 팔로우 하세요" "followNocodb": "NocoDB 팔로우"
}, },
"docReference": "문서 참조", "docReference": "참조 문서",
"selectUserRole": "사용자 역할을 선택하십시오", "selectUserRole": "사용자 역할을 선택하세요",
"childTable": "하위 테이블", "childTable": "자식 테이블",
"childColumn": "아이 칼럼", "childColumn": "자식 컬럼",
"onUpdate": "업데이트시", "onUpdate": "업데이트 ",
"onDelete": "삭제" "onDelete": "삭제"
}, },
"activity": { "activity": {
"createProject": "프로젝트 생성", "createProject": "프로젝트 생성",
"importProject": "프로젝트 가져 오기", "importProject": "프로젝트 가져오기",
"searchProject": "프로젝트 검색", "searchProject": "프로젝트 검색",
"editProject": "프로젝트 편집", "editProject": "프로젝트 편집",
"stopProject": "프로젝트 중지", "stopProject": "프로젝트 중지",
@ -250,46 +251,46 @@
"restartProject": "프로젝트 재시작", "restartProject": "프로젝트 재시작",
"deleteProject": "프로젝트 삭제", "deleteProject": "프로젝트 삭제",
"refreshProject": "프로젝트 새로 고침", "refreshProject": "프로젝트 새로 고침",
"saveProject": "프로젝트를 저장하다", "saveProject": "저장",
"createProjectExtended": { "createProjectExtended": {
"extDB": "외부 데이터베이스에 <br>을 연결하여 작성하십시오", "extDB": "외부 데이터베이스 연결",
"excel": "Excel에서 프로젝트 만들기", "excel": "엑셀에서 프로젝트 만들기",
"template": "템플릿에서 프로젝트를 만듭니다" "template": "템플릿에서 프로젝트 만들기"
}, },
"OkSaveProject": "OK 및 저장 프로젝트", "OkSaveProject": "확인 및 프로젝트 저장",
"upgrade": { "upgrade": {
"available": "업그레이드 가능", "available": "업그레이드 가능",
"releaseNote": "릴리즈 노트", "releaseNote": "릴리즈 노트",
"howTo": "업그레이드 방법?" "howTo": "어떻게 업그레이드 하나요?"
}, },
"translate": "도움말 번역", "translate": "도움말 번역",
"account": { "account": {
"authToken": "인증 토큰 복사하십시오", "authToken": "인증 토큰 복사",
"swagger": "Swagger API Doc.", "swagger": "Swagger API Doc.",
"projInfo": "프로젝트 정보 복사하십시오", "projInfo": "프로젝트 정보 복사",
"themes": "테마" "themes": "테마"
}, },
"sort": "종류", "sort": "종류",
"addSort": "정렬 옵션 추가하십시오", "addSort": "정렬 옵션 추가",
"filter": "필터", "filter": "필터",
"addFilter": "필터 추가하십시오", "addFilter": "필터 추가",
"share": "공유하다", "share": "공유",
"shareBase": { "shareBase": {
"disable": "공유베이스 비활성화합니다", "disable": "공유 베이스 비활성화",
"enable": "링크가있는 사람", "enable": "링크가 있는 모든 사용자",
"link": "공유 기본 링크" "link": "공유 링크"
}, },
"invite": "초대", "invite": "초대",
"inviteMore": "더 많은 것을 초대하십시오", "inviteMore": "더 많은 사람 초대",
"inviteTeam": "팀 초대하십시오", "inviteTeam": "팀 초대",
"inviteToken": "토큰을 초대하십시오", "inviteToken": "초대 토큰",
"newUser": "새로운 사용자", "newUser": "사용자 추가",
"editUser": "사용자 편집", "editUser": "사용자 편집",
"deleteUser": "사용자를 프로젝트에서 제거하십시오", "deleteUser": "사용자 제거",
"resendInvite": "초대 이메일을 다시 보내십시오", "resendInvite": "초대 이메일 재전송",
"copyInviteURL": "초대 URL 복사", "copyInviteURL": "초대 URL 복사",
"newRole": "새로운 역할", "newRole": "새로운 역할",
"reloadRoles": "다시로드 역할", "reloadRoles": "역할 다시 불러오기",
"nextPage": "다음 페이지", "nextPage": "다음 페이지",
"prevPage": "이전 페이지", "prevPage": "이전 페이지",
"nextRecord": "다음 기록", "nextRecord": "다음 기록",
@ -299,16 +300,16 @@
"refreshTable": "테이블 새로 고침", "refreshTable": "테이블 새로 고침",
"renameTable": "테이블 이름 바꾸기", "renameTable": "테이블 이름 바꾸기",
"deleteTable": "테이블 삭제", "deleteTable": "테이블 삭제",
"addField": "이 표에 새 필드를 추가하십시오", "addField": "테이블에 새 필드 추가",
"setPrimary": "기본값으로 설정하십시오", "setPrimary": "Primary value로 설정",
"addRow": " 추가하십시오", "addRow": "행 추가",
"saveRow": "행 저장하십시오", "saveRow": "행 저장",
"insertRow": " 삽입하십시오", "insertRow": "행 삽입",
"deleteRow": "행 삭제", "deleteRow": "행 삭제",
"deleteSelectedRow": "선택한 행 삭제합니다", "deleteSelectedRow": "선택한 행 삭제",
"importExcel": "수입 Excel", "importExcel": "엑셀 가져오기",
"importCSV": "Import CSV", "importCSV": "CSV 가져오기",
"downloadCSV": "CSV 다운로드하십시오", "downloadCSV": "CSV 다운로드",
"uploadCSV": "CSV 업로드", "uploadCSV": "CSV 업로드",
"import": "가져오기", "import": "가져오기",
"importMetadata": "메타 데이터 가져오기", "importMetadata": "메타 데이터 가져오기",
@ -316,24 +317,24 @@
"clearMetadata": "메타 데이터 지우기", "clearMetadata": "메타 데이터 지우기",
"exportToFile": "파일로 내보내기", "exportToFile": "파일로 내보내기",
"changePwd": "암호 변경", "changePwd": "암호 변경",
"createView": "보기 생성", "createView": " 생성",
"shareView": "보기 공유", "shareView": " 공유",
"listSharedView": "공유보기 목록", "listSharedView": "공유 목록",
"ListView": "보기 목록", "ListView": " 목록",
"copyView": "보기 복사", "copyView": " 복사",
"renameView": "보기 이름 변경", "renameView": " 이름 변경",
"deleteView": "보기 삭제", "deleteView": " 삭제",
"createGrid": "그리드보기를 만듭니다", "createGrid": "그리드 뷰 생성",
"createGallery": "갤러리보기 만들기", "createGallery": "갤러리 뷰 생성",
"createCalendar": "캘린더보기를 만듭니다", "createCalendar": "캘린더 뷰 생성",
"createKanban": "Kanban보기를 만드십시오", "createKanban": "칸반 뷰 생성",
"createForm": "양식보기를 만듭니다", "createForm": "폼 뷰 생성",
"showSystemFields": "시스템 필드 표시", "showSystemFields": "시스템 필드 표시",
"copyUrl": "URL 복사", "copyUrl": "URL 복사",
"openTab": "새 탭을 엽니 다", "openTab": "새 탭 열기",
"iFrame": "복사 Embeddable HTML 코드를 복사하십시오", "iFrame": "임베드 가능한 HTML 코드 복사",
"addWebhook": "새로운 웹 호크를 추가하십시오", "addWebhook": "새 웹훅 추가",
"newToken": "새 토큰 추가하십시오", "newToken": "새 토큰 추가",
"exportZip": "zip 파일 내보내기", "exportZip": "zip 파일 내보내기",
"importZip": "zip 파일 가져오기", "importZip": "zip 파일 가져오기",
"metaSync": "지금 동기화", "metaSync": "지금 동기화",
@ -341,32 +342,32 @@
"previewAs": "미리보기", "previewAs": "미리보기",
"resetReview": "미리보기 재설정", "resetReview": "미리보기 재설정",
"testDbConn": "데이터베이스 연결 테스트", "testDbConn": "데이터베이스 연결 테스트",
"removeDbFromEnv": "환경에서 데이터베이스 제거하십시오", "removeDbFromEnv": "환경에서 데이터베이스 제거",
"editConnJson": "연결 편집 JSON.", "editConnJson": "연결 JSON 편집",
"sponsorUs": "우리를 후원하십시오", "sponsorUs": "후원",
"sendEmail": "이메일 보내기" "sendEmail": "이메일 보내기"
}, },
"tooltip": { "tooltip": {
"saveChanges": "변경 사항 저장하다", "saveChanges": "변경 사항 저장",
"xcDB": "새 프로젝트를 만듭니다", "xcDB": "새 프로젝트 생성",
"extDB": "MySQL, PostgreSQL, SQL Server 및 SQLite 지원합니다", "extDB": "MySQL, PostgreSQL, SQL Server 및 SQLite 지원",
"apiRest": "REST API를 통해 액세스 가능", "apiRest": "REST API를 통해 액세스 가능",
"apiGQL": "Graphql Apis를 통해 액세스 가능", "apiGQL": "Graphql Apis를 통해 액세스 가능",
"theme": { "theme": {
"dark": "그것은 검은 색으로옵니다 (^ ⇧b)", "dark": "현재 다크 테마입니다(^ ⇧b)",
"light": "검은 색으로 들어 오는가? (^ ⇧b)" "light": "다크 테마로 바꿀까요?(^ ⇧b)"
}, },
"addTable": "새 테이블 추가하십시오", "addTable": "새 테이블 추가",
"inviteMore": "더 많은 사용자 초대하십시오", "inviteMore": "더 많은 사용자 초대",
"toggleNavDraw": "네비게이션 서랍을 토글합니다", "toggleNavDraw": "네비게이션 바 토글",
"reloadApiToken": "API 토큰을 다시로드하십시오", "reloadApiToken": "API 토큰 다시 불러오기",
"generateNewApiToken": "새 API 토큰 생성", "generateNewApiToken": "새 API 토큰 생성",
"addRole": "새로운 역할 추가하십시오", "addRole": "새로운 역할 추가",
"reloadList": "Reload List.", "reloadList": "목록 다시 불러오기",
"metaSync": "동기화 메타 데이터", "metaSync": "동기화 메타 데이터",
"sqlMigration": "다시로드 이전", "sqlMigration": "마이그레이션 다시 불러오기",
"updateRestart": "업데이트 및 다시 시작", "updateRestart": "업데이트 및 다시 시작",
"cancelReturn": "취소 및 되돌리기", "cancelReturn": "취소",
"exportMetadata": "메타 테이블에서 메타 디렉토리로 모든 메타 데이터를 내보냅니다.", "exportMetadata": "메타 테이블에서 메타 디렉토리로 모든 메타 데이터를 내보냅니다.",
"importMetadata": "모든 메타 데이터를 메타 디렉토리에서 메타 테이블로 가져옵니다.", "importMetadata": "모든 메타 데이터를 메타 디렉토리에서 메타 테이블로 가져옵니다.",
"clearMetadata": "메타 테이블에서 모든 메타 데이터를 지우십시오.", "clearMetadata": "메타 테이블에서 모든 메타 데이터를 지우십시오.",
@ -383,19 +384,19 @@
"save": "비밀번호 저장", "save": "비밀번호 저장",
"confirm": "새 암호를 확인합니다" "confirm": "새 암호를 확인합니다"
}, },
"searchProjectTree": "검색 테이블", "searchProjectTree": "테이블 검색",
"searchFields": "검색 필드", "searchFields": "필드 검색",
"searchColumn": "검색 {검색} 컬럼", "searchColumn": "{검색} 컬럼 검색",
"searchApps": "검색 앱 검색", "searchApps": "앱 검색",
"searchModels": "검색 모델", "searchModels": "모델 검색",
"noItemsFound": "제품을 찾지 못했습니다", "noItemsFound": "제품을 찾지 못했습니다",
"defaultValue": "기본값", "defaultValue": "기본값",
"filterByEmail": "전자 메일로 필터링합니다" "filterByEmail": "전자 메일로 필터링"
}, },
"msg": { "msg": {
"info": { "info": {
"footerInfo": "페이지 당 행", "footerInfo": "페이지 당 행",
"upload": "업로드 할 파일 선택하십시오", "upload": "업로드 할 파일 선택",
"upload_sub": "또는 끌어서 놓기 파일", "upload_sub": "또는 끌어서 놓기 파일",
"excelSupport": "지원 : .xls, .xlsx, .xlsm, .ods, .ots", "excelSupport": "지원 : .xls, .xlsx, .xlsm, .ods, .ots",
"excelURL": "Excel 파일 URL을 입력하십시오", "excelURL": "Excel 파일 URL을 입력하십시오",
@ -412,40 +413,40 @@
"deleteProject": "프로젝트를 삭제 하시겠습니까?", "deleteProject": "프로젝트를 삭제 하시겠습니까?",
"shareBasePrivate": "공개적으로 공유 할 수있는 ReadOnly Base를 생성합니다", "shareBasePrivate": "공개적으로 공유 할 수있는 ReadOnly Base를 생성합니다",
"shareBasePublic": "이 링크가있는 인터넷의 모든 사람은 볼 수 있습니다", "shareBasePublic": "이 링크가있는 인터넷의 모든 사람은 볼 수 있습니다",
"userInviteNoSMTP": "아직 메일러를 구성하지 않은 것처럼 보입니다!\n초대장 링크를 복사하여 보냅니다.", "userInviteNoSMTP": "아직 메일러를 구성하지 않은 것처럼 보입니다! 초대장 링크를 복사하여 보냅니다.",
"dragDropHide": "여기에서 필드를 드래그 앤 드롭하십시오", "dragDropHide": "여기에서 필드를 드래그 앤 드롭하십시오",
"formInput": "양식 입력 레이블 입력하십시오", "formInput": "양식 입력 레이블 입력",
"formHelpText": "도움말 텍스트 추가하십시오", "formHelpText": "도움말 텍스트 추가",
"onlyCreator": "작성자에게만 표시됩니다", "onlyCreator": "작성자에게만 표시",
"formDesc": "양식 설명 추가", "formDesc": "양식 설명 추가",
"beforeEnablePwd": "비밀번호로 액세스 제한", "beforeEnablePwd": "비밀번호로 액세스 제한",
"afterEnablePwd": "엑세스 비밀번호 제한되어 있습니다.", "afterEnablePwd": "엑세스 비밀번호 제한",
"privateLink": "현재 보기가 비공개 링크를 통해 공유됩니다.", "privateLink": "비공개 링크로 현재 뷰 공유",
"privateLinkAdditionalInfo": "비공개 링크가 있는 사용자는 현재 보기에서 표시되는 셀만 볼 수 있습니다.", "privateLinkAdditionalInfo": "비공개 링크가 있는 사용자는 현재 보기에서 표시되는 셀만 볼 수 있습니다.",
"afterFormSubmitted": "양식이 제출 된 후", "afterFormSubmitted": "양식이 제출 된 후",
"apiOptions": "프로젝트 via에 액세스하십시오", "apiOptions": "프로젝트 via에 액세스하십시오",
"submitAnotherForm": "'다른 양식 제출'버튼을 보여줍니다", "submitAnotherForm": "'다른 양식 제출'버튼을 보여줍니다",
"showBlankForm": "5 초 후에 빈 양식을 보여줍니다", "showBlankForm": "5 초 후에 빈 양식을 보여줍니다",
"emailForm": "나에게 이메일을 보내주십시오", "emailForm": "이메일로 공유",
"showSysFields": "시스템 필드 표시", "showSysFields": "시스템 필드 표시",
"filterAutoApply": "자동 적용", "filterAutoApply": "자동 적용",
"showMessage": "이 메시지를 표시하십시오", "showMessage": "아래 메시지 표시",
"viewNotShared": "현재보기가 공유되지 않습니다!", "viewNotShared": "현재가 공유되지 않습니다!",
"showAllViews": "이 표의 모든 공유보기를 보여줍니다", "showAllViews": "테이블의 공유된 모든 뷰 표시",
"collabView": "편집 권한 이상이있는 공동 작업자는 뷰 구성을 변경할 수 있습니다.", "collabView": "편집 권한 이상의 권한을 보유한 공동 작업자는 뷰 구성을 변경할 수 있습니다.",
"lockedView": "아무도 잠금 해제 될 때까지 뷰 구성을 편집 할 수 없습니다.", "lockedView": "아무도 잠금 해제 될 때까지 뷰 구성을 편집할 수 없습니다.",
"personalView": "보기 구성을 편집 할 수 있습니다. 다른 공동 작업자의 개인 뷰는 기본적으로 숨겨져 있습니다.", "personalView": "뷰 구성을 편집할 수 있습니다. 다른 공동 작업자의 개인 뷰는 기본적으로 표시되지 않습니다. ",
"ownerDesc": "크리에이터를 추가 / 제거 할 수 있습니다. 및 전체 편집 데이터베이스 구조 및 필드.", "ownerDesc": "크리에이터를 추가 / 제거 할 수 있습니다. 및 전체 편집 데이터베이스 구조 및 필드.",
"creatorDesc": "데이터베이스 구조 및 값을 완전히 편집 할 수 있습니다.", "creatorDesc": "데이터베이스 구조 및 값을 완전히 편집 할 수 있습니다.",
"editorDesc": "레코드를 편집 할 수 있지만 데이터베이스 / 필드의 구조를 변경할 수 없습니다.", "editorDesc": "레코드를 편집할 수 있지만 데이터베이스 / 필드의 구조를 변경할 수 없습니다.",
"commenterDesc": "레코드를보고 댓글을 줄 수는 있지만 아무 것도 편집 할 수 없습니다.", "commenterDesc": "레코드를 보고 댓글을 추가할 수 있지만 아무 것도 편집 할 수 없습니다.",
"viewerDesc": "레코드를 볼 수 있지만 아무 것도 편집 할 수 없습니다", "viewerDesc": "레코드를 볼 수 있지만 아무 것도 편집 할 수 없습니다",
"addUser": "새 사용자 추가", "addUser": "새 사용자 추가",
"staticRoleInfo": "시스템 정의 역할을 편집 할 수 없습니다", "staticRoleInfo": "시스템 정의 역할을 편집할 수 없습니다",
"exportZip": "프로젝트 메타를 zip 파일로 내보내고 다운로드하십시오.", "exportZip": "프로젝트 메타를 zip 파일로 내보내고 다운로드하십시오.",
"importZip": "프로젝트 메타 zip 파일을 가져와서 다시 시작하십시오.", "importZip": "프로젝트 메타 zip 파일을 가져와서 다시 시작하십시오.",
"importText": "메타 데이터 zip 파일을 업로드하여 NocoDB 프로젝트를 가져옵니다", "importText": "메타 데이터 zip 파일을 업로드하여 NocoDB 프로젝트를 가져옵니다",
"metaNoChange": "변경되지 않습니다", "metaNoChange": "변경된 사항이 없습니다. ",
"sqlMigration": "스키마 마이그레이션이 자동으로 생성됩니다. 테이블을 만들고이 페이지를 새로 고칩니다.", "sqlMigration": "스키마 마이그레이션이 자동으로 생성됩니다. 테이블을 만들고이 페이지를 새로 고칩니다.",
"dbConnectionStatus": "환경 검증", "dbConnectionStatus": "환경 검증",
"dbConnected": "연결 되었습니다.", "dbConnected": "연결 되었습니다.",
@ -455,66 +456,67 @@
}, },
"sponsor": { "sponsor": {
"header": "당신은 우리를 도울 수 있습니다!", "header": "당신은 우리를 도울 수 있습니다!",
"message": "우리는 nocodb 오픈 소스를 만들기 위해 풀 타임으로 일하는 작은 팀입니다. 우리는 NocodB와 같은 도구가 인터넷의 모든 문제 해결사에게 자유롭게 사용할 수 있어야합니다." "message": "우리는 nocodb 오픈 소스를 만들기 위해 구성된 소규모 팀입니다. 우리는 NocodB와 같은 도구가 인터넷의 다양한 문제를 해결하는 데 자유롭게 사용할 수 있어야 한다고 믿습니다. "
}, },
"loginMsg": "NocoDB 로그인하십시오", "loginMsg": "NocoDB 로그인",
"passwordRecovery": { "passwordRecovery": {
"message_1": "가입 할 때 사용한 이메일 주소를 입력하십시오.", "message_1": "가입할 때 사용한 이메일 주소를 입력하십시오.",
"message_2": "이메일을 통해 비밀번호를 재설정할 링크를 보내드리겠습니다.", "message_2": "이메일을 통해 비밀번호를 재설정할 링크를 보내드리겠습니다.",
"success": "이메일을 확인하여 암호를 재설정하십시오" "success": "이메일을 확인하여 암호를 재설정하십시오"
}, },
"signUp": { "signUp": {
"superAdmin": "당신은 'Super Admin'가 될 것입니다.", "superAdmin": "당신은 'Super Admin'가 될 것입니다.",
"alreadyHaveAccount": "이미 계정이 있습니까?", "alreadyHaveAccount": "이미 계정이 있습니까?",
"workEmail": "작업 이메일을 입력하십시오", "workEmail": "이메일을 입력하십시오",
"enterPassword": "비밀번호를 입력하십시오", "enterPassword": "비밀번호를 입력하십시오",
"forgotPassword": "비밀번호를 잊어 버렸습니까 ?", "forgotPassword": "비밀번호를 잊어 버렸습니까 ?",
"dontHaveAccount": "계정이 없습니까?" "dontHaveAccount": "계정이 없습니까?"
}, },
"addView": { "addView": {
"grid": "그리드 보기를 추가하십시오", "grid": "그리드 뷰 추가",
"gallery": "갤러리 보기를 추가하십시오", "gallery": "갤러리 뷰 추가",
"form": "양식 보기를 추가하십시오", "form": "폼 뷰 추가",
"kanban": "Kanban 보기를 추가하십시오", "kanban": "칸반 뷰 추가",
"calendar": "달력 보기를 추가하십시오" "calendar": "캘린더 뷰 추가"
}, },
"tablesMetadataInSync": "테이블 메타 데이터가 동기화되어 있습니다", "tablesMetadataInSync": "테이블 메타 데이터가 동기화되어 있습니다",
"addMultipleUsers": "여러 쉼표 (,) 분리 된 이메일을 추가 할 수 있습니다.", "addMultipleUsers": "쉼표로 분리된 이메일을 여러 개 추가할 수 있습니다.",
"enterTableName": "테이블 이름을 입력하십시오", "enterTableName": "테이블 이름을 입력하십시오",
"addDefaultColumns": "기본 열 추가하십시오", "addDefaultColumns": "기본 열 추가",
"tableNameInDb": "테이블 이름은 데이터베이스에 저장된 것입니다" "tableNameInDb": "테이블 이름은 데이터베이스에 저장된 것입니다"
}, },
"error": { "error": {
"searchProject": "{검색} 검색 결과가 없습니다", "searchProject": "검색 결과가 없습니다",
"invalidChar": "잘못된 폴더 경로입니다.", "invalidChar": "잘못된 폴더 경로입니다.",
"invalidDbCredentials": "데이터베이스 자격 증명 오류.", "invalidDbCredentials": "데이터베이스 자격 증명 오류",
"unableToConnectToDb": "데이터베이스에 연결할 수 없습니다. 데이터베이스 작동을 확인하십시오.", "unableToConnectToDb": "데이터베이스에 연결할 수 없습니다. 데이터베이스 상태를 확인하십시오.",
"userDoesntHaveSufficientPermission": "사용자가 존재하지 않거나 schema를 만들 수있는 충분한 권한이 있습니다.", "userDoesntHaveSufficientPermission": "사용자가 존재하지 않거나 스키마를 만들 수있는 충분한 권한이 있습니다.",
"dbConnectionStatus": "잘못된 데이터베이스 매개 변수", "dbConnectionStatus": "잘못된 데이터베이스 매개 변수",
"dbConnectionFailed": "연결 실패 :", "dbConnectionFailed": "연결 실패 :",
"signUpRules": { "signUpRules": {
"emailReqd": "이메일이 필요합니다", "emailReqd": "이메일이 필요합니다.",
"emailInvalid": "이메일이 유효해야합니다", "emailInvalid": "이메일이 유효해야합니다.",
"passwdRequired": "비밀번호가 필요합니다", "passwdRequired": "비밀번호가 필요합니다.",
"passwdLength": "비밀번호는 8자 이상이어야 합니다." "passwdLength": "비밀번호는 8자 이상이어야 합니다.",
"passwdMismatch": "비밀번호가 일치하지 않습니다"
} }
}, },
"toast": { "toast": {
"exportMetadata": "프로젝트 메타 데이터가 성공적으로 내 보냈습니다", "exportMetadata": "프로젝트 메타 데이터를 성공적으로 내보냈습니다.",
"importMetadata": "프로젝트 메타 데이터가 성공적으로 가져온 것입니다", "importMetadata": "프로젝트 메타 데이터를 성공적으로 가져왔습니다.",
"clearMetadata": "프로젝트 메타 데이터가 성공적으로 지워졌습니다", "clearMetadata": "프로젝트 메타 데이터를 성공적으로 지웠습니다.",
"stopProject": "프로젝트가 성공적으로 중지되었습니다", "stopProject": "프로젝트가 성공적으로 중지되었습니다.",
"startProject": "프로젝트가 성공적으로 시작되었습니다", "startProject": "프로젝트가 성공적으로 시작되었습니다.",
"restartProject": "프로젝트가 성공적으로 다시 시작되었습니다", "restartProject": "프로젝트가 성공적으로 다시 시작되었습니다.",
"deleteProject": "프로젝트가 성공적으로 삭제되었습니다", "deleteProject": "프로젝트가 성공적으로 삭제되었습니다.",
"authToken": "인증 토큰이 클립 보드에 복사되었습니다", "authToken": "인증 토큰이 클립보드에 복사되었습니다.",
"projInfo": "클립 보드에 복사 된 프로젝트 정보", "projInfo": "프로젝트 정보가 클립보드에 복사되었습니다. ",
"inviteUrlCopy": "복사 된 초대 URL 클립 보드에", "inviteUrlCopy": "초대 URL 클립보드에 복사되었습니다. ",
"createView": "성공적으로 생성 된보기", "createView": "뷰가 성공적으로 생성되었습니다. ",
"formEmailSMTP": "전자 메일 알림을 사용하려면 App Store에서 SMTP 플러그인을 활성화하십시오.", "formEmailSMTP": "메일 알림을 사용하려면 App Store에서 SMTP 플러그인을 활성화 하십시오.",
"collabView": "공동 작업로 성공적으로 전환했습니다", "collabView": "공동 작업로 성공적으로 전환했습니다",
"lockedView": "잠긴보기로 성공적으로 전환되었습니다", "lockedView": "잠긴로 성공적으로 전환되었습니다",
"futureRelease": "곧 올 것입니다!" "futureRelease": "Coming soon!"
} }
} }
} }

6
packages/nc-gui-v2/lang/lv.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL izvade", "sqlOutput": "SQL izvade",
"addOption": "Pievienot iespēju", "addOption": "Pievienot iespēju",
"aggregateFunction": "Agregācijas funkcija", "aggregateFunction": "Agregācijas funkcija",
"database": "Datubāze",
"dbCreateIfNotExists": "Datubāze : izveidotm ja neeksistē", "dbCreateIfNotExists": "Datubāze : izveidotm ja neeksistē",
"clientKey": "Klienta atslēga", "clientKey": "Klienta atslēga",
"clientCert": "Klienta sertifikāts", "clientCert": "Klienta sertifikāts",
@ -412,7 +413,7 @@
"deleteProject": "Vai tu vēlies dzēst projektu?", "deleteProject": "Vai tu vēlies dzēst projektu?",
"shareBasePrivate": "Izveidot koplietojamu saiti", "shareBasePrivate": "Izveidot koplietojamu saiti",
"shareBasePublic": "Jebkurš ar šo saiti varēs skatīt", "shareBasePublic": "Jebkurš ar šo saiti varēs skatīt",
"userInviteNoSMTP": "E-pasta nosūtītājs vēl nav konfigurēts! \\n Lūdzu kopējiet uzaicinājuma saiti augstāk un nosūtiet to", "userInviteNoSMTP": "E-pasta nosūtītājs vēl nav konfigurēts! Lūdzu kopējiet uzaicinājuma saiti augstāk un nosūtiet to",
"dragDropHide": "Vilkt un nomest laukus šeit lai noņemtu", "dragDropHide": "Vilkt un nomest laukus šeit lai noņemtu",
"formInput": "Ievadiet formas ievades lauka birku", "formInput": "Ievadiet formas ievades lauka birku",
"formHelpText": "Pievienot norādījumus", "formHelpText": "Pievienot norādījumus",
@ -496,7 +497,8 @@
"emailReqd": "E-pasts ir obligāts", "emailReqd": "E-pasts ir obligāts",
"emailInvalid": "E-pastam ir jābūt korektam", "emailInvalid": "E-pastam ir jābūt korektam",
"passwdRequired": "Parole ir obligāta", "passwdRequired": "Parole ir obligāta",
"passwdLength": "Parolei jābūt vismaz 8 simboli" "passwdLength": "Parolei jābūt vismaz 8 simboli",
"passwdMismatch": "Paroles nesakrīt"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/nl.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL Uitvoer", "sqlOutput": "SQL Uitvoer",
"addOption": "Optie toevoegen", "addOption": "Optie toevoegen",
"aggregateFunction": "Geaggregeerde functie", "aggregateFunction": "Geaggregeerde functie",
"database": "Database",
"dbCreateIfNotExists": "Database: creëer als het niet bestaat", "dbCreateIfNotExists": "Database: creëer als het niet bestaat",
"clientKey": "Client Key", "clientKey": "Client Key",
"clientCert": "Client Cert", "clientCert": "Client Cert",
@ -412,7 +413,7 @@
"deleteProject": "Wilt u het project verwijderen?", "deleteProject": "Wilt u het project verwijderen?",
"shareBasePrivate": "Genereer openbaar deelbare alleen-lezen database", "shareBasePrivate": "Genereer openbaar deelbare alleen-lezen database",
"shareBasePublic": "Iedereen op het internet met deze link kan bekijken", "shareBasePublic": "Iedereen op het internet met deze link kan bekijken",
"userInviteNoSMTP": "Het lijkt erop dat je nog geen mailer hebt geconfigureerd! \\n Kopieer de bovenstaande uitnodigingslink en verstuur deze zelf naar de ontvanger", "userInviteNoSMTP": "Het lijkt erop dat je nog geen mailer hebt geconfigureerd! Kopieer de bovenstaande uitnodigingslink en verstuur deze zelf naar de ontvanger",
"dragDropHide": "Versleep de velden naar hier om ze te verbergen", "dragDropHide": "Versleep de velden naar hier om ze te verbergen",
"formInput": "Voer formulier invoerlabel in", "formInput": "Voer formulier invoerlabel in",
"formHelpText": "Voeg wat hulptekst toe", "formHelpText": "Voeg wat hulptekst toe",
@ -496,7 +497,8 @@
"emailReqd": "E-mail is vereist", "emailReqd": "E-mail is vereist",
"emailInvalid": "E-mail moet geldig zijn", "emailInvalid": "E-mail moet geldig zijn",
"passwdRequired": "Wachtwoord is verplicht", "passwdRequired": "Wachtwoord is verplicht",
"passwdLength": "Je wachtwoord moet ten minste 8 tekens hebben" "passwdLength": "Je wachtwoord moet ten minste 8 tekens hebben",
"passwdMismatch": "Wachtwoorden komen niet overeen"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/no.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL-utgang", "sqlOutput": "SQL-utgang",
"addOption": "Legg til alternativ", "addOption": "Legg til alternativ",
"aggregateFunction": "Samlet funksjon", "aggregateFunction": "Samlet funksjon",
"database": "Database",
"dbCreateIfNotExists": "Database: Opprett hvis ikke eksisterer", "dbCreateIfNotExists": "Database: Opprett hvis ikke eksisterer",
"clientKey": "Klientnøkkel", "clientKey": "Klientnøkkel",
"clientCert": "Klientsertifikat", "clientCert": "Klientsertifikat",
@ -412,7 +413,7 @@
"deleteProject": "Ønsker du å slette prosjektet?", "deleteProject": "Ønsker du å slette prosjektet?",
"shareBasePrivate": "Generer offentlig delbar readonly base", "shareBasePrivate": "Generer offentlig delbar readonly base",
"shareBasePublic": "Alle på Internett med denne lenken kan se", "shareBasePublic": "Alle på Internett med denne lenken kan se",
"userInviteNoSMTP": "Ser ut som om du ikke har konfigurert mailer ennå!\nVennligst kopier over Inviter Link og send den til", "userInviteNoSMTP": "Ser ut som om du ikke har konfigurert mailer ennå! Vennligst kopier over Inviter Link og send den til",
"dragDropHide": "Dra og slipp felt her for å skjule", "dragDropHide": "Dra og slipp felt her for å skjule",
"formInput": "Skriv inn skjema inngangsetikett", "formInput": "Skriv inn skjema inngangsetikett",
"formHelpText": "Legg til litt hjelpetekst", "formHelpText": "Legg til litt hjelpetekst",
@ -496,7 +497,8 @@
"emailReqd": "E-post er nødvendig", "emailReqd": "E-post er nødvendig",
"emailInvalid": "E-post må være gyldig", "emailInvalid": "E-post må være gyldig",
"passwdRequired": "Passord er påkrevd", "passwdRequired": "Passord er påkrevd",
"passwdLength": "Ditt passord må være minst 8 tegn" "passwdLength": "Ditt passord må være minst 8 tegn",
"passwdMismatch": "passordene er ikke like"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/pl.json

@ -213,6 +213,7 @@
"sqlOutput": "Wyjście SQL.", "sqlOutput": "Wyjście SQL.",
"addOption": "Dodaj opcję.", "addOption": "Dodaj opcję.",
"aggregateFunction": "Funkcja kruszywa", "aggregateFunction": "Funkcja kruszywa",
"database": "Baza danych",
"dbCreateIfNotExists": "Baza danych: Utwórz, jeśli nie istnieje", "dbCreateIfNotExists": "Baza danych: Utwórz, jeśli nie istnieje",
"clientKey": "Klucz klienta", "clientKey": "Klucz klienta",
"clientCert": "Cert Client.", "clientCert": "Cert Client.",
@ -412,7 +413,7 @@
"deleteProject": "Czy chcesz usunąć projekt?", "deleteProject": "Czy chcesz usunąć projekt?",
"shareBasePrivate": "Wygeneruj publicznie do readonly bazy", "shareBasePrivate": "Wygeneruj publicznie do readonly bazy",
"shareBasePublic": "Każdy w Internecie z tym linkiem może przeglądać", "shareBasePublic": "Każdy w Internecie z tym linkiem może przeglądać",
"userInviteNoSMTP": "Wygląda na to, że nie skonfigurowałeś jeszcze mailera! n Proszę skopiować powyżej zaproś link i wyślij go", "userInviteNoSMTP": "Wygląda na to, że nie skonfigurowałeś jeszcze mailera! Proszę skopiować powyżej zaproś link i wyślij go",
"dragDropHide": "Przeciągnij i upuść pola tutaj, aby się ukryć", "dragDropHide": "Przeciągnij i upuść pola tutaj, aby się ukryć",
"formInput": "Wprowadź etykietę wejściową formularza", "formInput": "Wprowadź etykietę wejściową formularza",
"formHelpText": "Dodaj trochę pomocy", "formHelpText": "Dodaj trochę pomocy",
@ -496,7 +497,8 @@
"emailReqd": "Email jest wymagany", "emailReqd": "Email jest wymagany",
"emailInvalid": "Adres email musi być poprawny", "emailInvalid": "Adres email musi być poprawny",
"passwdRequired": "Wymagane jest hasło", "passwdRequired": "Wymagane jest hasło",
"passwdLength": "Użytkownik musi być co najmniej 8 znaków" "passwdLength": "Użytkownik musi być co najmniej 8 znaków",
"passwdMismatch": "Hasła nie pasują do siebie"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/pt.json

@ -213,6 +213,7 @@
"sqlOutput": "Saída SQL.", "sqlOutput": "Saída SQL.",
"addOption": "Adicionar opção", "addOption": "Adicionar opção",
"aggregateFunction": "Função agregada", "aggregateFunction": "Função agregada",
"database": "Base de dados",
"dbCreateIfNotExists": "Base de Dados : criar se não existir", "dbCreateIfNotExists": "Base de Dados : criar se não existir",
"clientKey": "Chave do Cliente", "clientKey": "Chave do Cliente",
"clientCert": "Certificado do Cliente", "clientCert": "Certificado do Cliente",
@ -412,7 +413,7 @@
"deleteProject": "Você quer excluir o projeto?", "deleteProject": "Você quer excluir o projeto?",
"shareBasePrivate": "Gerar base readonly compartilhável publicamente", "shareBasePrivate": "Gerar base readonly compartilhável publicamente",
"shareBasePublic": "Qualquer pessoa na internet com este link pode ver", "shareBasePublic": "Qualquer pessoa na internet com este link pode ver",
"userInviteNoSMTP": "Parece que você ainda não configurou o mailer!\npor favor copie o link acima do convite e envie-o para", "userInviteNoSMTP": "Parece que você ainda não configurou o mailer! por favor copie o link acima do convite e envie-o para",
"dragDropHide": "Arraste e solte os campos aqui para se esconder", "dragDropHide": "Arraste e solte os campos aqui para se esconder",
"formInput": "Digite a etiqueta de entrada do formulário", "formInput": "Digite a etiqueta de entrada do formulário",
"formHelpText": "Adicione um texto de ajuda", "formHelpText": "Adicione um texto de ajuda",
@ -496,7 +497,8 @@
"emailReqd": "O Email é obrigatório", "emailReqd": "O Email é obrigatório",
"emailInvalid": "O Email deve ser válido", "emailInvalid": "O Email deve ser válido",
"passwdRequired": "A Palavra-passe é obrigatória", "passwdRequired": "A Palavra-passe é obrigatória",
"passwdLength": "A sua palavra-passe deve conter pelo menos 8 caracteres" "passwdLength": "A sua palavra-passe deve conter pelo menos 8 caracteres",
"passwdMismatch": "As senhas não coincidem"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/pt_BR.json

@ -213,6 +213,7 @@
"sqlOutput": "Saída SQL.", "sqlOutput": "Saída SQL.",
"addOption": "Adicionar opção", "addOption": "Adicionar opção",
"aggregateFunction": "Função agregada", "aggregateFunction": "Função agregada",
"database": "Base de dados",
"dbCreateIfNotExists": "Base de Dados : criar se não existir", "dbCreateIfNotExists": "Base de Dados : criar se não existir",
"clientKey": "Chave do Cliente", "clientKey": "Chave do Cliente",
"clientCert": "Certificado do Cliente", "clientCert": "Certificado do Cliente",
@ -412,7 +413,7 @@
"deleteProject": "Você quer excluir o projeto?", "deleteProject": "Você quer excluir o projeto?",
"shareBasePrivate": "Gerar base readonly compartilhável publicamente", "shareBasePrivate": "Gerar base readonly compartilhável publicamente",
"shareBasePublic": "Qualquer pessoa na internet com este link pode ver", "shareBasePublic": "Qualquer pessoa na internet com este link pode ver",
"userInviteNoSMTP": "Parece que você ainda não configurou o mailer!\npor favor copie o link acima do convite e envie-o para", "userInviteNoSMTP": "Parece que você ainda não configurou o mailer! por favor copie o link acima do convite e envie-o para",
"dragDropHide": "Arraste e solte os campos aqui para se esconder", "dragDropHide": "Arraste e solte os campos aqui para se esconder",
"formInput": "Digite a etiqueta de entrada do formulário", "formInput": "Digite a etiqueta de entrada do formulário",
"formHelpText": "Adicione um texto de ajuda", "formHelpText": "Adicione um texto de ajuda",
@ -496,7 +497,8 @@
"emailReqd": "O Email é obrigatório", "emailReqd": "O Email é obrigatório",
"emailInvalid": "O Email deve ser válido", "emailInvalid": "O Email deve ser válido",
"passwdRequired": "A Palavra-passe é obrigatória", "passwdRequired": "A Palavra-passe é obrigatória",
"passwdLength": "A sua palavra-passe deve conter pelo menos 8 caracteres" "passwdLength": "A sua palavra-passe deve conter pelo menos 8 caracteres",
"passwdMismatch": "As senhas não coincidem"
} }
}, },
"toast": { "toast": {

5
packages/nc-gui-v2/lang/ru.json

@ -213,6 +213,7 @@
"sqlOutput": "Вывод SQL", "sqlOutput": "Вывод SQL",
"addOption": "Добавить настройку", "addOption": "Добавить настройку",
"aggregateFunction": "Агрегатная функция", "aggregateFunction": "Агрегатная функция",
"database": "База данных",
"dbCreateIfNotExists": "База данных: создать, если не существует", "dbCreateIfNotExists": "База данных: создать, если не существует",
"clientKey": "Ключ клиента", "clientKey": "Ключ клиента",
"clientCert": "Сертификат клиента", "clientCert": "Сертификат клиента",
@ -229,6 +230,7 @@
"bookDemo": "Забронировать бесплатное демо", "bookDemo": "Забронировать бесплатное демо",
"getAnswered": "Получите ответы на ваши вопросы", "getAnswered": "Получите ответы на ваши вопросы",
"joinDiscord": "Присоединиться к", "joinDiscord": "Присоединиться к",
"joinCommunity": "Join NocoDB Community",
"joinReddit": "Присоединиться /r/NocoDB", "joinReddit": "Присоединиться /r/NocoDB",
"followNocodb": "Следите за NocoDB" "followNocodb": "Следите за NocoDB"
}, },
@ -495,7 +497,8 @@
"emailReqd": "Требуется E-mail", "emailReqd": "Требуется E-mail",
"emailInvalid": "Электронная почта должна быть действительной", "emailInvalid": "Электронная почта должна быть действительной",
"passwdRequired": "необходим пароль", "passwdRequired": "необходим пароль",
"passwdLength": "Ваш пароль должен быть не короче 8 символов" "passwdLength": "Ваш пароль должен быть не короче 8 символов",
"passwdMismatch": "Пароли не совпадают"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/sl.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL izhod", "sqlOutput": "SQL izhod",
"addOption": "Dodaj možnost", "addOption": "Dodaj možnost",
"aggregateFunction": "Agregatna funkcija", "aggregateFunction": "Agregatna funkcija",
"database": "Baza podatkov",
"dbCreateIfNotExists": "Baza podatkov: Ustvari, če ne obstaja", "dbCreateIfNotExists": "Baza podatkov: Ustvari, če ne obstaja",
"clientKey": "Odjemalski ključ", "clientKey": "Odjemalski ključ",
"clientCert": "Potrdilo odjemalca", "clientCert": "Potrdilo odjemalca",
@ -412,7 +413,7 @@
"deleteProject": "Želite izbrisati projekt?", "deleteProject": "Želite izbrisati projekt?",
"shareBasePrivate": "Ustvarite javno rasno redno osnovo", "shareBasePrivate": "Ustvarite javno rasno redno osnovo",
"shareBasePublic": "Vsak na internetu s to povezavo lahko prikaže", "shareBasePublic": "Vsak na internetu s to povezavo lahko prikaže",
"userInviteNoSMTP": "Izgleda, da še niste konfigurirali pošiljatelja! n Prosimo, kopirajte zgornjo povezavo in jo pošljite", "userInviteNoSMTP": "Izgleda, da še niste konfigurirali pošiljatelja! Prosimo, kopirajte zgornjo povezavo in jo pošljite",
"dragDropHide": "Povlecite in spustite polja, da se skrijete", "dragDropHide": "Povlecite in spustite polja, da se skrijete",
"formInput": "Vnesite nalepko vnosa obrazca", "formInput": "Vnesite nalepko vnosa obrazca",
"formHelpText": "Dodajte nekaj besedila pomoči", "formHelpText": "Dodajte nekaj besedila pomoči",
@ -496,7 +497,8 @@
"emailReqd": "Potrebna je e-pošta", "emailReqd": "Potrebna je e-pošta",
"emailInvalid": "E-pošta mora biti veljavna", "emailInvalid": "E-pošta mora biti veljavna",
"passwdRequired": "zahtevano je geslo", "passwdRequired": "zahtevano je geslo",
"passwdLength": "Geslo mora biti vsaj 8 znakov" "passwdLength": "Geslo mora biti vsaj 8 znakov",
"passwdMismatch": "geslo se ne ujema"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/sv.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL-utgång", "sqlOutput": "SQL-utgång",
"addOption": "Lägg till alternativ", "addOption": "Lägg till alternativ",
"aggregateFunction": "Aggregatfunktion", "aggregateFunction": "Aggregatfunktion",
"database": "Databas",
"dbCreateIfNotExists": "Databas: Skapa om det inte finns", "dbCreateIfNotExists": "Databas: Skapa om det inte finns",
"clientKey": "Klientnyckel", "clientKey": "Klientnyckel",
"clientCert": "Klientcert", "clientCert": "Klientcert",
@ -412,7 +413,7 @@
"deleteProject": "Vill du radera projektet?", "deleteProject": "Vill du radera projektet?",
"shareBasePrivate": "Generera offentligt delbar readonly base", "shareBasePrivate": "Generera offentligt delbar readonly base",
"shareBasePublic": "Någon på internet med den här länken kan visa", "shareBasePublic": "Någon på internet med den här länken kan visa",
"userInviteNoSMTP": "Det verkar som om du inte har konfigurerat Mailer än!\nVänligen kopiera ovanför bjudningslänk och skicka den till", "userInviteNoSMTP": "Det verkar som om du inte har konfigurerat Mailer än! Vänligen kopiera ovanför bjudningslänk och skicka den till",
"dragDropHide": "Dra och släpp fält här för att dölja", "dragDropHide": "Dra och släpp fält här för att dölja",
"formInput": "Ange formulärinmatningslabel", "formInput": "Ange formulärinmatningslabel",
"formHelpText": "Lägg till lite hjälptext", "formHelpText": "Lägg till lite hjälptext",
@ -496,7 +497,8 @@
"emailReqd": "E-post krävs", "emailReqd": "E-post krävs",
"emailInvalid": "Email måste vara giltig", "emailInvalid": "Email måste vara giltig",
"passwdRequired": "lösenord krävs", "passwdRequired": "lösenord krävs",
"passwdLength": "Du lösenord måste vara minst 8 tecken" "passwdLength": "Du lösenord måste vara minst 8 tecken",
"passwdMismatch": "Lösenorden matchar inte"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/th.json

@ -213,6 +213,7 @@
"sqlOutput": "เอาตต SQL", "sqlOutput": "เอาตต SQL",
"addOption": "เพมตวเลอก", "addOption": "เพมตวเลอก",
"aggregateFunction": "ฟงกนรวม", "aggregateFunction": "ฟงกนรวม",
"database": "ฐานขอมล",
"dbCreateIfNotExists": "ฐานขอมล: สรางถาไมอย", "dbCreateIfNotExists": "ฐานขอมล: สรางถาไมอย",
"clientKey": "รหสลกคา", "clientKey": "รหสลกคา",
"clientCert": "ใบรบรองลกคา", "clientCert": "ใบรบรองลกคา",
@ -412,7 +413,7 @@
"deleteProject": "คณตองการลบโครงการหรอไม", "deleteProject": "คณตองการลบโครงการหรอไม",
"shareBasePrivate": "สรางฐาน Readonly ทใชวมกนไดอยางเปดเผย", "shareBasePrivate": "สรางฐาน Readonly ทใชวมกนไดอยางเปดเผย",
"shareBasePublic": "ทกคนบนอนเทอรเนตดวยลงคสามารถดได", "shareBasePublic": "ทกคนบนอนเทอรเนตดวยลงคสามารถดได",
"userInviteNoSMTP": "ดเหมอนวาคณยงไมไดกำหนดคาเมล!\nโปรดคดลอกลงกเชญดานบนและสงไปท", "userInviteNoSMTP": "ดเหมอนวาคณยงไมไดกำหนดคาเมล! โปรดคดลอกลงกเชญดานบนและสงไปท",
"dragDropHide": "ลากและวางฟลดเพอซอน", "dragDropHide": "ลากและวางฟลดเพอซอน",
"formInput": "ปอนปายชออนพตแบบฟอรม", "formInput": "ปอนปายชออนพตแบบฟอรม",
"formHelpText": "เพมขอความชวยเหลอบางอยาง", "formHelpText": "เพมขอความชวยเหลอบางอยาง",
@ -496,7 +497,8 @@
"emailReqd": "จำเปนตองใชเมล", "emailReqd": "จำเปนตองใชเมล",
"emailInvalid": "อเมลจะตองถกตอง", "emailInvalid": "อเมลจะตองถกตอง",
"passwdRequired": "ตองการรหสผาน", "passwdRequired": "ตองการรหสผาน",
"passwdLength": "รหสผานของคณตองมกขระอยางนอย 8 ตว" "passwdLength": "รหสผานของคณตองมกขระอยางนอย 8 ตว",
"passwdMismatch": "รหสผานไมตรงกน"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/tr.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL Çıktısı", "sqlOutput": "SQL Çıktısı",
"addOption": "Seçenek ekle", "addOption": "Seçenek ekle",
"aggregateFunction": "Birleştirme fonksiyonu", "aggregateFunction": "Birleştirme fonksiyonu",
"database": "Veritabanı",
"dbCreateIfNotExists": "Veritabanı : yoksa oluştur", "dbCreateIfNotExists": "Veritabanı : yoksa oluştur",
"clientKey": "Müşteri Anahtarı", "clientKey": "Müşteri Anahtarı",
"clientCert": "Müşteri Sertifikası", "clientCert": "Müşteri Sertifikası",
@ -412,7 +413,7 @@
"deleteProject": "Projeyi silmek istediğinize emin misiniz?", "deleteProject": "Projeyi silmek istediğinize emin misiniz?",
"shareBasePrivate": "Herkese açık paylaşılabilir salt-okunur bağlantı", "shareBasePrivate": "Herkese açık paylaşılabilir salt-okunur bağlantı",
"shareBasePublic": "Bu link ile internetteki herkes görüntüleyebilir", "shareBasePublic": "Bu link ile internetteki herkes görüntüleyebilir",
"userInviteNoSMTP": "Henüz mail ayarları yapılmamış gibi görünüyor! \\n Lütfen yukarıdaki davet linkini kopyalayın ve gönderin", "userInviteNoSMTP": "Henüz mail ayarları yapılmamış gibi görünüyor! Lütfen yukarıdaki davet linkini kopyalayın ve gönderin",
"dragDropHide": "Gizlemek için sütunları buraya sürükleyip bırakın", "dragDropHide": "Gizlemek için sütunları buraya sürükleyip bırakın",
"formInput": "Form girdi etiketini girin", "formInput": "Form girdi etiketini girin",
"formHelpText": "Yardım metni ekleyin", "formHelpText": "Yardım metni ekleyin",
@ -496,7 +497,8 @@
"emailReqd": "E-posta gerekli", "emailReqd": "E-posta gerekli",
"emailInvalid": "E-posta geçerli olmalı", "emailInvalid": "E-posta geçerli olmalı",
"passwdRequired": "Şifre gerekli", "passwdRequired": "Şifre gerekli",
"passwdLength": "Şifreniz en az 8 karakter olmalıdır" "passwdLength": "Şifreniz en az 8 karakter olmalıdır",
"passwdMismatch": "Parolalar uyuşmuyor"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/uk.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL Output", "sqlOutput": "SQL Output",
"addOption": "Додайте опцію", "addOption": "Додайте опцію",
"aggregateFunction": "Сукупна функція", "aggregateFunction": "Сукупна функція",
"database": "База даних",
"dbCreateIfNotExists": "База даних: створити, якщо не існує", "dbCreateIfNotExists": "База даних: створити, якщо не існує",
"clientKey": "Клієнтський ключ", "clientKey": "Клієнтський ключ",
"clientCert": "Клієнтський сертифікат", "clientCert": "Клієнтський сертифікат",
@ -412,7 +413,7 @@
"deleteProject": "Ви хочете видалити проект?", "deleteProject": "Ви хочете видалити проект?",
"shareBasePrivate": "Генерувати загальнодоступну групою", "shareBasePrivate": "Генерувати загальнодоступну групою",
"shareBasePublic": "Будь-хто в Інтернеті за допомогою цього посилання може переглядати", "shareBasePublic": "Будь-хто в Інтернеті за допомогою цього посилання може переглядати",
"userInviteNoSMTP": "Схоже, ви ще не налаштували Mailer!\nБудь ласка, скопіюйте вище посилання на запрошення і надішліть його", "userInviteNoSMTP": "Схоже, ви ще не налаштували Mailer! Будь ласка, скопіюйте вище посилання на запрошення і надішліть його",
"dragDropHide": "Перетягніть поля тут, щоб приховати", "dragDropHide": "Перетягніть поля тут, щоб приховати",
"formInput": "Введіть етикетку введення форми", "formInput": "Введіть етикетку введення форми",
"formHelpText": "Додайте деякий текст довідки", "formHelpText": "Додайте деякий текст довідки",
@ -496,7 +497,8 @@
"emailReqd": "Потрібна електронна пошта", "emailReqd": "Потрібна електронна пошта",
"emailInvalid": "Електронна пошта повинна бути дійсним", "emailInvalid": "Електронна пошта повинна бути дійсним",
"passwdRequired": "Необхідний пароль", "passwdRequired": "Необхідний пароль",
"passwdLength": "Пароль повинен бути принаймні 8 символів" "passwdLength": "Пароль повинен бути принаймні 8 символів",
"passwdMismatch": "Паролі не співпадають"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/vi.json

@ -213,6 +213,7 @@
"sqlOutput": "Đầu ra SQL.", "sqlOutput": "Đầu ra SQL.",
"addOption": "Thêm tùy chọn", "addOption": "Thêm tùy chọn",
"aggregateFunction": "Chức năng tổng hợp", "aggregateFunction": "Chức năng tổng hợp",
"database": "Cơ sở dữ liệu",
"dbCreateIfNotExists": "Cơ sở dữ liệu: Tạo nếu không tồn tại", "dbCreateIfNotExists": "Cơ sở dữ liệu: Tạo nếu không tồn tại",
"clientKey": "Khóa khách", "clientKey": "Khóa khách",
"clientCert": "Chứng chỉ khách hàng.", "clientCert": "Chứng chỉ khách hàng.",
@ -412,7 +413,7 @@
"deleteProject": "Bạn có muốn xóa dự án?", "deleteProject": "Bạn có muốn xóa dự án?",
"shareBasePrivate": "Tạo cơ sở chỉ đọc chia sẻ công khai", "shareBasePrivate": "Tạo cơ sở chỉ đọc chia sẻ công khai",
"shareBasePublic": "Bất cứ ai trên Internet với liên kết này có thể xem", "shareBasePublic": "Bất cứ ai trên Internet với liên kết này có thể xem",
"userInviteNoSMTP": "Có vẻ như bạn chưa định cấu hình Mailer!\nVui lòng sao chép liên kết mời trên và gửi nó đến", "userInviteNoSMTP": "Có vẻ như bạn chưa định cấu hình Mailer! Vui lòng sao chép liên kết mời trên và gửi nó đến",
"dragDropHide": "Kéo và thả các trường ở đây để ẩn", "dragDropHide": "Kéo và thả các trường ở đây để ẩn",
"formInput": "Nhập nhãn đầu vào Mẫu", "formInput": "Nhập nhãn đầu vào Mẫu",
"formHelpText": "Thêm một số văn bản trợ giúp", "formHelpText": "Thêm một số văn bản trợ giúp",
@ -496,7 +497,8 @@
"emailReqd": "Email thì cần thiết", "emailReqd": "Email thì cần thiết",
"emailInvalid": "Email phải hợp lệ", "emailInvalid": "Email phải hợp lệ",
"passwdRequired": "Mật khẩu là bắt buộc", "passwdRequired": "Mật khẩu là bắt buộc",
"passwdLength": "Mật khẩu của bạn phải có ít nhất 8 ký tự" "passwdLength": "Mật khẩu của bạn phải có ít nhất 8 ký tự",
"passwdMismatch": "mất khẩu không hợp lệ"
} }
}, },
"toast": { "toast": {

4
packages/nc-gui-v2/lang/zh_CN.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL输出", "sqlOutput": "SQL输出",
"addOption": "添加选项", "addOption": "添加选项",
"aggregateFunction": "汇总功能", "aggregateFunction": "汇总功能",
"database": "数据库",
"dbCreateIfNotExists": "数据库 : 如果不存在则创建", "dbCreateIfNotExists": "数据库 : 如果不存在则创建",
"clientKey": "客户端 Key", "clientKey": "客户端 Key",
"clientCert": "客户端 Cert", "clientCert": "客户端 Cert",
@ -496,7 +497,8 @@
"emailReqd": "邮箱必填", "emailReqd": "邮箱必填",
"emailInvalid": "邮箱格式无效", "emailInvalid": "邮箱格式无效",
"passwdRequired": "密码必填", "passwdRequired": "密码必填",
"passwdLength": "您的密码必须至少为8个字符" "passwdLength": "您的密码必须至少为8个字符",
"passwdMismatch": "密码不匹配"
} }
}, },
"toast": { "toast": {

4
packages/nc-gui-v2/lang/zh_HK.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL輸出", "sqlOutput": "SQL輸出",
"addOption": "添加選項", "addOption": "添加選項",
"aggregateFunction": "匯總功能", "aggregateFunction": "匯總功能",
"database": "數據庫",
"dbCreateIfNotExists": "數據庫:創建如果不存在", "dbCreateIfNotExists": "數據庫:創建如果不存在",
"clientKey": "client條key", "clientKey": "client條key",
"clientCert": "client張cert", "clientCert": "client張cert",
@ -496,7 +497,8 @@
"emailReqd": "E-mail 必須填", "emailReqd": "E-mail 必須填",
"emailInvalid": "E-mail 唔valid", "emailInvalid": "E-mail 唔valid",
"passwdRequired": "密碼必須填", "passwdRequired": "密碼必須填",
"passwdLength": "你嗰密碼至少要8個字" "passwdLength": "你嗰密碼至少要8個字",
"passwdMismatch": "密碼不匹配"
} }
}, },
"toast": { "toast": {

6
packages/nc-gui-v2/lang/zh_TW.json

@ -213,6 +213,7 @@
"sqlOutput": "SQL 輸出", "sqlOutput": "SQL 輸出",
"addOption": "新增選項", "addOption": "新增選項",
"aggregateFunction": "匯總功能", "aggregateFunction": "匯總功能",
"database": "數據庫",
"dbCreateIfNotExists": "資料庫:不存在則建立", "dbCreateIfNotExists": "資料庫:不存在則建立",
"clientKey": "用戶端金鑰", "clientKey": "用戶端金鑰",
"clientCert": "用戶端憑證", "clientCert": "用戶端憑證",
@ -496,7 +497,8 @@
"emailReqd": "電子信箱地址為必填", "emailReqd": "電子信箱地址為必填",
"emailInvalid": "電子信箱地址格式錯誤", "emailInvalid": "電子信箱地址格式錯誤",
"passwdRequired": "密碼為必填", "passwdRequired": "密碼為必填",
"passwdLength": "您的密碼應至少有 8 個字元" "passwdLength": "您的密碼應至少有 8 個字元",
"passwdMismatch": "密碼不匹配"
} }
}, },
"toast": { "toast": {
@ -517,4 +519,4 @@
"futureRelease": "即將推出!" "futureRelease": "即將推出!"
} }
} }
} }

28908
packages/nc-gui-v2/package-lock.json generated

File diff suppressed because it is too large Load Diff

1
packages/nc-gui-v2/package.json

@ -16,6 +16,7 @@
"ant-design-vue": "^3.1.0-rc.6", "ant-design-vue": "^3.1.0-rc.6",
"dayjs": "^1.11.3", "dayjs": "^1.11.3",
"jwt-decode": "^3.1.2", "jwt-decode": "^3.1.2",
"monaco-editor": "^0.33.0",
"nocodb-sdk": "file:../nocodb-sdk", "nocodb-sdk": "file:../nocodb-sdk",
"socket.io-client": "^4.5.1", "socket.io-client": "^4.5.1",
"unique-names-generator": "^4.7.1", "unique-names-generator": "^4.7.1",

73
packages/nc-gui-v2/pages/index/index.vue

@ -1,10 +1,10 @@
<script lang="ts" setup> <script lang="ts" setup>
import { Modal } from 'ant-design-vue' import {Modal} from 'ant-design-vue'
import type { ProjectType } from 'nocodb-sdk' import type {ProjectType} from 'nocodb-sdk'
import { useToast } from 'vue-toastification' import {useToast} from 'vue-toastification'
import { navigateTo } from '#app' import {navigateTo} from '#app'
import { computed, onMounted } from '#imports' import {computed, onMounted} from '#imports'
import { extractSdkResponseErrorMsg } from '~/utils/errorUtils' import {extractSdkResponseErrorMsg} from '~/utils/errorUtils'
import MdiDeleteOutline from '~icons/mdi/delete-outline' import MdiDeleteOutline from '~icons/mdi/delete-outline'
import MdiEditOutline from '~icons/mdi/edit-outline' import MdiEditOutline from '~icons/mdi/edit-outline'
@ -13,7 +13,7 @@ import MdiMenuDown from '~icons/mdi/menu-down'
import MdiPlus from '~icons/mdi/plus' import MdiPlus from '~icons/mdi/plus'
import MdiDatabaseOutline from '~icons/mdi/database-outline' import MdiDatabaseOutline from '~icons/mdi/database-outline'
const { $api, $state, $e } = useNuxtApp() const {$api, $state, $e} = useNuxtApp()
const toast = useToast() const toast = useToast()
const filterQuery = ref('') const filterQuery = ref('')
@ -29,7 +29,7 @@ const loadProjects = async () => {
const filteredProjects = computed(() => { const filteredProjects = computed(() => {
return projects.value.filter( return projects.value.filter(
(project) => !filterQuery.value || project.title?.toLowerCase?.().includes(filterQuery.value.toLowerCase()), (project) => !filterQuery.value || project.title?.toLowerCase?.().includes(filterQuery.value.toLowerCase()),
) )
}) })
@ -62,51 +62,51 @@ $state.sidebarOpen.value = false
<template> <template>
<NuxtLayout> <NuxtLayout>
<a-card class="mx-auto mt-5 !max-w-[600px] shadow-lg"> <a-card class="mx-auto mt-10 !max-w-[600px] shadow-lg">
<h1 class="text-center text-4xl pa-2 nc-project-page-title flex align-center justify-center gap-2"> <h1 class="text-center text-4xl pa-2 nc-project-page-title flex align-center justify-center gap-2">
<!-- My Projects --> <!-- My Projects -->
<b>{{ $t('title.myProject') }}</b> <b>{{ $t('title.myProject') }}</b>
<MdiRefresh <MdiRefresh
v-t="['a:project:refresh']" v-t="['a:project:refresh']"
class="text-sm text-gray-500 hover:text-primary mt-1 cursor-pointer" class="text-sm text-gray-500 hover:text-primary mt-1 cursor-pointer"
@click="loadProjects" @click="loadProjects"
></MdiRefresh> ></MdiRefresh>
</h1> </h1>
<div class="flex mb-6"> <div class="flex mb-6">
<a-input-search <a-input-search
v-model:value="filterQuery" v-model:value="filterQuery"
class="max-w-[200px] nc-project-page-search" class="max-w-[200px] nc-project-page-search"
:placeholder="$t('activity.searchProject')" :placeholder="$t('activity.searchProject')"
></a-input-search> ></a-input-search>
<div class="flex-grow"></div> <div class="flex-grow"></div>
<a-dropdown @click.stop> <a-dropdown @click.stop>
<a-button class="nc-new-project-menu"> <a-button class="nc-new-project-menu !shadow">
<div class="flex align-center"> <div class="flex align-center">
{{ $t('title.newProj') }} {{ $t('title.newProj') }}
<MdiMenuDown class="menu-icon" /> <MdiMenuDown class="menu-icon"/>
</div> </div>
</a-button> </a-button>
<template #overlay> <template #overlay>
<a-menu> <a-menu>
<div <div
v-t="['c:project:create:xcdb']" v-t="['c:project:create:xcdb']"
class="grid grid-cols-12 cursor-pointer hover:bg-gray-200 flex items-center p-2 nc-create-xc-db-project" class="grid grid-cols-12 cursor-pointer hover:bg-gray-200 flex items-center p-2 nc-create-xc-db-project"
@click="navigateTo('/project/create')" @click="navigateTo('/project/create')"
> >
<MdiPlus class="col-span-2 mr-1 mt-[1px] text-primary text-lg" /> <MdiPlus class="col-span-2 mr-1 mt-[1px] text-primary text-lg"/>
<div class="col-span-10 text-sm xl:text-md">{{ $t('activity.createProject') }}</div> <div class="col-span-10 text-sm xl:text-md">{{ $t('activity.createProject') }}</div>
</div> </div>
<div <div
v-t="['c:project:create:extdb']" v-t="['c:project:create:extdb']"
class="grid grid-cols-12 cursor-pointer hover:bg-gray-200 flex items-center p-2 nc-create-external-db-project" class="grid grid-cols-12 cursor-pointer hover:bg-gray-200 flex items-center p-2 nc-create-external-db-project"
@click="navigateTo('/project/create-external')" @click="navigateTo('/project/create-external')"
> >
<MdiDatabaseOutline class="col-span-2 mr-1 mt-[1px] text-green-500 text-lg" /> <MdiDatabaseOutline class="col-span-2 mr-1 mt-[1px] text-green-500 text-lg"/>
<div class="col-span-10 text-sm xl:text-md" v-html="$t('activity.createProjectExtended.extDB')" /> <div class="col-span-10 text-sm xl:text-md" v-html="$t('activity.createProjectExtended.extDB')"/>
</div> </div>
</a-menu> </a-menu>
</template> </template>
@ -114,12 +114,12 @@ $state.sidebarOpen.value = false
</div> </div>
<div v-if="loading"> <div v-if="loading">
<a-skeleton /> <a-skeleton/>
</div> </div>
<a-table <a-table
v-else v-else
:custom-row=" :custom-row="
(record) => ({ (record) => ({
onClick: () => { onClick: () => {
$e('a:project:open') $e('a:project:open')
@ -127,13 +127,14 @@ $state.sidebarOpen.value = false
}, },
}) })
" "
:data-source="filteredProjects" :data-source="filteredProjects"
:pagination="{ position: ['bottomCenter'] }" :pagination="{ position: ['bottomCenter'] }"
> >
<!-- Title --> <!-- Title -->
<a-table-column key="title" :title="$t('general.title')" data-index="title"> <a-table-column key="title" :title="$t('general.title')" data-index="title">
<template #default="{ text }"> <template #default="{ text }">
<div class="capitalize !w-[400px] overflow-hidden overflow-ellipsis whitespace-nowrap nc-project-row" :title="text"> <div class="capitalize !w-[400px] overflow-hidden overflow-ellipsis whitespace-nowrap nc-project-row"
:title="text">
{{ text }} {{ text }}
</div> </div>
</template> </template>
@ -143,11 +144,11 @@ $state.sidebarOpen.value = false
<template #default="{ text, record }"> <template #default="{ text, record }">
<div class="flex align-center"> <div class="flex align-center">
<MdiEditOutline <MdiEditOutline
v-t="['c:project:edit:rename']" v-t="['c:project:edit:rename']"
class="nc-action-btn" class="nc-action-btn"
@click.stop="navigateTo(`/project/${text}`)" @click.stop="navigateTo(`/project/${text}`)"
/> />
<MdiDeleteOutline class="nc-action-btn" @click.stop="deleteProject(record)" /> <MdiDeleteOutline class="nc-action-btn" @click.stop="deleteProject(record)"/>
</div> </div>
</template> </template>
</a-table-column> </a-table-column>

12
packages/nc-gui-v2/pages/nc/[projectId].vue

@ -1,17 +1,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { watch } from 'vue'
import useProject from '~/composables/useProject'
import useTabs from '~/composables/useTabs'
const route = useRoute() const route = useRoute()
const { loadProject, loadTables } = useProject() const { loadProject, loadTables } = useProject(route.params.projectId as string)
const { clearTabs, addTab } = useTabs() const { clearTabs, addTab } = useTabs()
onMounted(async () => { addTab({ type: 'auth', title: 'Team & Auth' })
await loadProject(route.params.projectId as string)
await loadTables()
addTab({ type: 'auth', title: 'Team & Auth' })
})
watch( watch(
() => route.params.projectId, () => route.params.projectId,

17
packages/nc-gui-v2/pages/project/index/create-external.vue

@ -216,7 +216,7 @@ onMounted(() => {
<template> <template>
<a-card <a-card
class="max-w-[600px] mx-auto !mt-5 !mb-5" class="max-w-[600px] mx-auto !mt-15 !mb-5 !shadow-md"
:title="$t('activity.createProject')" :title="$t('activity.createProject')"
:head-style="{ textAlign: 'center', fontWeight: '700' }" :head-style="{ textAlign: 'center', fontWeight: '700' }"
> >
@ -227,6 +227,7 @@ onMounted(() => {
layout="horizontal" layout="horizontal"
:label-col="{ span: 8 }" :label-col="{ span: 8 }"
:wrapper-col="{ span: 18 }" :wrapper-col="{ span: 18 }"
class="!pr-5"
> >
<a-form-item :label="$t('placeholder.projName')" v-bind="validateInfos.title"> <a-form-item :label="$t('placeholder.projName')" v-bind="validateInfos.title">
<a-input v-model:value="formState.title" size="small" class="nc-extdb-proj-name" /> <a-input v-model:value="formState.title" size="small" class="nc-extdb-proj-name" />
@ -309,7 +310,7 @@ onMounted(() => {
<template #title> <template #title>
<span>{{ $t('tooltip.clientCert') }}</span> <span>{{ $t('tooltip.clientCert') }}</span>
</template> </template>
<a-button :disabled="!sslFilesRequired" size="small" @click="certFileInput.click()"> <a-button :disabled="!sslFilesRequired" size="small" @click="certFileInput.click()" class="shadow">
{{ $t('labels.clientCert') }} {{ $t('labels.clientCert') }}
</a-button> </a-button>
</a-tooltip> </a-tooltip>
@ -318,7 +319,7 @@ onMounted(() => {
<template #title> <template #title>
<span>{{ $t('tooltip.clientKey') }}</span> <span>{{ $t('tooltip.clientKey') }}</span>
</template> </template>
<a-button :disabled="!sslFilesRequired" size="small" @click="keyFileInput.click()"> <a-button :disabled="!sslFilesRequired" size="small" @click="keyFileInput.click()" class="shadow">
{{ $t('labels.clientKey') }} {{ $t('labels.clientKey') }}
</a-button> </a-button>
</a-tooltip> </a-tooltip>
@ -327,7 +328,7 @@ onMounted(() => {
<template #title> <template #title>
<span>{{ $t('tooltip.clientCA') }}</span> <span>{{ $t('tooltip.clientCA') }}</span>
</template> </template>
<a-button :disabled="!sslFilesRequired" size="small" @click="caFileInput.click()"> <a-button :disabled="!sslFilesRequired" size="small" @click="caFileInput.click()" class="shadow">
{{ $t('labels.serverCA') }} {{ $t('labels.serverCA') }}
</a-button> </a-button>
</a-tooltip> </a-tooltip>
@ -360,10 +361,10 @@ onMounted(() => {
<a-form-item class="flex justify-center mt-5"> <a-form-item class="flex justify-center mt-5">
<div class="flex justify-center gap-2"> <div class="flex justify-center gap-2">
<a-button type="primary" class="nc-extdb-btn-test-connection" @click="testConnection"> <a-button type="primary" ghost class="nc-extdb-btn-test-connection" @click="testConnection">
{{ $t('activity.testDbConn') }} {{ $t('activity.testDbConn') }}
</a-button> </a-button>
<a-button type="primary" :disabled="!testSuccess" class="nc-extdb-btn-submit" @click="createProject"> Submit </a-button> <a-button type="primary" :disabled="!testSuccess" class="nc-extdb-btn-submit !shadow" @click="createProject"> Submit </a-button>
</div> </div>
</a-form-item> </a-form-item>
</a-form> </a-form>
@ -396,4 +397,8 @@ onMounted(() => {
:deep(.ant-form-item-with-help .ant-form-item-explain) { :deep(.ant-form-item-with-help .ant-form-item-explain) {
@apply !min-h-0; @apply !min-h-0;
} }
:deep(.ant-card-head-title){
@apply !text-3xl
}
</style> </style>

4
packages/nc-gui-v2/pages/signin.vue

@ -77,7 +77,7 @@ const resetError = () => {
class="signin h-[calc(100%_+_90px)] min-h-[600px] flex justify-center items-center" class="signin h-[calc(100%_+_90px)] min-h-[600px] flex justify-center items-center"
@finish="signIn" @finish="signIn"
> >
<div class="h-full w-full flex flex-col flex-wrap justify-center items-center"> <div class="h-full w-full flex flex-col flex-wrap items-center pt-[100px]">
<div <div
class="bg-white dark:(!bg-gray-900 !text-white) md:relative flex flex-col justify-center gap-2 w-full max-w-[500px] mx-auto p-8 md:(rounded-lg border-1 border-gray-200 shadow-xl)" class="bg-white dark:(!bg-gray-900 !text-white) md:relative flex flex-col justify-center gap-2 w-full max-w-[500px] mx-auto p-8 md:(rounded-lg border-1 border-gray-200 shadow-xl)"
> >
@ -111,7 +111,7 @@ const resetError = () => {
</nuxt-link> </nuxt-link>
</div> </div>
<div class="self-center flex flex-wrap gap-4 items-center mt-4 md:mx-8 md:justify-between justify-center w-full"> <div class="self-center flex flex-column flex-wrap gap-4 items-center mt-4 md:mx-8 md:justify-between justify-center w-full">
<button class="submit" type="submit"> <button class="submit" type="submit">
<span class="flex items-center gap-2"><MdiLogin /> {{ $t('general.signIn') }}</span> <span class="flex items-center gap-2"><MdiLogin /> {{ $t('general.signIn') }}</span>
</button> </button>

31
packages/nc-gui-v2/pages/signup.vue

@ -19,8 +19,7 @@ let error = $ref<string | null>(null)
const form = reactive({ const form = reactive({
email: '', email: '',
password: '', password: ''
passwordRepeat: '',
}) })
const formRules = { const formRules = {
@ -43,20 +42,6 @@ const formRules = {
{ required: true, message: t('msg.error.signUpRules.passwdRequired') }, { required: true, message: t('msg.error.signUpRules.passwdRequired') },
{ min: 8, message: t('msg.error.signUpRules.passwdLength') }, { min: 8, message: t('msg.error.signUpRules.passwdLength') },
], ],
passwordRepeat: [
// PasswordRepeat is required
{ required: true, message: t('msg.error.signUpRules.passwdRequired') },
// Passwords match
{
validator: (_: unknown, v: string) => {
return new Promise((resolve, reject) => {
if (form.password === form.passwordRepeat) return resolve(true)
reject(new Error(t('msg.error.signUpRules.passwdMismatch')))
})
},
message: t('msg.error.signUpRules.passwdMismatch'),
},
],
} }
const signUp = async () => { const signUp = async () => {
@ -89,7 +74,7 @@ const resetError = () => {
class="signup h-[calc(100%_+_90px)] min-h-[600px] flex justify-center items-center" class="signup h-[calc(100%_+_90px)] min-h-[600px] flex justify-center items-center"
@finish="signUp" @finish="signUp"
> >
<div class="h-full w-full flex flex-col flex-wrap justify-center items-center"> <div class="h-full w-full flex flex-col flex-wrap pt-[100px]">
<div <div
class="bg-white dark:(!bg-gray-900 !text-white) md:relative flex flex-col justify-center gap-2 w-full max-w-[500px] mx-auto p-8 md:(rounded-lg border-1 border-gray-200 shadow-xl)" class="bg-white dark:(!bg-gray-900 !text-white) md:relative flex flex-col justify-center gap-2 w-full max-w-[500px] mx-auto p-8 md:(rounded-lg border-1 border-gray-200 shadow-xl)"
> >
@ -117,17 +102,7 @@ const resetError = () => {
/> />
</a-form-item> </a-form-item>
<a-form-item :label="`Repeat ${$t('labels.password')}`" name="passwordRepeat" :rules="formRules.passwordRepeat"> <div class="self-center flex flex-column flex-wrap gap-4 items-center mt-4 md:mx-8 md:justify-between justify-center w-full">
<a-input-password
v-model:value="form.passwordRepeat"
size="large"
class="password"
:placeholder="`Repeat ${$t('labels.password')}`"
@focus="resetError"
/>
</a-form-item>
<div class="self-center flex flex-wrap gap-4 items-center mt-4 md:mx-8 md:justify-between justify-center w-full">
<button class="submit" type="submit"> <button class="submit" type="submit">
<span class="flex items-center gap-2"><MaterialSymbolsRocketLaunchOutline /> {{ $t('general.signUp') }}</span> <span class="flex items-center gap-2"><MaterialSymbolsRocketLaunchOutline /> {{ $t('general.signUp') }}</span>
</button> </button>

Loading…
Cancel
Save