feat: add more words i18n (#516)

* feat: some word i18n

* feat: add object-cover to feed icon, add zh-HK and zh-TW errors lang

* feat: add more words i18n

* update

* resolve merge conflict

* resole

* resolve merge conflict

* resolve merge conflict

* Update apps/renderer/src/modules/claim/hooks.ts

Co-authored-by: Innei <tukon479@gmail.com>

* Update apps/renderer/src/hooks/biz/useSubscriptionActions.tsx

Co-authored-by: Innei <tukon479@gmail.com>

* Update apps/renderer/src/modules/discover/import.tsx

Co-authored-by: Innei <tukon479@gmail.com>

* update

Signed-off-by: Innei <i@innei.in>

* update

Signed-off-by: Innei <i@innei.in>

* update

Signed-off-by: Innei <i@innei.in>

* update

Signed-off-by: Innei <i@innei.in>

* update

Signed-off-by: Innei <i@innei.in>

* update

Signed-off-by: Innei <i@innei.in>

* update

Signed-off-by: Innei <i@innei.in>

* update

Signed-off-by: Innei <i@innei.in>

* update

Signed-off-by: Innei <i@innei.in>

* update

Signed-off-by: Innei <i@innei.in>

* update

Signed-off-by: Innei <i@innei.in>

---------

Signed-off-by: Innei <i@innei.in>
Co-authored-by: Innei <tukon479@gmail.com>
Co-authored-by: Innei <i@innei.in>
This commit is contained in:
Jerry Wong 2024-09-22 21:05:29 +08:00 committed by GitHub
parent a5a4de00e3
commit e2b8ec8862
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
126 changed files with 224 additions and 184 deletions

View File

@ -1,7 +1,7 @@
name: Auto Fix Lint and Format
on:
pull_request:
pull_request_target:
types: [opened, synchronize]
jobs:
@ -16,14 +16,16 @@ jobs:
with:
fetch-depth: 0
ref: ${{ github.head_ref }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
- name: Setup pnpm
uses: pnpm/action-setup@v2
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Setup pnpm
uses: pnpm/action-setup@v2
cache: "pnpm"
- name: Install dependencies
run: pnpm install
@ -34,30 +36,28 @@ jobs:
- name: Run formatter
run: pnpm run format
- name: Check for changes
id: git-check
run: |
git add -A
git diff --cached --exit-code || echo "changes=true" >> $GITHUB_OUTPUT
- name: Commit and push changes
if: steps.git-check.outputs.changes == 'true'
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git commit -m "chore: auto-fix linting and formatting issues" --no-verify
#git push origin HEAD:${{ github.head_ref }}
git push https://${{ secrets.PAT }}@github.com/${{ github.repository }}.git HEAD:${{ github.head_ref }}
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "chore: auto-fix linting and formatting issues"
commit_options: "--no-verify"
file_pattern: "."
- name: Add PR comment
uses: actions/github-script@v7
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const changes = ${{ steps.git-check.outputs.changes == 'true' }};
const message = changes
const hasChanges = await github.rest.pulls.listFiles({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number
}).then(response => response.data.length > 0);
const message = hasChanges
? 'Linting and formatting issues were automatically fixed. Please review the changes.'
: 'No linting or formatting issues were found.';
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,

View File

@ -51,14 +51,6 @@ jobs:
fetch-depth: 1
lfs: true
- name: Cache pnpm modules
uses: actions/cache@v4
with:
path: ~/.pnpm-store
key: ${{ matrix.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ matrix.os }}-
- name: Setup pnpm
uses: pnpm/action-setup@v4

View File

@ -1,5 +1,6 @@
import { useMutation } from "@tanstack/react-query"
import { useHotkeys } from "react-hotkeys-hook"
import { Trans, useTranslation } from "react-i18next"
import { toast } from "sonner"
import { Kbd } from "~/components/ui/kbd/Kbd"
@ -13,8 +14,10 @@ import { feedUnreadActions } from "~/store/unread"
import { navigateEntry } from "./useNavigateEntry"
import { getRouteParams } from "./useRouteParams"
export const useDeleteSubscription = ({ onSuccess }: { onSuccess?: () => void }) =>
useMutation({
export const useDeleteSubscription = ({ onSuccess }: { onSuccess?: () => void }) => {
const { t } = useTranslation()
return useMutation({
mutationFn: async (subscription: SubscriptionFlatModel) =>
subscriptionActions.unfollow(subscription.feedId).then((feed) => {
subscriptionQuery.byView(subscription.view).invalidate()
@ -39,12 +42,13 @@ export const useDeleteSubscription = ({ onSuccess }: { onSuccess?: () => void })
toast.dismiss(toastId)
}
const toastId = toast(<UnfollowInfo title={feed.title!} undo={undo} />, {
duration: 3000,
action: {
label: (
<span className="flex items-center gap-1">
Undo
{t("words.undo")}
<Kbd className="inline-flex items-center border border-border bg-transparent dark:text-white">
Meta+Z
</Kbd>
@ -68,6 +72,7 @@ export const useDeleteSubscription = ({ onSuccess }: { onSuccess?: () => void })
}
},
})
}
const UnfollowInfo = ({ title, undo }: { title: string; undo: () => any }) => {
useHotkeys("ctrl+z,meta+z", undo, {
@ -76,7 +81,13 @@ const UnfollowInfo = ({ title, undo }: { title: string; undo: () => any }) => {
})
return (
<>
Feed <i className="mr-px font-semibold">{title}</i> has been unfollowed.
<Trans
ns="app"
i18nKey="notify.unfollow_feed"
components={{
FeedItem: <i className="mr-px font-semibold">{title}</i>,
}}
/>
</>
)
}

View File

@ -1,4 +1,5 @@
import { createElement, useCallback } from "react"
import { useTranslation } from "react-i18next"
import { useModalStack } from "~/components/ui/modal/stacked/hooks"
import { getFeedById } from "~/store/feed"
@ -7,6 +8,7 @@ import { FeedClaimModalContent } from "./feed-claim-modal"
export const useFeedClaimModal = ({ feedId }: { feedId?: string }) => {
const { present } = useModalStack()
const { t } = useTranslation()
return useCallback(() => {
if (!feedId) return
@ -16,7 +18,7 @@ export const useFeedClaimModal = ({ feedId }: { feedId?: string }) => {
if (!feed) return
present({
title: "Feed Claim",
title: t("feed_claim_modal.title"),
content: () => createElement(FeedClaimModalContent, { feedId }),
modalClassName: "!h-auto !max-h-screen",
})

View File

@ -2,7 +2,7 @@ import { zodResolver } from "@hookform/resolvers/zod"
import { useMutation } from "@tanstack/react-query"
import { Fragment } from "react/jsx-runtime"
import { useForm } from "react-hook-form"
import { useTranslation } from "react-i18next"
import { Trans, useTranslation } from "react-i18next"
import { z } from "zod"
import { Button } from "~/components/ui/button"
@ -35,20 +35,26 @@ const formSchema = z.object({
}),
})
const list = [
const NumberDisplay = ({ value }) => <span className="font-bold text-zinc-800">{value ?? 0}</span>
const list: {
key: I18nKeys
title: string
className: string
}[] = [
{
key: "parsedErrorItems",
title: "Parsed Error Items",
title: <Trans ns="app" i18nKey="discover.import.parsedErrorItems" />,
className: "text-red-500",
},
{
key: "successfulItems",
title: "Successful Items",
title: <Trans ns="app" i18nKey="discover.import.successfulItems" />,
className: "text-green-500",
},
{
key: "conflictItems",
title: "Conflict Items",
title: <Trans ns="app" i18nKey="discover.import.conflictItems" />,
className: "text-yellow-500",
},
]
@ -88,6 +94,7 @@ export function DiscoverImport() {
function onSubmit(values: z.infer<typeof formSchema>) {
mutation.mutate(values.file)
}
const { t } = useTranslation()
return (
@ -99,7 +106,7 @@ export function DiscoverImport() {
name="file"
render={({ field: { value, onChange, ...fieldProps } }) => (
<FormItem>
<FormLabel>OPML file</FormLabel>
<FormLabel>{t("discover.import.opml")}</FormLabel>
<FormControl>
<label
className="center flex h-[100px] w-full rounded-md border border-dashed"
@ -149,18 +156,15 @@ export function DiscoverImport() {
<div className="mt-8 max-w-lg">
<Card>
<CardHeader className="block text-zinc-500">
<span className="font-bold text-zinc-800">
{mutation.data?.successfulItems.length || 0}
</span>{" "}
feeds were successfully imported,{" "}
<span className="font-bold text-zinc-800">
{mutation.data?.conflictItems.length || 0}
</span>{" "}
were already subscribed to, and{" "}
<span className="font-bold text-zinc-800">
{mutation.data?.parsedErrorItems.length || 0}
</span>{" "}
failed to import.
<Trans
ns="app"
i18nKey="discover.import.result"
components={{
SuccessfulNum: <NumberDisplay value={mutation.data?.successfulItems.length} />,
ConflictNum: <NumberDisplay value={mutation.data?.conflictItems.length} />,
ErrorNum: <NumberDisplay value={mutation.data?.parsedErrorItems.length} />,
}}
/>
</CardHeader>
<CardContent className="space-y-6">
{list.map((item) => (
@ -168,7 +172,7 @@ export function DiscoverImport() {
<div className={cn("mb-4 text-lg font-medium", item.className)}>{item.title}</div>
<div className="space-y-4">
{!mutation.data?.[item.key].length && (
<div className="text-zinc-500">No items</div>
<div className="text-zinc-500">{t("discover.import.noItems")}</div>
)}
{mutation.data?.[item.key].map((feed) => (
<FollowSummary className="max-w-[462px]" key={feed.id} feed={feed} />

View File

@ -1,4 +1,3 @@
import { repository } from "@pkg"
import type { FallbackRender } from "@sentry/react"
import { ErrorBoundary } from "@sentry/react"
import type { FC } from "react"
@ -413,6 +412,7 @@ const NoContent: FC<{
url: string
}> = ({ id, url }) => {
const status = useEntryInReadabilityStatus(id)
const { t } = useTranslation("app")
if (status !== ReadabilityStatus.INITIAL && status !== ReadabilityStatus.FAILURE) {
return null
@ -420,21 +420,12 @@ const NoContent: FC<{
return (
<div className="center">
<div className="space-y-2 text-balance text-center text-sm text-zinc-400">
{(isWebBuild || status === ReadabilityStatus.FAILURE) && <span>No content</span>}
{(isWebBuild || status === ReadabilityStatus.FAILURE) && (
<span>{t("entry_content.no_content")}</span>
)}
{isWebBuild && (
<div>
<span>
Maybe web app doesn't support this content type. But you can{" "}
<a
target="_blank"
rel="noreferrer"
className="text-accent underline"
href={`${repository.url}/releases`}
>
download
</a>{" "}
the desktop app.
</span>
<span>{t("entry_content.web_app_notice")}</span>
</div>
)}
{url && window.electron && <ReadabilityAutoToggle url={url} id={id} />}

View File

@ -179,7 +179,7 @@ function FeedListImpl({ className, view }: { className?: string; view: number })
onClick={stopPropagation}
>
<i className="i-mgc-add-cute-re text-3xl" />
<span className="text-base">Add some feeds</span>
<span className="text-base">{t("sidebar.add_more_feeds")}</span>
</Link>
</div>
)}

View File

@ -204,4 +204,4 @@
"words.user": "المستخدم",
"words.which.all": "الكل",
"words.zero_items": "صفر عناصر"
}
}

View File

@ -204,4 +204,4 @@
"words.user": "المستخدم",
"words.which.all": "الكل",
"words.zero_items": "صفر عناصر"
}
}

View File

@ -204,4 +204,4 @@
"words.user": "المستخدم",
"words.which.all": "الكل",
"words.zero_items": "لا توجد عناصر"
}
}

View File

@ -207,4 +207,4 @@
"words.user": "المستخدم",
"words.which.all": "الكل",
"words.zero_items": "لا توجد عناصر"
}
}

View File

@ -207,4 +207,4 @@
"words.user": "المستخدم",
"words.which.all": "الكل",
"words.zero_items": "صفر عناصر"
}
}

View File

@ -207,4 +207,4 @@
"words.user": "المستخدم",
"words.which.all": "الكل",
"words.zero_items": "صفر عناصر"
}
}

View File

@ -13,6 +13,12 @@
"discover.feed_description": "The description of this feed is as follows, and you can fill out the parameter form with the relevant information.",
"discover.feed_maintainers": "This feed is provided by RSSHub, with credit to <maintainers />",
"discover.import.click_to_upload": "Click to upload OPML file",
"discover.import.conflictItems": "Conflict Items",
"discover.import.noItems": "No items",
"discover.import.opml": "OPML file",
"discover.import.parsedErrorItems": "Parsed Error Items",
"discover.import.result": "<SuccessfulNum /> feeds were successfully imported, <ConflictNum /> were already subscribed to, and <ErrorNum /> failed to import.",
"discover.import.successfulItems": "Successful Items",
"discover.popular": "Popular",
"discover.preview": "Preview",
"discover.rss_hub_route": "RSSHub Route",
@ -83,6 +89,7 @@
"feed_claim_modal.tab_content": "Content",
"feed_claim_modal.tab_description": "Description",
"feed_claim_modal.tab_rss": "RSS Tag",
"feed_claim_modal.title": "Feed Claim",
"feed_claim_modal.verify_ownership": "To claim this feed as your own, you need to verify ownership.",
"feed_form.add_follow": "Add follow",
"feed_form.category": "Category",
@ -124,6 +131,7 @@
"mark_all_read_button.mark_all_as_read": "Mark all as read",
"mark_all_read_button.mark_as_read": "Mark {{which}} as read",
"mark_all_read_button.undo": "Undo",
"notify.unfollow_feed": "<FeedItem /> have been unfollowed.",
"player.back_10s": "Back 10s",
"player.close": "Close",
"player.download": "Download",
@ -150,6 +158,7 @@
"search.result_count_local_mode": "(Local mode)",
"search.tooltip.local_search": "This search covers locally available data. Try a Refetch to include the latest data.",
"shortcuts.guide.title": "Shortcuts Guideline",
"sidebar.add_more_feeds": "Add more feeds",
"sidebar.category_remove_dialog.cancel": "Cancel",
"sidebar.category_remove_dialog.continue": "Continue",
"sidebar.category_remove_dialog.description": "This operation will delete your category, but the feeds it contains will be retained and grouped by website.",
@ -226,6 +235,7 @@
"words.rsshub": "RSSHub",
"words.search": "Search",
"words.starred": "Starred",
"words.undo": "Undo",
"words.unread": "Unread",
"words.user": "User",
"words.which.all": "all",

View File

@ -134,4 +134,4 @@
"words.user": "Usuario",
"words.which.all": "Todo",
"words.zero_items": "Sin contenido"
}
}

View File

@ -204,4 +204,4 @@
"words.user": "Käyttäjä",
"words.which.all": "kaikki",
"words.zero_items": "Ei kohteita"
}
}

View File

@ -204,4 +204,4 @@
"words.user": "Utilisateur",
"words.which.all": "tous",
"words.zero_items": "Zéro élément"
}
}

View File

@ -204,4 +204,4 @@
"words.user": "Utente",
"words.which.all": "tutti",
"words.zero_items": "Zero elementi"
}
}

View File

@ -203,4 +203,4 @@
"words.user": "ユーザー",
"words.which.all": "すべて",
"words.zero_items": "アイテムがありません"
}
}

View File

@ -203,4 +203,4 @@
"words.user": "ユーザー",
"words.which.all": "すべて",
"words.zero_items": "アイテムがありません"
}
}

View File

@ -204,4 +204,4 @@
"words.user": "Пользователь",
"words.which.all": "все",
"words.zero_items": "Нет элементов"
}
}

