Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
8f43e807
Unverified
Commit
8f43e807
authored
Mar 08, 2026
by
memoclaw
Committed by
GitHub
Mar 08, 2026
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: correct typos in comments, error messages, and identifiers (#5704)
Co-authored-by:
Claude Opus 4.6
<
noreply@anthropic.com
>
parent
bdd3554b
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
29 additions
and
29 deletions
+29
-29
parser.go
plugin/cron/parser.go
+1
-1
oauth2.go
plugin/idp/oauth2/oauth2.go
+1
-1
s3.go
plugin/storage/s3/s3.go
+1
-1
attachment_service.proto
proto/api/v1/attachment_service.proto
+3
-3
attachment_service.connect.go
proto/gen/api/v1/apiv1connect/attachment_service.connect.go
+6
-6
attachment_service_grpc.pb.go
proto/gen/api/v1/attachment_service_grpc.pb.go
+6
-6
openapi.yaml
proto/gen/openapi.yaml
+3
-3
attachment_service.go
server/router/api/v1/attachment_service.go
+1
-1
mysql.go
store/db/mysql/mysql.go
+1
-1
attachment_service_pb.ts
web/src/types/proto/api/v1/attachment_service_pb.ts
+3
-3
i18n.ts
web/src/utils/i18n.ts
+3
-3
No files found.
plugin/cron/parser.go
View file @
8f43e807
...
@@ -12,7 +12,7 @@ import (
...
@@ -12,7 +12,7 @@ import (
// Configuration options for creating a parser. Most options specify which
// Configuration options for creating a parser. Most options specify which
// fields should be included, while others enable features. If a field is not
// fields should be included, while others enable features. If a field is not
// included the parser will assume a default value. These options do not change
// included the parser will assume a default value. These options do not change
// the order fields are parse in.
// the order fields are parse
d
in.
type
ParseOption
int
type
ParseOption
int
const
(
const
(
...
...
plugin/idp/oauth2/oauth2.go
View file @
8f43e807
...
@@ -82,7 +82,7 @@ func (p *IdentityProvider) UserInfo(token string) (*idp.IdentityProviderUserInfo
...
@@ -82,7 +82,7 @@ func (p *IdentityProvider) UserInfo(token string) (*idp.IdentityProviderUserInfo
client
:=
&
http
.
Client
{}
client
:=
&
http
.
Client
{}
req
,
err
:=
http
.
NewRequest
(
http
.
MethodGet
,
p
.
config
.
UserInfoUrl
,
nil
)
req
,
err
:=
http
.
NewRequest
(
http
.
MethodGet
,
p
.
config
.
UserInfoUrl
,
nil
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrap
(
err
,
"failed to
new
http request"
)
return
nil
,
errors
.
Wrap
(
err
,
"failed to
create
http request"
)
}
}
req
.
Header
.
Set
(
"Content-Type"
,
"application/json"
)
req
.
Header
.
Set
(
"Content-Type"
,
"application/json"
)
req
.
Header
.
Set
(
"Authorization"
,
fmt
.
Sprintf
(
"Bearer %s"
,
token
))
req
.
Header
.
Set
(
"Authorization"
,
fmt
.
Sprintf
(
"Bearer %s"
,
token
))
...
...
plugin/storage/s3/s3.go
View file @
8f43e807
...
@@ -74,7 +74,7 @@ func (c *Client) PresignGetObject(ctx context.Context, key string) (string, erro
...
@@ -74,7 +74,7 @@ func (c *Client) PresignGetObject(ctx context.Context, key string) (string, erro
opts
.
Expires
=
time
.
Duration
(
5
*
24
*
time
.
Hour
)
opts
.
Expires
=
time
.
Duration
(
5
*
24
*
time
.
Hour
)
})
})
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
errors
.
Wrap
(
err
,
"failed to presign
pu
t object"
)
return
""
,
errors
.
Wrap
(
err
,
"failed to presign
ge
t object"
)
}
}
return
presignResult
.
URL
,
nil
return
presignResult
.
URL
,
nil
}
}
...
...
proto/api/v1/attachment_service.proto
View file @
8f43e807
...
@@ -25,12 +25,12 @@ service AttachmentService {
...
@@ -25,12 +25,12 @@ service AttachmentService {
rpc
ListAttachments
(
ListAttachmentsRequest
)
returns
(
ListAttachmentsResponse
)
{
rpc
ListAttachments
(
ListAttachmentsRequest
)
returns
(
ListAttachmentsResponse
)
{
option
(
google.api.http
)
=
{
get
:
"/api/v1/attachments"
};
option
(
google.api.http
)
=
{
get
:
"/api/v1/attachments"
};
}
}
// GetAttachment returns a attachment by name.
// GetAttachment returns a
n
attachment by name.
rpc
GetAttachment
(
GetAttachmentRequest
)
returns
(
Attachment
)
{
rpc
GetAttachment
(
GetAttachmentRequest
)
returns
(
Attachment
)
{
option
(
google.api.http
)
=
{
get
:
"/api/v1/{name=attachments/*}"
};
option
(
google.api.http
)
=
{
get
:
"/api/v1/{name=attachments/*}"
};
option
(
google.api.method_signature
)
=
"name"
;
option
(
google.api.method_signature
)
=
"name"
;
}
}
// UpdateAttachment updates a attachment.
// UpdateAttachment updates a
n
attachment.
rpc
UpdateAttachment
(
UpdateAttachmentRequest
)
returns
(
Attachment
)
{
rpc
UpdateAttachment
(
UpdateAttachmentRequest
)
returns
(
Attachment
)
{
option
(
google.api.http
)
=
{
option
(
google.api.http
)
=
{
patch
:
"/api/v1/{attachment.name=attachments/*}"
patch
:
"/api/v1/{attachment.name=attachments/*}"
...
@@ -38,7 +38,7 @@ service AttachmentService {
...
@@ -38,7 +38,7 @@ service AttachmentService {
};
};
option
(
google.api.method_signature
)
=
"attachment,update_mask"
;
option
(
google.api.method_signature
)
=
"attachment,update_mask"
;
}
}
// DeleteAttachment deletes a attachment by name.
// DeleteAttachment deletes a
n
attachment by name.
rpc
DeleteAttachment
(
DeleteAttachmentRequest
)
returns
(
google.protobuf.Empty
)
{
rpc
DeleteAttachment
(
DeleteAttachmentRequest
)
returns
(
google.protobuf.Empty
)
{
option
(
google.api.http
)
=
{
delete
:
"/api/v1/{name=attachments/*}"
};
option
(
google.api.http
)
=
{
delete
:
"/api/v1/{name=attachments/*}"
};
option
(
google.api.method_signature
)
=
"name"
;
option
(
google.api.method_signature
)
=
"name"
;
...
...
proto/gen/api/v1/apiv1connect/attachment_service.connect.go
View file @
8f43e807
...
@@ -57,11 +57,11 @@ type AttachmentServiceClient interface {
...
@@ -57,11 +57,11 @@ type AttachmentServiceClient interface {
CreateAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
CreateAttachmentRequest
])
(
*
connect
.
Response
[
v1
.
Attachment
],
error
)
CreateAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
CreateAttachmentRequest
])
(
*
connect
.
Response
[
v1
.
Attachment
],
error
)
// ListAttachments lists all attachments.
// ListAttachments lists all attachments.
ListAttachments
(
context
.
Context
,
*
connect
.
Request
[
v1
.
ListAttachmentsRequest
])
(
*
connect
.
Response
[
v1
.
ListAttachmentsResponse
],
error
)
ListAttachments
(
context
.
Context
,
*
connect
.
Request
[
v1
.
ListAttachmentsRequest
])
(
*
connect
.
Response
[
v1
.
ListAttachmentsResponse
],
error
)
// GetAttachment returns a attachment by name.
// GetAttachment returns a
n
attachment by name.
GetAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
GetAttachmentRequest
])
(
*
connect
.
Response
[
v1
.
Attachment
],
error
)
GetAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
GetAttachmentRequest
])
(
*
connect
.
Response
[
v1
.
Attachment
],
error
)
// UpdateAttachment updates a attachment.
// UpdateAttachment updates a
n
attachment.
UpdateAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
UpdateAttachmentRequest
])
(
*
connect
.
Response
[
v1
.
Attachment
],
error
)
UpdateAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
UpdateAttachmentRequest
])
(
*
connect
.
Response
[
v1
.
Attachment
],
error
)
// DeleteAttachment deletes a attachment by name.
// DeleteAttachment deletes a
n
attachment by name.
DeleteAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
DeleteAttachmentRequest
])
(
*
connect
.
Response
[
emptypb
.
Empty
],
error
)
DeleteAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
DeleteAttachmentRequest
])
(
*
connect
.
Response
[
emptypb
.
Empty
],
error
)
}
}
...
@@ -149,11 +149,11 @@ type AttachmentServiceHandler interface {
...
@@ -149,11 +149,11 @@ type AttachmentServiceHandler interface {
CreateAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
CreateAttachmentRequest
])
(
*
connect
.
Response
[
v1
.
Attachment
],
error
)
CreateAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
CreateAttachmentRequest
])
(
*
connect
.
Response
[
v1
.
Attachment
],
error
)
// ListAttachments lists all attachments.
// ListAttachments lists all attachments.
ListAttachments
(
context
.
Context
,
*
connect
.
Request
[
v1
.
ListAttachmentsRequest
])
(
*
connect
.
Response
[
v1
.
ListAttachmentsResponse
],
error
)
ListAttachments
(
context
.
Context
,
*
connect
.
Request
[
v1
.
ListAttachmentsRequest
])
(
*
connect
.
Response
[
v1
.
ListAttachmentsResponse
],
error
)
// GetAttachment returns a attachment by name.
// GetAttachment returns a
n
attachment by name.
GetAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
GetAttachmentRequest
])
(
*
connect
.
Response
[
v1
.
Attachment
],
error
)
GetAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
GetAttachmentRequest
])
(
*
connect
.
Response
[
v1
.
Attachment
],
error
)
// UpdateAttachment updates a attachment.
// UpdateAttachment updates a
n
attachment.
UpdateAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
UpdateAttachmentRequest
])
(
*
connect
.
Response
[
v1
.
Attachment
],
error
)
UpdateAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
UpdateAttachmentRequest
])
(
*
connect
.
Response
[
v1
.
Attachment
],
error
)
// DeleteAttachment deletes a attachment by name.
// DeleteAttachment deletes a
n
attachment by name.
DeleteAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
DeleteAttachmentRequest
])
(
*
connect
.
Response
[
emptypb
.
Empty
],
error
)
DeleteAttachment
(
context
.
Context
,
*
connect
.
Request
[
v1
.
DeleteAttachmentRequest
])
(
*
connect
.
Response
[
emptypb
.
Empty
],
error
)
}
}
...
...
proto/gen/api/v1/attachment_service_grpc.pb.go
View file @
8f43e807
...
@@ -35,11 +35,11 @@ type AttachmentServiceClient interface {
...
@@ -35,11 +35,11 @@ type AttachmentServiceClient interface {
CreateAttachment
(
ctx
context
.
Context
,
in
*
CreateAttachmentRequest
,
opts
...
grpc
.
CallOption
)
(
*
Attachment
,
error
)
CreateAttachment
(
ctx
context
.
Context
,
in
*
CreateAttachmentRequest
,
opts
...
grpc
.
CallOption
)
(
*
Attachment
,
error
)
// ListAttachments lists all attachments.
// ListAttachments lists all attachments.
ListAttachments
(
ctx
context
.
Context
,
in
*
ListAttachmentsRequest
,
opts
...
grpc
.
CallOption
)
(
*
ListAttachmentsResponse
,
error
)
ListAttachments
(
ctx
context
.
Context
,
in
*
ListAttachmentsRequest
,
opts
...
grpc
.
CallOption
)
(
*
ListAttachmentsResponse
,
error
)
// GetAttachment returns a attachment by name.
// GetAttachment returns a
n
attachment by name.
GetAttachment
(
ctx
context
.
Context
,
in
*
GetAttachmentRequest
,
opts
...
grpc
.
CallOption
)
(
*
Attachment
,
error
)
GetAttachment
(
ctx
context
.
Context
,
in
*
GetAttachmentRequest
,
opts
...
grpc
.
CallOption
)
(
*
Attachment
,
error
)
// UpdateAttachment updates a attachment.
// UpdateAttachment updates a
n
attachment.
UpdateAttachment
(
ctx
context
.
Context
,
in
*
UpdateAttachmentRequest
,
opts
...
grpc
.
CallOption
)
(
*
Attachment
,
error
)
UpdateAttachment
(
ctx
context
.
Context
,
in
*
UpdateAttachmentRequest
,
opts
...
grpc
.
CallOption
)
(
*
Attachment
,
error
)
// DeleteAttachment deletes a attachment by name.
// DeleteAttachment deletes a
n
attachment by name.
DeleteAttachment
(
ctx
context
.
Context
,
in
*
DeleteAttachmentRequest
,
opts
...
grpc
.
CallOption
)
(
*
emptypb
.
Empty
,
error
)
DeleteAttachment
(
ctx
context
.
Context
,
in
*
DeleteAttachmentRequest
,
opts
...
grpc
.
CallOption
)
(
*
emptypb
.
Empty
,
error
)
}
}
...
@@ -109,11 +109,11 @@ type AttachmentServiceServer interface {
...
@@ -109,11 +109,11 @@ type AttachmentServiceServer interface {
CreateAttachment
(
context
.
Context
,
*
CreateAttachmentRequest
)
(
*
Attachment
,
error
)
CreateAttachment
(
context
.
Context
,
*
CreateAttachmentRequest
)
(
*
Attachment
,
error
)
// ListAttachments lists all attachments.
// ListAttachments lists all attachments.
ListAttachments
(
context
.
Context
,
*
ListAttachmentsRequest
)
(
*
ListAttachmentsResponse
,
error
)
ListAttachments
(
context
.
Context
,
*
ListAttachmentsRequest
)
(
*
ListAttachmentsResponse
,
error
)
// GetAttachment returns a attachment by name.
// GetAttachment returns a
n
attachment by name.
GetAttachment
(
context
.
Context
,
*
GetAttachmentRequest
)
(
*
Attachment
,
error
)
GetAttachment
(
context
.
Context
,
*
GetAttachmentRequest
)
(
*
Attachment
,
error
)
// UpdateAttachment updates a attachment.
// UpdateAttachment updates a
n
attachment.
UpdateAttachment
(
context
.
Context
,
*
UpdateAttachmentRequest
)
(
*
Attachment
,
error
)
UpdateAttachment
(
context
.
Context
,
*
UpdateAttachmentRequest
)
(
*
Attachment
,
error
)
// DeleteAttachment deletes a attachment by name.
// DeleteAttachment deletes a
n
attachment by name.
DeleteAttachment
(
context
.
Context
,
*
DeleteAttachmentRequest
)
(
*
emptypb
.
Empty
,
error
)
DeleteAttachment
(
context
.
Context
,
*
DeleteAttachmentRequest
)
(
*
emptypb
.
Empty
,
error
)
mustEmbedUnimplementedAttachmentServiceServer
()
mustEmbedUnimplementedAttachmentServiceServer
()
}
}
...
...
proto/gen/openapi.yaml
View file @
8f43e807
...
@@ -158,7 +158,7 @@ paths:
...
@@ -158,7 +158,7 @@ paths:
get
:
get
:
tags
:
tags
:
-
AttachmentService
-
AttachmentService
description
:
GetAttachment returns a attachment by name.
description
:
GetAttachment returns a
n
attachment by name.
operationId
:
AttachmentService_GetAttachment
operationId
:
AttachmentService_GetAttachment
parameters
:
parameters
:
-
name
:
attachment
-
name
:
attachment
...
@@ -183,7 +183,7 @@ paths:
...
@@ -183,7 +183,7 @@ paths:
delete
:
delete
:
tags
:
tags
:
-
AttachmentService
-
AttachmentService
description
:
DeleteAttachment deletes a attachment by name.
description
:
DeleteAttachment deletes a
n
attachment by name.
operationId
:
AttachmentService_DeleteAttachment
operationId
:
AttachmentService_DeleteAttachment
parameters
:
parameters
:
-
name
:
attachment
-
name
:
attachment
...
@@ -205,7 +205,7 @@ paths:
...
@@ -205,7 +205,7 @@ paths:
patch
:
patch
:
tags
:
tags
:
-
AttachmentService
-
AttachmentService
description
:
UpdateAttachment updates a attachment.
description
:
UpdateAttachment updates a
n
attachment.
operationId
:
AttachmentService_UpdateAttachment
operationId
:
AttachmentService_UpdateAttachment
parameters
:
parameters
:
-
name
:
attachment
-
name
:
attachment
...
...
server/router/api/v1/attachment_service.go
View file @
8f43e807
...
@@ -352,7 +352,7 @@ func convertAttachmentFromStore(attachment *store.Attachment) *v1pb.Attachment {
...
@@ -352,7 +352,7 @@ func convertAttachmentFromStore(attachment *store.Attachment) *v1pb.Attachment {
return
attachmentMessage
return
attachmentMessage
}
}
// SaveAttachmentBlob save the blob of attachment based on the storage config.
// SaveAttachmentBlob save
s
the blob of attachment based on the storage config.
func
SaveAttachmentBlob
(
ctx
context
.
Context
,
profile
*
profile
.
Profile
,
stores
*
store
.
Store
,
create
*
store
.
Attachment
)
error
{
func
SaveAttachmentBlob
(
ctx
context
.
Context
,
profile
*
profile
.
Profile
,
stores
*
store
.
Store
,
create
*
store
.
Attachment
)
error
{
instanceStorageSetting
,
err
:=
stores
.
GetInstanceStorageSetting
(
ctx
)
instanceStorageSetting
,
err
:=
stores
.
GetInstanceStorageSetting
(
ctx
)
if
err
!=
nil
{
if
err
!=
nil
{
...
...
store/db/mysql/mysql.go
View file @
8f43e807
...
@@ -29,7 +29,7 @@ func NewDB(profile *profile.Profile) (store.Driver, error) {
...
@@ -29,7 +29,7 @@ func NewDB(profile *profile.Profile) (store.Driver, error) {
driver
:=
DB
{
profile
:
profile
}
driver
:=
DB
{
profile
:
profile
}
driver
.
config
,
err
=
mysql
.
ParseDSN
(
dsn
)
driver
.
config
,
err
=
mysql
.
ParseDSN
(
dsn
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
New
(
"Parse DSN er
o
or"
)
return
nil
,
errors
.
New
(
"Parse DSN er
r
or"
)
}
}
driver
.
db
,
err
=
sql
.
Open
(
"mysql"
,
dsn
)
driver
.
db
,
err
=
sql
.
Open
(
"mysql"
,
dsn
)
...
...
web/src/types/proto/api/v1/attachment_service_pb.ts
View file @
8f43e807
...
@@ -288,7 +288,7 @@ export const AttachmentService: GenService<{
...
@@ -288,7 +288,7 @@ export const AttachmentService: GenService<{
output
:
typeof
ListAttachmentsResponseSchema
;
output
:
typeof
ListAttachmentsResponseSchema
;
},
},
/**
/**
* GetAttachment returns a attachment by name.
* GetAttachment returns a
n
attachment by name.
*
*
* @generated from rpc memos.api.v1.AttachmentService.GetAttachment
* @generated from rpc memos.api.v1.AttachmentService.GetAttachment
*/
*/
...
@@ -298,7 +298,7 @@ export const AttachmentService: GenService<{
...
@@ -298,7 +298,7 @@ export const AttachmentService: GenService<{
output
:
typeof
AttachmentSchema
;
output
:
typeof
AttachmentSchema
;
},
},
/**
/**
* UpdateAttachment updates a attachment.
* UpdateAttachment updates a
n
attachment.
*
*
* @generated from rpc memos.api.v1.AttachmentService.UpdateAttachment
* @generated from rpc memos.api.v1.AttachmentService.UpdateAttachment
*/
*/
...
@@ -308,7 +308,7 @@ export const AttachmentService: GenService<{
...
@@ -308,7 +308,7 @@ export const AttachmentService: GenService<{
output
:
typeof
AttachmentSchema
;
output
:
typeof
AttachmentSchema
;
},
},
/**
/**
* DeleteAttachment deletes a attachment by name.
* DeleteAttachment deletes a
n
attachment by name.
*
*
* @generated from rpc memos.api.v1.AttachmentService.DeleteAttachment
* @generated from rpc memos.api.v1.AttachmentService.DeleteAttachment
*/
*/
...
...
web/src/utils/i18n.ts
View file @
8f43e807
...
@@ -66,7 +66,7 @@ export const useTranslate = (): TypedT => {
...
@@ -66,7 +66,7 @@ export const useTranslate = (): TypedT => {
return
t
;
return
t
;
};
};
export
const
isValid
ate
Locale
=
(
locale
:
string
|
undefined
|
null
):
boolean
=>
{
export
const
isValidLocale
=
(
locale
:
string
|
undefined
|
null
):
boolean
=>
{
if
(
!
locale
)
return
false
;
if
(
!
locale
)
return
false
;
return
locales
.
includes
(
locale
);
return
locales
.
includes
(
locale
);
};
};
...
@@ -77,7 +77,7 @@ export const isValidateLocale = (locale: string | undefined | null): boolean =>
...
@@ -77,7 +77,7 @@ export const isValidateLocale = (locale: string | undefined | null): boolean =>
// 3. Browser language preference
// 3. Browser language preference
export
const
getLocaleWithFallback
=
(
userLocale
?:
string
):
Locale
=>
{
export
const
getLocaleWithFallback
=
(
userLocale
?:
string
):
Locale
=>
{
// Priority 1: User setting (if logged in and valid)
// Priority 1: User setting (if logged in and valid)
if
(
userLocale
&&
isValid
ate
Locale
(
userLocale
))
{
if
(
userLocale
&&
isValidLocale
(
userLocale
))
{
return
userLocale
as
Locale
;
return
userLocale
as
Locale
;
}
}
...
@@ -93,7 +93,7 @@ export const getLocaleWithFallback = (userLocale?: string): Locale => {
...
@@ -93,7 +93,7 @@ export const getLocaleWithFallback = (userLocale?: string): Locale => {
// Applies and persists a locale setting
// Applies and persists a locale setting
export
const
loadLocale
=
(
locale
:
string
):
Locale
=>
{
export
const
loadLocale
=
(
locale
:
string
):
Locale
=>
{
const
validLocale
=
isValid
ate
Locale
(
locale
)
?
(
locale
as
Locale
)
:
findNearestMatchedLanguage
(
navigator
.
language
);
const
validLocale
=
isValidLocale
(
locale
)
?
(
locale
as
Locale
)
:
findNearestMatchedLanguage
(
navigator
.
language
);
setStoredLocale
(
validLocale
);
setStoredLocale
(
validLocale
);
i18n
.
changeLanguage
(
validLocale
);
i18n
.
changeLanguage
(
validLocale
);
return
validLocale
;
return
validLocale
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment