mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
Make a good part of the app localizable and add French translations (#325)
Co-authored-by: Yohan Boniface <yohanboniface@free.fr>
This commit is contained in:
@@ -11,6 +11,9 @@ import {Features, isFreePlan} from 'app/common/Features';
|
||||
import {capitalizeFirstWord} from 'app/common/gutil';
|
||||
import {canUpgradeOrg} from 'app/common/roles';
|
||||
import {Computed, Disposable, dom, DomContents, DomElementArg, makeTestId, styled} from 'grainjs';
|
||||
import {makeT} from 'app/client/lib/localization';
|
||||
|
||||
const t = makeT('components.DocumentUsage');
|
||||
|
||||
const testId = makeTestId('test-doc-usage-');
|
||||
|
||||
@@ -23,9 +26,6 @@ const DEFAULT_MAX_DATA_SIZE = DEFAULT_MAX_ROWS * 2 * 1024; // 40MB (2KiB per row
|
||||
// Default used by the progress bar to visually indicate attachments size usage.
|
||||
const DEFAULT_MAX_ATTACHMENTS_SIZE = 1 * 1024 * 1024 * 1024; // 1GiB
|
||||
|
||||
const ACCESS_DENIED_MESSAGE = 'Usage statistics are only available to users with '
|
||||
+ 'full access to the document data.';
|
||||
|
||||
/**
|
||||
* Displays statistics about document usage, such as number of rows used.
|
||||
*/
|
||||
@@ -60,7 +60,7 @@ export class DocumentUsage extends Disposable {
|
||||
// Invalid row limits are currently treated as if they are undefined.
|
||||
const maxValue = maxRows && maxRows > 0 ? maxRows : undefined;
|
||||
return {
|
||||
name: 'Rows',
|
||||
name: t('Rows'),
|
||||
currentValue: typeof rowCount !== 'object' ? undefined : rowCount.total,
|
||||
maximumValue: maxValue ?? DEFAULT_MAX_ROWS,
|
||||
unit: 'rows',
|
||||
@@ -75,7 +75,7 @@ export class DocumentUsage extends Disposable {
|
||||
// Invalid data size limits are currently treated as if they are undefined.
|
||||
const maxValue = maxSize && maxSize > 0 ? maxSize : undefined;
|
||||
return {
|
||||
name: 'Data Size',
|
||||
name: t('DataSize'),
|
||||
currentValue: typeof dataSize !== 'number' ? undefined : dataSize,
|
||||
maximumValue: maxValue ?? DEFAULT_MAX_DATA_SIZE,
|
||||
unit: 'MB',
|
||||
@@ -97,7 +97,7 @@ export class DocumentUsage extends Disposable {
|
||||
// Invalid attachments size limits are currently treated as if they are undefined.
|
||||
const maxValue = maxSize && maxSize > 0 ? maxSize : undefined;
|
||||
return {
|
||||
name: 'Attachments Size',
|
||||
name: t('AttachmentsSize'),
|
||||
currentValue: typeof attachmentsSize !== 'number' ? undefined : attachmentsSize,
|
||||
maximumValue: maxValue ?? DEFAULT_MAX_ATTACHMENTS_SIZE,
|
||||
unit: 'GB',
|
||||
@@ -135,7 +135,7 @@ export class DocumentUsage extends Disposable {
|
||||
|
||||
public buildDom() {
|
||||
return dom('div',
|
||||
cssHeader('Usage', testId('heading')),
|
||||
cssHeader(t('Usage'), testId('heading')),
|
||||
dom.domComputed(this._areAllMetricsPending, (isLoading) => {
|
||||
if (isLoading) { return cssSpinner(loadingSpinner(), testId('loading')); }
|
||||
|
||||
@@ -149,7 +149,7 @@ export class DocumentUsage extends Disposable {
|
||||
return dom.domComputed((use) => {
|
||||
const isAccessDenied = use(this._isAccessDenied);
|
||||
if (isAccessDenied === null) { return null; }
|
||||
if (isAccessDenied) { return buildMessage(ACCESS_DENIED_MESSAGE); }
|
||||
if (isAccessDenied) { return buildMessage(t('UsageStatisticsOnlyFullAccess')); }
|
||||
|
||||
const org = use(this._currentOrg);
|
||||
const product = use(this._currentProduct);
|
||||
@@ -237,11 +237,12 @@ export function buildUpgradeMessage(
|
||||
variant: 'short' | 'long',
|
||||
onUpgrade: () => void,
|
||||
) {
|
||||
if (!canUpgrade) { return 'Contact the site owner to upgrade the plan to raise limits.'; }
|
||||
if (!canUpgrade) { return t('LimitContactSiteOwner'); }
|
||||
|
||||
const upgradeLinkText = 'start your 30-day free trial of the Pro plan.';
|
||||
const upgradeLinkText = t('UpgradeLinkText')
|
||||
// TODO i18next
|
||||
return [
|
||||
variant === 'short' ? null : 'For higher limits, ',
|
||||
variant === 'short' ? null : t('ForHigherLimits'),
|
||||
buildUpgradeLink(
|
||||
variant === 'short' ? capitalizeFirstWord(upgradeLinkText) : upgradeLinkText,
|
||||
() => onUpgrade(),
|
||||
|
||||
Reference in New Issue
Block a user