View File

@ -13,6 +13,12 @@
"discover.feed_description": "根据描述完善目标订阅源的相关信息",
"discover.feed_maintainers": "由 RSSHub 提供,感谢贡献者 <maintainers />",
"discover.import.click_to_upload": "导入 OPML 文件",
"discover.import.conflictItems": "冲突项目",
"discover.import.noItems": "没有项目",
"discover.import.opml": "OPML 文件",
"discover.import.parsedErrorItems": "解析错误项目",
"discover.import.result": "成功导入了 <SuccessfulNum /> 个订阅源,<ConflictNum /> 个已订阅,<ErrorNum /> 个导入失败。",
"discover.import.successfulItems": "成功项目",
"discover.popular": "热门",
"discover.preview": "预览",
"discover.rss_hub_route": "RSSHub 路由",
@ -83,6 +89,7 @@
"feed_claim_modal.tab_content": "内容",
"feed_claim_modal.tab_description": "描述",
"feed_claim_modal.tab_rss": "RSS 标签",
"feed_claim_modal.title": "认证订阅源",
"feed_claim_modal.verify_ownership": "完成订阅源所有权验证,证明该源由你提供",
"feed_form.add_follow": "新增订阅",
"feed_form.category": "分类",
@ -124,6 +131,7 @@
"mark_all_read_button.mark_all_as_read": "全部标记为已读",
"mark_all_read_button.mark_as_read": "标记{{which}}为已读",
"mark_all_read_button.undo": "撤销",
"notify.unfollow_feed": "已取消订阅 <FeedItem />",
"player.back_10s": "后退 10s",
"player.close": "关闭",
"player.download": "下载",
@ -150,6 +158,7 @@
"search.result_count_local_mode": "(本地模式)",
"search.tooltip.local_search": "当前搜索仅包含本地可用数据,尝试重新搜索得到更多结果",
"shortcuts.guide.title": "快捷键指南",
"sidebar.add_more_feeds": "添加订阅源",
"sidebar.category_remove_dialog.cancel": "取消",
"sidebar.category_remove_dialog.continue": "继续",
"sidebar.category_remove_dialog.description": "正在删除分类,操作后仍保留订阅源并按网站分组",
@ -226,8 +235,9 @@
"words.rsshub": "RSSHub",
"words.search": "搜索",
"words.starred": "收藏",
"words.undo": "撤销",
"words.unread": "未读",
"words.user": "用户",
"words.which.all": "全部",
"words.zero_items": "没有内容"
}
}

