summaryrefslogtreecommitdiff
path: root/packages/frontend
diff options
context:
space:
mode:
authorzyoshoka <107108195+zyoshoka@users.noreply.github.com>2024-08-30 10:58:11 +0900
committerGitHub <noreply@github.com>2024-08-30 10:58:11 +0900
commit06855f769f1fe8c84fc3bbef615dac0a9fd2cf7b (patch)
tree5d69a21575f1ab993c79ad35f66186f8df7c7d89 /packages/frontend
parentfix(backend): correct `app`-type notification schema (#14471) (diff)
downloadsharkey-06855f769f1fe8c84fc3bbef615dac0a9fd2cf7b.tar.gz
sharkey-06855f769f1fe8c84fc3bbef615dac0a9fd2cf7b.tar.bz2
sharkey-06855f769f1fe8c84fc3bbef615dac0a9fd2cf7b.zip
refactor(sw): use fully typed locales (#14470)
* refactor(sw): use fully typed locales * fix(backend): enumerate achievement notification type
Diffstat (limited to 'packages/frontend')
-rw-r--r--packages/frontend/src/scripts/i18n.ts49
-rw-r--r--packages/frontend/test/i18n.test.ts52
2 files changed, 52 insertions, 49 deletions
diff --git a/packages/frontend/src/scripts/i18n.ts b/packages/frontend/src/scripts/i18n.ts
index c2f44a33cc..b258a2a678 100644
--- a/packages/frontend/src/scripts/i18n.ts
+++ b/packages/frontend/src/scripts/i18n.ts
@@ -137,7 +137,6 @@ export class I18n<T extends ILocale> {
return this.tsxCache = new Proxy(this.locale, new Handler()) as unknown as Tsx<T>;
}
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (this.tsxCache) {
return this.tsxCache;
}
@@ -244,51 +243,3 @@ export class I18n<T extends ILocale> {
return str;
}
}
-
-if (import.meta.vitest) {
- const { describe, expect, it } = import.meta.vitest;
-
- describe('i18n', () => {
- it('t', () => {
- const i18n = new I18n({
- foo: 'foo',
- bar: {
- baz: 'baz',
- qux: 'qux {0}' as unknown as ParameterizedString<'0'>,
- quux: 'quux {0} {1}' as unknown as ParameterizedString<'0' | '1'>,
- },
- });
-
- expect(i18n.t('foo')).toBe('foo');
- expect(i18n.t('bar.baz')).toBe('baz');
- expect(i18n.tsx.bar.qux({ 0: 'hoge' })).toBe('qux hoge');
- expect(i18n.tsx.bar.quux({ 0: 'hoge', 1: 'fuga' })).toBe('quux hoge fuga');
- });
- it('ts', () => {
- const i18n = new I18n({
- foo: 'foo',
- bar: {
- baz: 'baz',
- qux: 'qux {0}' as unknown as ParameterizedString<'0'>,
- quux: 'quux {0} {1}' as unknown as ParameterizedString<'0' | '1'>,
- },
- });
-
- expect(i18n.ts.foo).toBe('foo');
- expect(i18n.ts.bar.baz).toBe('baz');
- });
- it('tsx', () => {
- const i18n = new I18n({
- foo: 'foo',
- bar: {
- baz: 'baz',
- qux: 'qux {0}' as unknown as ParameterizedString<'0'>,
- quux: 'quux {0} {1}' as unknown as ParameterizedString<'0' | '1'>,
- },
- });
-
- expect(i18n.tsx.bar.qux({ 0: 'hoge' })).toBe('qux hoge');
- expect(i18n.tsx.bar.quux({ 0: 'hoge', 1: 'fuga' })).toBe('quux hoge fuga');
- });
- });
-}
diff --git a/packages/frontend/test/i18n.test.ts b/packages/frontend/test/i18n.test.ts
new file mode 100644
index 0000000000..e1cab1f15f
--- /dev/null
+++ b/packages/frontend/test/i18n.test.ts
@@ -0,0 +1,52 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { describe, expect, it } from 'vitest';
+import { I18n } from '@/scripts/i18n.js';
+import { ParameterizedString } from '../../../locales/index.js';
+
+describe('i18n', () => {
+ it('t', () => {
+ const i18n = new I18n({
+ foo: 'foo',
+ bar: {
+ baz: 'baz',
+ qux: 'qux {0}' as unknown as ParameterizedString<'0'>,
+ quux: 'quux {0} {1}' as unknown as ParameterizedString<'0' | '1'>,
+ },
+ });
+
+ expect(i18n.t('foo')).toBe('foo');
+ expect(i18n.t('bar.baz')).toBe('baz');
+ expect(i18n.tsx.bar.qux({ 0: 'hoge' })).toBe('qux hoge');
+ expect(i18n.tsx.bar.quux({ 0: 'hoge', 1: 'fuga' })).toBe('quux hoge fuga');
+ });
+ it('ts', () => {
+ const i18n = new I18n({
+ foo: 'foo',
+ bar: {
+ baz: 'baz',
+ qux: 'qux {0}' as unknown as ParameterizedString<'0'>,
+ quux: 'quux {0} {1}' as unknown as ParameterizedString<'0' | '1'>,
+ },
+ });
+
+ expect(i18n.ts.foo).toBe('foo');
+ expect(i18n.ts.bar.baz).toBe('baz');
+ });
+ it('tsx', () => {
+ const i18n = new I18n({
+ foo: 'foo',
+ bar: {
+ baz: 'baz',
+ qux: 'qux {0}' as unknown as ParameterizedString<'0'>,
+ quux: 'quux {0} {1}' as unknown as ParameterizedString<'0' | '1'>,
+ },
+ });
+
+ expect(i18n.tsx.bar.qux({ 0: 'hoge' })).toBe('qux hoge');
+ expect(i18n.tsx.bar.quux({ 0: 'hoge', 1: 'fuga' })).toBe('quux hoge fuga');
+ });
+});