@scrabble-solver/scrabble-solver 2.13.13 → 2.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +5 -5
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/eslint/.cache_8dgz12 +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack.old +0 -0
- package/.next/prerender-manifest.js +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/807.js +1 -1
- package/.next/server/chunks/911.js +1 -1
- package/.next/server/chunks/977.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/api/dictionary/[locale]/[word].js +2 -2
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/index.js +1 -1
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/index.json +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/static/{qwJjm2FeDHHGY92CY5oQQ → C0yfLTukP3L3iDqdXbbBv}/_buildManifest.js +1 -1
- package/.next/static/chunks/pages/_app-e73bbdbc75537614.js +17 -0
- package/.next/static/chunks/pages/index-4143525ec0fa83bb.js +1 -0
- package/.next/static/css/{2adc9736d823979b.css → ac3349339fcf58f2.css} +1 -1
- package/.next/trace +45 -45
- package/package.json +12 -12
- package/src/components/Alert/Alert.tsx +1 -1
- package/src/components/Board/Board.tsx +3 -3
- package/src/components/Board/BoardPure.tsx +1 -1
- package/src/components/Button/Button.tsx +1 -1
- package/src/components/IconButton/IconButton.tsx +1 -1
- package/src/components/IconButton/Link.tsx +1 -1
- package/src/components/Keys/Arrows/Arrows.tsx +4 -4
- package/src/components/NotFound/NotFound.tsx +1 -1
- package/src/components/Radio/Radio.module.scss +3 -2
- package/src/components/Radio/Radio.tsx +1 -1
- package/src/components/Results/HeaderButton.tsx +1 -1
- package/src/components/Results/Results.module.scss +5 -8
- package/src/components/Solver/components/ResultCandidatePicker/ResultCandidatePicker.tsx +1 -1
- package/src/components/Tile/TilePure.tsx +1 -1
- package/src/i18n/constants.ts +12 -1
- package/src/i18n/i18n.ts +2 -0
- package/src/i18n/languages/turkish.json +78 -0
- package/src/icons/FlagTr.svg +4 -0
- package/src/icons/index.ts +1 -0
- package/src/modals/MenuModal/MenuModal.tsx +1 -1
- package/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.tsx +1 -1
- package/src/modals/WordsModal/WordsModal.tsx +2 -2
- package/src/pages/_app.tsx +11 -2
- package/.next/static/chunks/pages/_app-42ce6b4032e931ff.js +0 -17
- package/.next/static/chunks/pages/index-3718075f2ba2220c.js +0 -1
- /package/.next/static/{qwJjm2FeDHHGY92CY5oQQ → C0yfLTukP3L3iDqdXbbBv}/_ssgManifest.js +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scrabble-solver/scrabble-solver",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.15.0",
|
|
4
4
|
"description": "Scrabble Solver 2 - App",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=16"
|
|
@@ -27,16 +27,16 @@
|
|
|
27
27
|
"start": "env-cmd next start -p 3333"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@floating-ui/react": "^0.26.
|
|
30
|
+
"@floating-ui/react": "^0.26.20",
|
|
31
31
|
"@kamilmielnik/trie": "^3.0.0",
|
|
32
|
-
"@reduxjs/toolkit": "^2.2.
|
|
33
|
-
"@scrabble-solver/configs": "^2.
|
|
34
|
-
"@scrabble-solver/constants": "^2.
|
|
35
|
-
"@scrabble-solver/dictionaries": "^2.
|
|
36
|
-
"@scrabble-solver/logger": "^2.
|
|
37
|
-
"@scrabble-solver/solver": "^2.
|
|
38
|
-
"@scrabble-solver/types": "^2.
|
|
39
|
-
"@scrabble-solver/word-definitions": "^2.
|
|
32
|
+
"@reduxjs/toolkit": "^2.2.7",
|
|
33
|
+
"@scrabble-solver/configs": "^2.15.0",
|
|
34
|
+
"@scrabble-solver/constants": "^2.15.0",
|
|
35
|
+
"@scrabble-solver/dictionaries": "^2.15.0",
|
|
36
|
+
"@scrabble-solver/logger": "^2.15.0",
|
|
37
|
+
"@scrabble-solver/solver": "^2.15.0",
|
|
38
|
+
"@scrabble-solver/types": "^2.15.0",
|
|
39
|
+
"@scrabble-solver/word-definitions": "^2.15.0",
|
|
40
40
|
"classnames": "^2.5.1",
|
|
41
41
|
"env-cmd": "^10.1.0",
|
|
42
42
|
"include-media": "^2.0.0",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"react-window": "^1.8.10",
|
|
53
53
|
"redux-saga": "^1.3.0",
|
|
54
54
|
"store2": "^2.14.3",
|
|
55
|
-
"use-debounce": "^10.0.
|
|
55
|
+
"use-debounce": "^10.0.2",
|
|
56
56
|
"workbox-expiration": "^7.1.0",
|
|
57
57
|
"workbox-precaching": "^7.1.0",
|
|
58
58
|
"workbox-routing": "^7.1.0",
|
|
@@ -73,5 +73,5 @@
|
|
|
73
73
|
"@types/redux-saga": "^0.10.5",
|
|
74
74
|
"sass": "^1.77.8"
|
|
75
75
|
},
|
|
76
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "4c23b3525f7cb2b1fae4ec0d9271cffab810f7d3"
|
|
77
77
|
}
|
|
@@ -32,7 +32,7 @@ const Alert: FunctionComponent<Props> = ({ children, className, variant, ...prop
|
|
|
32
32
|
{...props}
|
|
33
33
|
>
|
|
34
34
|
<div className={styles.iconContainer}>
|
|
35
|
-
<Icon className={styles.icon} />
|
|
35
|
+
<Icon aria-hidden="true" className={styles.icon} role="img" />
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
<div className={styles.content}>{children}</div>
|
|
@@ -9,7 +9,7 @@ import { useDispatch } from 'react-redux';
|
|
|
9
9
|
|
|
10
10
|
import { useAppLayout } from 'hooks';
|
|
11
11
|
import { LOCALE_FEATURES } from 'i18n';
|
|
12
|
-
import {
|
|
12
|
+
import { TRANSITION } from 'parameters';
|
|
13
13
|
import {
|
|
14
14
|
boardSlice,
|
|
15
15
|
cellFilterSlice,
|
|
@@ -176,8 +176,8 @@ const Board: FunctionComponent<Props> = ({ className }) => {
|
|
|
176
176
|
ref={floatingFocus.refs.setFloating}
|
|
177
177
|
style={{
|
|
178
178
|
position: floatingFocus.strategy,
|
|
179
|
-
top: floatingFocus.y + cellSize
|
|
180
|
-
left: floatingFocus.x
|
|
179
|
+
top: floatingFocus.y + cellSize,
|
|
180
|
+
left: floatingFocus.x,
|
|
181
181
|
width: cellSize,
|
|
182
182
|
height: cellSize,
|
|
183
183
|
opacity: hasFocus ? 1 : 0,
|
|
@@ -34,7 +34,7 @@ const Button: FunctionComponent<Props> = ({
|
|
|
34
34
|
{...props}
|
|
35
35
|
>
|
|
36
36
|
<span className={styles.content}>
|
|
37
|
-
{Icon && <Icon className={classNames(styles.icon, iconClassName)} />}
|
|
37
|
+
{Icon && <Icon aria-hidden="true" className={classNames(styles.icon, iconClassName)} role="img" />}
|
|
38
38
|
{children && <span className={styles.label}>{children}</span>}
|
|
39
39
|
</span>
|
|
40
40
|
</button>
|
|
@@ -19,7 +19,7 @@ const IconButton: FunctionComponent<Props> = ({ className, Icon, tooltip, ...pro
|
|
|
19
19
|
<Tooltip tooltip={tooltip}>
|
|
20
20
|
<button className={classNames(styles.iconButton, className)} type="button" {...props}>
|
|
21
21
|
<span className={styles.content}>
|
|
22
|
-
<Icon className={styles.icon} />
|
|
22
|
+
<Icon aria-hidden="true" className={styles.icon} role="img" />
|
|
23
23
|
</span>
|
|
24
24
|
</button>
|
|
25
25
|
</Tooltip>
|
|
@@ -18,7 +18,7 @@ const Link: FunctionComponent<Props> = ({ className, Icon, tooltip, ...props })
|
|
|
18
18
|
<Tooltip tooltip={tooltip}>
|
|
19
19
|
<a className={classNames(styles.iconButton, className)} {...props}>
|
|
20
20
|
<span className={styles.content}>
|
|
21
|
-
<Icon className={styles.icon} />
|
|
21
|
+
<Icon aria-hidden="true" className={styles.icon} role="img" />
|
|
22
22
|
</span>
|
|
23
23
|
</a>
|
|
24
24
|
</Tooltip>
|
|
@@ -14,16 +14,16 @@ interface Props {
|
|
|
14
14
|
const Arrows: FunctionComponent<Props> = ({ className }) => (
|
|
15
15
|
<div className={classNames(styles.arrows, className)}>
|
|
16
16
|
<Key className={classNames(styles.arrow, styles.left)}>
|
|
17
|
-
<ArrowLeft />
|
|
17
|
+
<ArrowLeft aria-hidden="true" role="img" />
|
|
18
18
|
</Key>
|
|
19
19
|
<Key className={classNames(styles.arrow, styles.up)}>
|
|
20
|
-
<ArrowUp />
|
|
20
|
+
<ArrowUp aria-hidden="true" role="img" />
|
|
21
21
|
</Key>
|
|
22
22
|
<Key className={classNames(styles.arrow, styles.right)}>
|
|
23
|
-
<ArrowRight />
|
|
23
|
+
<ArrowRight aria-hidden="true" role="img" />
|
|
24
24
|
</Key>
|
|
25
25
|
<Key className={classNames(styles.arrow, styles.down)}>
|
|
26
|
-
<ArrowDown />
|
|
26
|
+
<ArrowDown aria-hidden="true" role="img" />
|
|
27
27
|
</Key>
|
|
28
28
|
</div>
|
|
29
29
|
);
|
|
@@ -11,7 +11,7 @@ const CONTENT = [['HTTP', '404']];
|
|
|
11
11
|
const NotFound: FunctionComponent = () => (
|
|
12
12
|
<div className={styles.notFound}>
|
|
13
13
|
<a className={styles.link} href="/">
|
|
14
|
-
<DashCircleFill className={styles.icon} />
|
|
14
|
+
<DashCircleFill aria-hidden="true" className={styles.icon} role="img" />
|
|
15
15
|
<PlainTiles className={styles.tiles} content={CONTENT} />
|
|
16
16
|
</a>
|
|
17
17
|
</div>
|
|
@@ -51,8 +51,9 @@ $radio-box-size: $radio-size + 2 * $radio-inner-border;
|
|
|
51
51
|
&::after {
|
|
52
52
|
content: ' ';
|
|
53
53
|
position: absolute;
|
|
54
|
-
top:
|
|
55
|
-
left:
|
|
54
|
+
top: 50%;
|
|
55
|
+
left: 50%;
|
|
56
|
+
transform: translate(-50%, -50%);
|
|
56
57
|
width: $radio-inner-size;
|
|
57
58
|
height: $radio-inner-size;
|
|
58
59
|
background-color: transparent;
|
|
@@ -30,7 +30,7 @@ const Radio: FunctionComponent<Props> = ({ checked, children, className, disable
|
|
|
30
30
|
onChange={onChange}
|
|
31
31
|
/>
|
|
32
32
|
|
|
33
|
-
<div className={styles.icon} />
|
|
33
|
+
<div aria-hidden="true" className={styles.icon} role="img" />
|
|
34
34
|
|
|
35
35
|
<div className={styles.content}>{children}</div>
|
|
36
36
|
</label>
|
|
@@ -37,7 +37,7 @@ const HeaderButton = ({ className, Icon, id, translationKey, style }: Props): Re
|
|
|
37
37
|
onClick={handleClick}
|
|
38
38
|
>
|
|
39
39
|
<span className={styles.cell}>
|
|
40
|
-
{Icon && <Icon className={styles.headerButtonIcon} />}
|
|
40
|
+
{Icon && <Icon aria-hidden="true" className={styles.headerButtonIcon} role="img" />}
|
|
41
41
|
|
|
42
42
|
{!Icon && <span className={styles.headerButtonLabel}>{translate(translationKey)}</span>}
|
|
43
43
|
|
|
@@ -56,7 +56,9 @@ $row-padding-horizontal: calc(var(--spacing--m) + var(--spacing--s));
|
|
|
56
56
|
cursor: pointer;
|
|
57
57
|
|
|
58
58
|
text-transform: uppercase;
|
|
59
|
-
transition:
|
|
59
|
+
transition:
|
|
60
|
+
background-color var(--transition--duration) var(--transition--easing),
|
|
61
|
+
color var(--transition--duration) var(--transition--easing);
|
|
60
62
|
background-color: var(--color--background);
|
|
61
63
|
height: 100%;
|
|
62
64
|
|
|
@@ -138,6 +140,7 @@ $row-padding-horizontal: calc(var(--spacing--m) + var(--spacing--s));
|
|
|
138
140
|
|
|
139
141
|
.word {
|
|
140
142
|
@include ellipsis;
|
|
143
|
+
|
|
141
144
|
display: flex;
|
|
142
145
|
}
|
|
143
146
|
}
|
|
@@ -147,17 +150,12 @@ $row-padding-horizontal: calc(var(--spacing--m) + var(--spacing--s));
|
|
|
147
150
|
align-items: center;
|
|
148
151
|
justify-content: center;
|
|
149
152
|
height: 100%;
|
|
150
|
-
padding: 0 var(--spacing--s);
|
|
151
153
|
gap: var(--spacing--s);
|
|
152
154
|
line-height: var(--results--item--height);
|
|
153
155
|
|
|
154
|
-
&.word,
|
|
156
|
+
.result &.word,
|
|
155
157
|
.headerButton.word & {
|
|
156
158
|
justify-content: flex-start;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
.result &.word:first-child,
|
|
160
|
-
.headerButton.word:first-child & {
|
|
161
159
|
padding-inline-start: $row-padding-horizontal;
|
|
162
160
|
}
|
|
163
161
|
|
|
@@ -183,7 +181,6 @@ $row-padding-horizontal: calc(var(--spacing--m) + var(--spacing--s));
|
|
|
183
181
|
$width: 80px;
|
|
184
182
|
|
|
185
183
|
flex: 1 0 $width;
|
|
186
|
-
max-width: $width;
|
|
187
184
|
font-weight: bold;
|
|
188
185
|
}
|
|
189
186
|
|
|
@@ -90,7 +90,7 @@ const ResultCandidatePicker: FunctionComponent<Props> = ({ className, onResultCl
|
|
|
90
90
|
|
|
91
91
|
<div className={styles.iconContainer}>
|
|
92
92
|
{isLoading && <Spinner className={styles.loading} />}
|
|
93
|
-
{!isLoading && <ChevronDown className={styles.icon} />}
|
|
93
|
+
{!isLoading && <ChevronDown aria-hidden="true" className={styles.icon} role="img" />}
|
|
94
94
|
</div>
|
|
95
95
|
</button>
|
|
96
96
|
|
|
@@ -107,7 +107,7 @@ const TilePure: FunctionComponent<Props> = ({
|
|
|
107
107
|
</span>
|
|
108
108
|
)}
|
|
109
109
|
|
|
110
|
-
{!isValid && <ExclamationSquareFill className={styles.alert} />}
|
|
110
|
+
{!isValid && <ExclamationSquareFill aria-hidden="true" className={styles.alert} role="img" />}
|
|
111
111
|
</div>
|
|
112
112
|
);
|
|
113
113
|
|
package/src/i18n/constants.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { COMMA_ARABIC, COMMA_LATIN } from '@scrabble-solver/constants';
|
|
|
2
2
|
import { Locale } from '@scrabble-solver/types';
|
|
3
3
|
import { FunctionComponent, SVGAttributes } from 'react';
|
|
4
4
|
|
|
5
|
-
import { FlagDe, FlagEs, FlagFa, FlagFr, FlagGb, FlagPl, FlagRo, FlagUs } from 'icons';
|
|
5
|
+
import { FlagDe, FlagEs, FlagFa, FlagFr, FlagGb, FlagPl, FlagRo, FlagTr, FlagUs } from 'icons';
|
|
6
6
|
|
|
7
7
|
interface LocaleFeatures {
|
|
8
8
|
comma: string;
|
|
@@ -105,4 +105,15 @@ export const LOCALE_FEATURES: Record<Locale, LocaleFeatures> = {
|
|
|
105
105
|
separator: `${COMMA_LATIN} `,
|
|
106
106
|
vowels: true,
|
|
107
107
|
},
|
|
108
|
+
[Locale.TR_TR]: {
|
|
109
|
+
comma: COMMA_LATIN,
|
|
110
|
+
consonants: true,
|
|
111
|
+
direction: 'ltr',
|
|
112
|
+
Icon: FlagTr,
|
|
113
|
+
label: 'Türkçe',
|
|
114
|
+
locale: Locale.TR_TR,
|
|
115
|
+
name: 'Turkish',
|
|
116
|
+
separator: `${COMMA_LATIN} `,
|
|
117
|
+
vowels: true,
|
|
118
|
+
},
|
|
108
119
|
};
|
package/src/i18n/i18n.ts
CHANGED
|
@@ -9,6 +9,7 @@ import persian from './languages/persian.json';
|
|
|
9
9
|
import polish from './languages/polish.json';
|
|
10
10
|
import romanian from './languages/romanian.json';
|
|
11
11
|
import spanish from './languages/spanish.json';
|
|
12
|
+
import turkish from './languages/turkish.json';
|
|
12
13
|
|
|
13
14
|
const i18n: Record<Locale, Translations> = {
|
|
14
15
|
[Locale.DE_DE]: german,
|
|
@@ -19,6 +20,7 @@ const i18n: Record<Locale, Translations> = {
|
|
|
19
20
|
[Locale.FR_FR]: french,
|
|
20
21
|
[Locale.PL_PL]: polish,
|
|
21
22
|
[Locale.RO_RO]: romanian,
|
|
23
|
+
[Locale.TR_TR]: turkish,
|
|
22
24
|
};
|
|
23
25
|
|
|
24
26
|
export default i18n;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cell.enter-word": "Kelimeyi girin",
|
|
3
|
+
"cell.filter-cell.exclude": "Hedefi hariç tut",
|
|
4
|
+
"cell.filter-cell.include": "Hedef varış noktası",
|
|
5
|
+
"cell.set-blank": "Boş olarak işaretle",
|
|
6
|
+
"cell.set-not-blank": "Boş değil olarak işaretle",
|
|
7
|
+
"cell.tile.location": "Tahta: harfler ({{x}}, {{y}})",
|
|
8
|
+
"cell.toggle-direction": "Yazma yönü - geçiş yapmak için tıklayın",
|
|
9
|
+
"common.arrows": "Ok tuşları",
|
|
10
|
+
"common.blanks": "Jokerler",
|
|
11
|
+
"common.clear": "Sıfırla",
|
|
12
|
+
"common.close": "Kapat",
|
|
13
|
+
"common.consonants": "Ünlü harfler",
|
|
14
|
+
"common.loading": "Yükleniyor",
|
|
15
|
+
"common.next": "Sonraki",
|
|
16
|
+
"common.points": "Puanlar",
|
|
17
|
+
"common.previous": "Öncesi",
|
|
18
|
+
"common.space": "Boşluk çubuğu",
|
|
19
|
+
"common.tiles": "Taşlar",
|
|
20
|
+
"common.two-letter-tiles": "İki Harfli",
|
|
21
|
+
"common.vowels": "Ünsüz harfler",
|
|
22
|
+
"common.word": "Kelime",
|
|
23
|
+
"common.words": "Kelimeler",
|
|
24
|
+
"dictionary": "Sözlük",
|
|
25
|
+
"dictionary.empty-state.no-definitions": "Kelime sözlükte var ama tanımı yok.",
|
|
26
|
+
"dictionary.empty-state.no-results": "Sözlükte kelime tanımı bulunamadı.",
|
|
27
|
+
"dictionary.empty-state.not-allowed": "Bu kelimeye izin verilmiyor.",
|
|
28
|
+
"dictionary.empty-state.uninitialized": "En son vurgulanan kelimenin sözlük tanımı burada gösterilecektir.",
|
|
29
|
+
"dictionary.input.placeholder": "Sözlükte ara...",
|
|
30
|
+
"dictionary.input.title": "Virgülle ayrılmış kelimeler",
|
|
31
|
+
"empty-state.error": "Hata",
|
|
32
|
+
"empty-state.info": "Bilgi",
|
|
33
|
+
"empty-state.success": "Evet!",
|
|
34
|
+
"empty-state.warning": "Aman hayır!",
|
|
35
|
+
"github": "GitHub'da bu projeye bakın",
|
|
36
|
+
"keyMap": "Klavye Kısayolları",
|
|
37
|
+
"keyMap.board": "Tahta",
|
|
38
|
+
"keyMap.board.toggle-blank": "Taşı joker olarak işaretle/olmaktan çıkar",
|
|
39
|
+
"keyMap.board.toggle-cell-filter": "Hedef filtresini değiştir",
|
|
40
|
+
"keyMap.board.toggle-direction": "Yazma yönünü değiştir",
|
|
41
|
+
"keyMap.board-and-rack": "Tahta ve Deste",
|
|
42
|
+
"keyMap.board-and-rack.insert-two-letter-tile": "İki harfli kutucuğu ekle",
|
|
43
|
+
"keyMap.board-and-rack.navigate": "Gezinme",
|
|
44
|
+
"keyMap.board-and-rack.remove-tile": "Taşı kaldır",
|
|
45
|
+
"keyMap.board-and-rack.submit": "Çözmeye başla",
|
|
46
|
+
"keyMap.rack": "Deste",
|
|
47
|
+
"keyMap.rack.insert-blank": "Joker ekle (spacebar)",
|
|
48
|
+
"menu": "Menü",
|
|
49
|
+
"rack.placeholder": "Taşlar…",
|
|
50
|
+
"rack.tile.location": "Deste: harfler ({{index}})",
|
|
51
|
+
"rack.touchscreen.placeholder": "Taşlar…",
|
|
52
|
+
"remaining-tiles": "Kalan taşlar",
|
|
53
|
+
"results": "Sonuçlar",
|
|
54
|
+
"results.empty-state.no-results": "Sonuç bulunamadı - kelime üretilemedi.",
|
|
55
|
+
"results.empty-state.outdated": "Sonuçlar güncelliğini yitirmiştir.",
|
|
56
|
+
"results.empty-state.uninitialized": "Harflerinizden oluşturulan kelimeler burada gösterilecektir.",
|
|
57
|
+
"results.input.placeholder": "Sonuçları Ara... (RegExp)",
|
|
58
|
+
"results.insert": "Sokmak",
|
|
59
|
+
"results.preview": "Önizleme",
|
|
60
|
+
"results.solve": "Çöz",
|
|
61
|
+
"settings": "Ayarlar",
|
|
62
|
+
"settings.autoGroupTiles": "Kalan taşları grupla",
|
|
63
|
+
"settings.autoGroupTiles.left": "Soldaki",
|
|
64
|
+
"settings.autoGroupTiles.right": "Sağdaki",
|
|
65
|
+
"settings.autoGroupTiles.null": "Gruplamayın",
|
|
66
|
+
"settings.game": "Oyun",
|
|
67
|
+
"settings.inputMode": "Giriş Methodu",
|
|
68
|
+
"settings.inputMode.keyboard": "Klavye",
|
|
69
|
+
"settings.inputMode.touchscreen": "Dokunmatik ekran",
|
|
70
|
+
"settings.language": "Dil",
|
|
71
|
+
"settings.showCoordinates": "Koordinatlar",
|
|
72
|
+
"settings.showCoordinates.alternative": "Alternatif",
|
|
73
|
+
"settings.showCoordinates.hidden": "Gizlenmiş",
|
|
74
|
+
"settings.showCoordinates.original": "Orijinal",
|
|
75
|
+
"words": "Oluşturulan kelimeler",
|
|
76
|
+
"words.invalid": "Geçersiz",
|
|
77
|
+
"words.valid": "Geçerli"
|
|
78
|
+
}
|
package/src/icons/index.ts
CHANGED
|
@@ -27,6 +27,7 @@ export { default as FlagFr } from './FlagFr.svg';
|
|
|
27
27
|
export { default as FlagGb } from './FlagGb.svg';
|
|
28
28
|
export { default as FlagPl } from './FlagPl.svg';
|
|
29
29
|
export { default as FlagRo } from './FlagRo.svg';
|
|
30
|
+
export { default as FlagTr } from './FlagTr.svg';
|
|
30
31
|
export { default as FlagUs } from './FlagUs.svg';
|
|
31
32
|
export { default as GeoAlt } from './GeoAlt.svg';
|
|
32
33
|
export { default as Github } from './Github.svg';
|
|
@@ -64,7 +64,7 @@ const MenuModal: FunctionComponent<Props> = ({
|
|
|
64
64
|
<Button aria-label={translate('settings')} className={styles.button} Icon={Cog} onClick={onShowSettings}>
|
|
65
65
|
<div className={styles.settings}>
|
|
66
66
|
<div className={styles.settingsLabel}>{translate('settings')}</div>
|
|
67
|
-
<Icon className={styles.flag} />
|
|
67
|
+
<Icon aria-hidden="true" className={styles.flag} role="img" />
|
|
68
68
|
</div>
|
|
69
69
|
</Button>
|
|
70
70
|
</Modal>
|
|
@@ -40,7 +40,7 @@ const LocaleSetting: FunctionComponent<Props> = ({ className, disabled }) => {
|
|
|
40
40
|
onChange={handleChange}
|
|
41
41
|
>
|
|
42
42
|
<span className={styles.label}>
|
|
43
|
-
<Icon className={styles.flag} />
|
|
43
|
+
<Icon aria-hidden="true" className={styles.flag} role="img" />
|
|
44
44
|
|
|
45
45
|
<span>{option.label}</span>
|
|
46
46
|
</span>
|
|
@@ -31,7 +31,7 @@ const WordsModal: FunctionComponent<Props> = ({ className, isOpen, onClose }) =>
|
|
|
31
31
|
>
|
|
32
32
|
{invalidWords.map((word, index) => (
|
|
33
33
|
<div className={styles.word} key={index}>
|
|
34
|
-
<Cross className={classNames(styles.icon, styles.invalid)} /> {word}
|
|
34
|
+
<Cross aria-hidden="true" className={classNames(styles.icon, styles.invalid)} role="img" /> {word}
|
|
35
35
|
</div>
|
|
36
36
|
))}
|
|
37
37
|
</Modal.Section>
|
|
@@ -47,7 +47,7 @@ const WordsModal: FunctionComponent<Props> = ({ className, isOpen, onClose }) =>
|
|
|
47
47
|
>
|
|
48
48
|
{validWords.map((word, index) => (
|
|
49
49
|
<div className={styles.word} key={index}>
|
|
50
|
-
<Check className={classNames(styles.icon, styles.valid)} /> {word}
|
|
50
|
+
<Check aria-hidden="true" className={classNames(styles.icon, styles.valid)} role="img" /> {word}
|
|
51
51
|
</div>
|
|
52
52
|
))}
|
|
53
53
|
</Modal.Section>
|
package/src/pages/_app.tsx
CHANGED
|
@@ -18,7 +18,8 @@ const KEYWORDS = [
|
|
|
18
18
|
'Scrabble',
|
|
19
19
|
'Solver',
|
|
20
20
|
'Super Scrabble',
|
|
21
|
-
'
|
|
21
|
+
'Kelimelik',
|
|
22
|
+
'Literaki',
|
|
22
23
|
'Board',
|
|
23
24
|
'Open-source',
|
|
24
25
|
'Open',
|
|
@@ -26,14 +27,22 @@ const KEYWORDS = [
|
|
|
26
27
|
'Word',
|
|
27
28
|
'Finder',
|
|
28
29
|
'Cheating',
|
|
29
|
-
'Literaki',
|
|
30
30
|
'Word',
|
|
31
31
|
'English',
|
|
32
32
|
'Français',
|
|
33
|
+
'French',
|
|
33
34
|
'Deutsch',
|
|
35
|
+
'German',
|
|
34
36
|
'Polski',
|
|
37
|
+
'Polish',
|
|
35
38
|
'فارسی',
|
|
39
|
+
'Farsi',
|
|
36
40
|
'Español',
|
|
41
|
+
'Spanish',
|
|
42
|
+
'Română',
|
|
43
|
+
'Romanian',
|
|
44
|
+
'Türkçe',
|
|
45
|
+
'Turkish',
|
|
37
46
|
'SOWPODS',
|
|
38
47
|
'TWL06',
|
|
39
48
|
'SJP',
|