View File

@ -9,6 +9,12 @@
"discover.feed_description": "此訂閱源的描述如下,你可以根據相關資訊填寫參數表格。",
"discover.feed_maintainers": "此訂閱源由 RSSHub 提供,感謝 <maintainers />",
"discover.import.click_to_upload": "上傳 OPML 文件",
"discover.import.conflictItems": "衝突項目",
"discover.import.noItems": "沒有項目",
"discover.import.opml": "OPML 文件",
"discover.import.parsedErrorItems": "解析錯誤項目",
"discover.import.result": "<SuccessfulNum /> 個訂閱源已成功導入,<ConflictNum /> 個已訂閱,<ErrorNum /> 個導入失敗。",
"discover.import.successfulItems": "成功項目",
"discover.popular": "熱門",
"discover.preview": "預覽",
"discover.rss_hub_route": "RSSHub 路由",
@ -76,6 +82,7 @@
"feed_claim_modal.tab_content": "內容",
"feed_claim_modal.tab_description": "描述",
"feed_claim_modal.tab_rss": "RSS 標籤",
"feed_claim_modal.title": "認領訂閱源",
"feed_claim_modal.verify_ownership": "要認領這個訂閱源,你需要驗證所有權。",
"feed_form.add_follow": "新增關注",
"feed_form.category": "分類",
@ -114,6 +121,7 @@
"mark_all_read_button.mark_all_as_read": "全部標記為已讀",
"mark_all_read_button.mark_as_read": "標記 {{which}} 為已讀",
"mark_all_read_button.undo": "撤銷",
"notify.unfollow_feed": "已取消關注 <FeedItem />。",
"player.back_10s": "倒退 10 秒",
"player.close": "關閉",
"player.download": "下載",
@ -138,6 +146,7 @@
"search.result_count_local_mode": "(本地模式)",
"search.tooltip.local_search": "此搜尋涵蓋本地可用的數據。嘗試重新獲取以包括最新數據。",
"shortcuts.guide.title": "快捷鍵指南",
"sidebar.add_more_feeds": "添加訂閱源",
"sidebar.category_remove_dialog.cancel": "取消",
"sidebar.category_remove_dialog.continue": "繼續",
"sidebar.category_remove_dialog.description": "此操作將刪除你的分類,但其中的訂閱源將保留並按網站分組。",
@ -203,8 +212,9 @@
"words.rsshub": "RSSHub",
"words.search": "搜尋",
"words.starred": "收藏",
"words.undo": "撤銷",
"words.unread": "未讀",
"words.user": "用戶",
"words.which.all": "所有",
"words.zero_items": "零項目"
}
}

View File

@ -13,6 +13,12 @@
"discover.feed_description": "該 feed 的描述如下,您可以使用相關資訊填寫參數表單。",
"discover.feed_maintainers": "此 feed 由 RSSHub 提供,感謝 <maintainers /> 的支持",
"discover.import.click_to_upload": "點擊上傳 OPML 文件",
"discover.import.conflictItems": "衝突項目",
"discover.import.noItems": "沒有項目",
"discover.import.opml": "OPML 檔案",
"discover.import.parsedErrorItems": "解析錯誤項目",
"discover.import.result": "成功匯入了 <SuccessfulNum /> 個訂閱源,<ConflictNum /> 個已經訂閱,<ErrorNum /> 個匯入失敗。",
"discover.import.successfulItems": "成功項目",
"discover.popular": "熱門",
"discover.preview": "預覽",
"discover.rss_hub_route": "RSSHub 路由",
@ -83,6 +89,7 @@
"feed_claim_modal.tab_content": "內容",
"feed_claim_modal.tab_description": "描述",
"feed_claim_modal.tab_rss": "RSS 標籤",
"feed_claim_modal.title": "認領摘要",
"feed_claim_modal.verify_ownership": "要認領此摘要為您的內容,您需要驗證所有權。",
"feed_form.add_follow": "關注",
"feed_form.category": "類別",
@ -124,6 +131,7 @@
"mark_all_read_button.mark_all_as_read": "全部標記為已讀",
"mark_all_read_button.mark_as_read": "將 {{which}} 標記為已讀",
"mark_all_read_button.undo": "復原",
"notify.unfollow_feed": "已取消關注 <FeedItem />",
"player.back_10s": "後退 10 秒",
"player.close": "關閉",
"player.download": "下載",
@ -150,6 +158,7 @@
"search.result_count_local_mode": "(本地模式)",
"search.tooltip.local_search": "此搜尋涵蓋本地可用資料。嘗試重新獲取以包含最新資料。",
"shortcuts.guide.title": "快捷鍵指南",
"sidebar.add_more_feeds": "添加摘要",
"sidebar.category_remove_dialog.cancel": "取消",
"sidebar.category_remove_dialog.continue": "繼續",
"sidebar.category_remove_dialog.description": "此操作將刪除您的類別,但它包含的摘要將被保留並按網站分組。",
@ -224,8 +233,9 @@
"words.rsshub": "RSSHub",
"words.search": "搜尋",
"words.starred": "收藏",
"words.undo": "撤銷",
"words.unread": "未讀",
"words.user": "使用者",
"words.which.all": "全部",
"words.zero_items": "沒有內容"
}
}

View File

@ -26,4 +26,4 @@
"words.result_other": "نتائج",
"words.space": " ",
"words.which.all": "الكل"
}
}

View File

@ -25,4 +25,4 @@
"words.result_other": "نتائج",
"words.space": " ",
"words.which.all": "الكل"
}
}

View File

@ -25,4 +25,4 @@
"words.result_other": "نتائج",
"words.space": " ",
"words.which.all": "الكل"
}
}

View File

@ -26,4 +26,4 @@
"words.result_other": "نتائج",
"words.space": " ",
"words.which.all": "الكل"
}
}

View File

@ -26,4 +26,4 @@
"words.result_other": "نتائج",
"words.space": " ",
"words.which.all": "الكل"
}
}

View File

@ -25,4 +25,4 @@
"words.result_other": "نتائج",
"words.space": " ",
"words.which.all": "الكل"
}
}

View File

@ -31,4 +31,4 @@
"words.submit": "Submit",
"words.update": "Update",
"words.which.all": "All"
}
}

View File

@ -26,4 +26,4 @@
"words.result_other": "resultados",
"words.space": " ",
"words.which.all": "Todo"
}
}

View File

@ -25,4 +25,4 @@
"words.result_other": "tulokset",
"words.space": " ",
"words.which.all": "Kaikki"
}
}

View File

@ -26,4 +26,4 @@
"words.result_other": "résultats",
"words.space": " ",
"words.which.all": "Tous"
}
}

View File

@ -25,4 +25,4 @@
"words.result_other": "risultati",
"words.space": " ",
"words.which.all": "Tutti"
}
}

View File

@ -26,4 +26,4 @@
"words.result_other": "結果",
"words.space": "",
"words.which.all": "すべて"
}
}

View File

@ -26,4 +26,4 @@
"words.result_other": "resultados",
"words.space": " ",
"words.which.all": "Todos"
}
}

View File

@ -25,4 +25,4 @@
"words.result_other": "результаты",
"words.space": " ",
"words.which.all": "Все"
}
}

View File

@ -27,4 +27,4 @@
"words.result_other": "结果",
"words.space": "",
"words.which.all": "全部"
}
}

View File

@ -25,4 +25,4 @@
"words.result_other": "結果",
"words.space": " ",
"words.which.all": "全部"
}
}

View File

@ -26,4 +26,4 @@
"words.result_other": "多筆結果",
"words.space": " ",
"words.which.all": "全部"
}
}

View File

@ -26,4 +26,4 @@
"7001": "Invalid setting tab",
"7002": "Invalid setting payload",
"7003": "Setting payload too large"
}
}

View File

@ -26,4 +26,4 @@
"7001": "Onglet de paramètre invalide",
"7002": "Contenu de paramètre invalide",
"7003": "Contenu de paramètre trop volumineux"
}
}

View File

@ -26,4 +26,4 @@
"7001": "無効な設定タブです",
"7002": "無効な設定ペイロードです",
"7003": "設定ペイロードが大きすぎます"
}
}

View File

@ -26,4 +26,4 @@
"7001": "Неверная вкладка настройки",
"7002": "Неверное содержимое настройки",
"7003": "Содержимое настройки слишком велико"
}
}

View File

@ -26,4 +26,4 @@
"7001": "无效的设置标签",
"7002": "无效的设置负载",
"7003": "设置负载过大"
}
}

View File

@ -26,4 +26,4 @@
"7001": "無效的設定標簽",
"7002": "無效的設定負載",
"7003": "設定負載太大"
}
}

View File

@ -26,4 +26,4 @@
"7001": "設定標籤無效",
"7002": "設定負載無效",
"7003": "設定負載過大"
}
}

View File

@ -39,4 +39,4 @@
"openApp": "افتح {{APP_NAME}}",
"successMessage": "تم الاتصال بنجاح بحساب {{APP_NAME}}."
}
}
}

View File

@ -39,4 +39,4 @@
"openApp": "افتح {{APP_NAME}}",
"successMessage": "لقد تم الاتصال بنجاح بحسابك على {{APP_NAME}}."
}
}
}

View File

@ -39,4 +39,4 @@
"openApp": "فتح {{APP_NAME}}",
"successMessage": "تم الاتصال بحساب {{APP_NAME}} بنجاح."
}
}
}

View File

@ -39,4 +39,4 @@
"openApp": "افتح {{APP_NAME}}",
"successMessage": "تم الاتصال بنجاح بحساب {{APP_NAME}}."
}
}
}

View File

@ -40,4 +40,4 @@
"openApp": "افتح {{APP_NAME}}",
"successMessage": "تم الاتصال بنجاح بحساب {{APP_NAME}}."
}
}
}

View File

@ -40,4 +40,4 @@
"openApp": "افتح {{APP_NAME}}",
"successMessage": "تم الاتصال بحساب {{APP_NAME}} بنجاح."
}
}
}

View File

@ -32,4 +32,4 @@
"redirect.instruction": "Now is the time to open {{APP_NAME}} and safely close this page.",
"redirect.openApp": "Open {{APP_NAME}}",
"redirect.successMessage": "You have successfully connected to {{APP_NAME}} Account."
}
}

View File

@ -39,4 +39,4 @@
"openApp": "Abrir {{APP_NAME}}",
"successMessage": "Te has conectado exitosamente a la cuenta de {{APP_NAME}}."
}
}
}

View File

@ -39,4 +39,4 @@
"openApp": "Avaa {{APP_NAME}}",
"successMessage": "Olet onnistuneesti yhdistänyt {{APP_NAME}}-tilisi."
}
}
}

View File

@ -39,4 +39,4 @@
"openApp": "Ouvrir {{APP_NAME}}",
"successMessage": "Vous vous êtes connecté avec succès à votre compte {{APP_NAME}}."
}
}
}

View File

@ -39,4 +39,4 @@
"openApp": "Apri {{APP_NAME}}",
"successMessage": "Ti sei connesso con successo all'account {{APP_NAME}}."
}
}
}

View File

@ -39,4 +39,4 @@
"openApp": "{{APP_NAME}}を開く",
"successMessage": "{{APP_NAME}}アカウントに正常に接続されました。"
}
}
}

View File

@ -39,4 +39,4 @@
"openApp": "Abrir {{APP_NAME}}",
"successMessage": "Conectou-se com sucesso à conta {{APP_NAME}}."
}
}
}

View File

@ -39,4 +39,4 @@
"openApp": "Открыть {{APP_NAME}}",
"successMessage": "Вы успешно подключились к аккаунту {{APP_NAME}}."
}
}
}

View File

@ -39,4 +39,4 @@
"openApp": "打开 {{APP_NAME}}",
"successMessage": "已成功连接到 {{APP_NAME}} 账户。"
}
}
}

View File

@ -40,4 +40,4 @@
"openApp": "打開 {{APP_NAME}}",
"successMessage": "你已成功連接到 {{APP_NAME}} 帳戶。"
}
}
}

View File

@ -40,4 +40,4 @@
"openApp": "開啟 {{APP_NAME}}",
"successMessage": "您已成功連接至 {{APP_NAME}} 帳戶。"
}
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "العربية (الجزائر)"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "العربية (العراق)"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "العربية (الكويت)"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "العربية (المغرب)"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "العربية (السعودية)"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "العربية (تونس)"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "English"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "Español"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "Suomi"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "Français"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "Italiano"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "日本語"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "Português"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "Русский"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "简体中文"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "繁體中文(香港)"
}
}

View File

@ -17,4 +17,4 @@
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "繁體中文(台灣)"
}
}

View File

@ -50,4 +50,4 @@
"menu.zoom": "تكبير",
"menu.zoomIn": "تكبير",
"menu.zoomOut": "تصغير"
}
}

View File

@ -50,4 +50,4 @@
"menu.zoom": "تكبير",
"menu.zoomIn": "تكبير",
"menu.zoomOut": "تصغير"
}
}

View File

@ -50,4 +50,4 @@
"menu.zoom": "تكبير",
"menu.zoomIn": "تكبير",
"menu.zoomOut": "تصغير"
}
}

View File

@ -65,4 +65,4 @@
"menu.zoom": "Zoom",
"menu.zoomIn": "Zoom In",
"menu.zoomOut": "Zoom Out"
}
}

View File

@ -50,4 +50,4 @@
"menu.zoom": "Zoom",
"menu.zoomIn": "Ingrandisci",
"menu.zoomOut": "Riduci"
}
}

View File

@ -49,4 +49,4 @@
"menu.zoom": "ズーム",
"menu.zoomIn": "拡大",
"menu.zoomOut": "縮小"
}
}

View File

@ -61,4 +61,4 @@
"menu.zoom": "缩放",
"menu.zoomIn": "放大",
"menu.zoomOut": "缩小"
}
}

View File

@ -50,4 +50,4 @@
"menu.zoom": "縮放",
"menu.zoomIn": "放大",
"menu.zoomOut": "縮小"
}
}

View File

@ -50,4 +50,4 @@
"menu.zoom": "縮放",
"menu.zoomIn": "放大",
"menu.zoomOut": "縮小"
}
}

View File

@ -192,4 +192,4 @@
"wallet.withdraw.modalTitle": "سحب باور",
"wallet.withdraw.submitButton": "إرسال",
"wallet.withdraw.success": "تم السحب بنجاح!"
}
}

View File

@ -200,4 +200,4 @@
"wallet.withdraw.modalTitle": "سحب باور",
"wallet.withdraw.submitButton": "إرسال",
"wallet.withdraw.success": "تم السحب بنجاح!"
}
}

View File

@ -200,4 +200,4 @@
"wallet.withdraw.modalTitle": "سحب Power",
"wallet.withdraw.submitButton": "إرسال",
"wallet.withdraw.success": "تم السحب بنجاح!"
}
}

View File

@ -192,4 +192,4 @@
"wallet.withdraw.modalTitle": "سحب باور",
"wallet.withdraw.submitButton": "إرسال",
"wallet.withdraw.success": "السحب تمت بنجاح!"
}
}

View File

@ -192,4 +192,4 @@
"wallet.withdraw.modalTitle": "سحب الطاقة",
"wallet.withdraw.submitButton": "إرسال",
"wallet.withdraw.success": "تم السحب بنجاح!"
}
}

View File

@ -200,4 +200,4 @@
"wallet.withdraw.modalTitle": "سحب الطاقة",
"wallet.withdraw.submitButton": "إرسال",
"wallet.withdraw.success": "تم السحب بنجاح!"
}
}

View File

@ -234,4 +234,4 @@
"wallet.withdraw.modalTitle": "Withdraw Power",
"wallet.withdraw.submitButton": "Submit",
"wallet.withdraw.success": "Withdrawal successful!"
}
}

View File

@ -192,4 +192,4 @@
"wallet.withdraw.modalTitle": "Retirar Power",
"wallet.withdraw.submitButton": "Enviar",
"wallet.withdraw.success": "¡Retiro exitoso!"
}
}

View File

@ -192,4 +192,4 @@
"wallet.withdraw.modalTitle": "Nosta Poweria",
"wallet.withdraw.submitButton": "Lähetä",
"wallet.withdraw.success": "Nosto onnistui!"
}
}

Some files were not shown because too many files have changed in this diff Show More