mirror of
https://github.com/ivabus/gui
synced 2025-04-23 14:07:14 +03:00
Crowdin dynamic update (#268)
* #264 i18n dropdown ui * #264 improve i18n configuration to use hardcoded english as default * #264 sync language english to crowdin when merged to main --------- Co-authored-by: neil <neil@neils-MacBook-Pro.local>
This commit is contained in:
parent
cdf01642ac
commit
a7a63ad030
13 changed files with 148 additions and 914 deletions
12
.github/workflows/build-sign-notarize.yml
vendored
12
.github/workflows/build-sign-notarize.yml
vendored
|
@ -12,6 +12,9 @@ on:
|
|||
debug:
|
||||
required: true
|
||||
type: string
|
||||
sync-translation:
|
||||
required: false
|
||||
type: string
|
||||
outputs:
|
||||
s3-electron-dist-key:
|
||||
description: 'The S3 build key includes the installer files: [zip, dmg, etc, yml] from electron'
|
||||
|
@ -83,6 +86,7 @@ jobs:
|
|||
if: inputs.s3-prefix != 'release'
|
||||
run: tea -SE xc dist
|
||||
env:
|
||||
SYNC_I18N: 1
|
||||
PUBLIC_MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_PROJECT_TOKEN }}
|
||||
DEBUG_BUILD: ${{ inputs.debug }}
|
||||
PUBLIC_VERSION: ${{ steps.gui-version.outputs.version }}
|
||||
|
@ -97,6 +101,7 @@ jobs:
|
|||
if: inputs.s3-prefix == 'release'
|
||||
run: tea -SE xc dist
|
||||
env:
|
||||
SYNC_I18N: 1
|
||||
PUBLIC_MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_PROJECT_TOKEN }}
|
||||
DEBUG_BUILD: ${{ inputs.debug }}
|
||||
PUBLIC_VERSION: ${{ steps.gui-version.outputs.version }}
|
||||
|
@ -130,6 +135,13 @@ jobs:
|
|||
aws s3 cp artifacts.tgz $S3_KEY
|
||||
echo key=$S3_KEY >> $GITHUB_OUTPUT
|
||||
|
||||
- name: sync translation
|
||||
if: inputs.sync-translation == '1'
|
||||
run: |
|
||||
cd modules/desktop && node scripts/update-crowdin-source.cjs
|
||||
env:
|
||||
CROWDIN_API_TOKEN: ${{ secrets.CROWDIN_API_TOKEN }}
|
||||
|
||||
notarize-mac-installers:
|
||||
if: inputs.s3-prefix != 'release'
|
||||
# TODO: run only for mac, create separate Job for linux
|
||||
|
|
1
.github/workflows/main.yml
vendored
1
.github/workflows/main.yml
vendored
|
@ -38,6 +38,7 @@ jobs:
|
|||
platform: ${{ matrix.platform }}
|
||||
s3-prefix: main
|
||||
debug: 1
|
||||
sync-translation: 1
|
||||
secrets: inherit
|
||||
upload:
|
||||
needs: [build_desktop]
|
||||
|
|
|
@ -33,9 +33,12 @@ pnpm test
|
|||
|
||||
```
|
||||
|
||||
## Intuition Building Links
|
||||
## i18n
|
||||
|
||||
- [Rust module system is weird?](https://www.sheshbabu.com/posts/rust-module-system/)
|
||||
Default locale is `english` it is defined in `src/libs/translations/translations.json`. Include all new keys there then this will automatically sync to crowdin once merged to `main`.
|
||||
Data from [crowdin](https://crowdin.com) our translation app/community will only be loaded when env var `SYNC_I18N` exists. Currently only configured on top of the GHA CI/CD workflows.
|
||||
|
||||
## Intuition Building Links
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/Dax89/electron-sveltekit/blob/master/icon.png" width="256">
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
const fs = require("fs");
|
||||
const _ = require("lodash");
|
||||
const translations = require("../src/libs/translations/translations.json");
|
||||
|
||||
const englishRaw = translations["en"];
|
||||
|
||||
delete englishRaw.lang;
|
||||
|
||||
function flattenObject(o, prefix = "", result = {}, keepNull = true) {
|
||||
if (_.isString(o) || _.isNumber(o) || _.isBoolean(o) || (keepNull && _.isNull(o))) {
|
||||
result[prefix] = o;
|
||||
return result;
|
||||
}
|
||||
|
||||
if (_.isArray(o) || _.isPlainObject(o)) {
|
||||
for (let i in o) {
|
||||
let pref = prefix;
|
||||
if (_.isArray(o)) {
|
||||
pref = pref + `[${i}]`;
|
||||
} else {
|
||||
if (_.isEmpty(prefix)) {
|
||||
pref = i;
|
||||
} else {
|
||||
pref = prefix + "." + i;
|
||||
}
|
||||
}
|
||||
flattenObject(o[i], pref, result, keepNull);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
const flattenedEnglish = flattenObject(englishRaw);
|
||||
|
||||
fs.writeFileSync("./copy.json", JSON.stringify(flattenedEnglish, null, 2), "utf-8");
|
100
modules/desktop/scripts/update-crowdin-source.cjs
Normal file
100
modules/desktop/scripts/update-crowdin-source.cjs
Normal file
|
@ -0,0 +1,100 @@
|
|||
const fs = require("fs");
|
||||
const _ = require("lodash");
|
||||
const translations = require("../src/libs/translations/translations.json");
|
||||
const axios = require("axios");
|
||||
|
||||
const token = process.env.CROWDIN_API_TOKEN;
|
||||
const projectId = 570715;
|
||||
const fileId = 7;
|
||||
const headers = {
|
||||
Authorization: `Bearer ${token}`,
|
||||
"Content-Type": "application/json"
|
||||
};
|
||||
|
||||
const englishRaw = translations["en"];
|
||||
|
||||
delete englishRaw.lang;
|
||||
|
||||
function flattenObject(o, prefix = "", result = {}, keepNull = true) {
|
||||
if (_.isString(o) || _.isNumber(o) || _.isBoolean(o) || (keepNull && _.isNull(o))) {
|
||||
result[prefix] = o;
|
||||
return result;
|
||||
}
|
||||
|
||||
if (_.isArray(o) || _.isPlainObject(o)) {
|
||||
for (let i in o) {
|
||||
let pref = prefix;
|
||||
if (_.isArray(o)) {
|
||||
pref = pref + `[${i}]`;
|
||||
} else {
|
||||
if (_.isEmpty(prefix)) {
|
||||
pref = i;
|
||||
} else {
|
||||
pref = prefix + "." + i;
|
||||
}
|
||||
}
|
||||
flattenObject(o[i], pref, result, keepNull);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
const flattenedEnglish = flattenObject(englishRaw);
|
||||
|
||||
const getStrings = async () => {
|
||||
const { data } = await axios({
|
||||
method: "GET",
|
||||
url: `https://api.crowdin.com/api/v2/projects/${projectId}/strings?limit=500`,
|
||||
headers
|
||||
});
|
||||
return data.data;
|
||||
};
|
||||
|
||||
async function main() {
|
||||
const data = await getStrings();
|
||||
for (const key in flattenedEnglish) {
|
||||
const found = data.find((data) => data.data.identifier === `"${key}"`);
|
||||
if (found && found.data.text !== flattenedEnglish[key]) {
|
||||
console.log("update!", key, found.data.text, flattenedEnglish[key]);
|
||||
await updateString(found.data.id, flattenedEnglish[key]);
|
||||
} else if (!found) {
|
||||
// insert add
|
||||
await createString(key, flattenedEnglish[key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function createString(key, text) {
|
||||
await axios({
|
||||
method: "POST",
|
||||
url: `https://api.crowdin.com/api/v2/projects/${projectId}/strings`,
|
||||
headers,
|
||||
data: {
|
||||
text,
|
||||
identifier: `"${key}"`,
|
||||
fileId,
|
||||
context: ` -> ${key}`,
|
||||
isHidden: false,
|
||||
maxLength: 0,
|
||||
labelIds: []
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async function updateString(stringId, value) {
|
||||
const d = await axios({
|
||||
method: "PATCH",
|
||||
url: `https://api.crowdin.com/api/v2/projects/${projectId}/strings/${stringId}`,
|
||||
headers,
|
||||
data: [
|
||||
{
|
||||
value,
|
||||
op: "replace",
|
||||
path: "/text"
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
main();
|
|
@ -2,6 +2,7 @@ const otaClient = require("@crowdin/ota-client");
|
|||
const _ = require("lodash");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const defaultEnTranslation = require("../src/libs/translations/translations.json");
|
||||
|
||||
// this read only hash is from crowdin
|
||||
const hash = "cf849610ca66250f0954379ct4t";
|
||||
|
@ -10,6 +11,8 @@ const client = new otaClient.default(hash);
|
|||
|
||||
async function main() {
|
||||
console.log("getting latest translation!");
|
||||
if (!process.env.SYNC_I18N) return;
|
||||
|
||||
const [languagesList, translationsRaw] = await Promise.all([
|
||||
client.getLanguageObjects(),
|
||||
client.getStrings()
|
||||
|
@ -33,7 +36,20 @@ async function main() {
|
|||
}, {});
|
||||
|
||||
const translationsPath = path.join(__dirname, "../src/libs/translations/translations.json");
|
||||
await fs.writeFileSync(translationsPath, JSON.stringify(translations, null, 2), "utf-8");
|
||||
|
||||
defaultEnTranslation.en.lang = translations.en.lang;
|
||||
await fs.writeFileSync(
|
||||
translationsPath,
|
||||
JSON.stringify(
|
||||
{
|
||||
...translations,
|
||||
...defaultEnTranslation
|
||||
},
|
||||
null,
|
||||
2
|
||||
),
|
||||
"utf-8"
|
||||
);
|
||||
}
|
||||
|
||||
main();
|
||||
|
|
|
@ -2,8 +2,11 @@
|
|||
import { t, locales, locale } from '$libs/translations';
|
||||
</script>
|
||||
|
||||
<select bind:value="{$locale}" class="bg-black text-sm text-gray">
|
||||
{#each $locales as value}
|
||||
<option value="{value}">{$t(`lang.${value}`)}</option>
|
||||
{/each}
|
||||
</select>
|
||||
<section class="flex items-center border border-gray h-8 mt-1 mr-1 px-2 w-48 rounded-sm">
|
||||
<i class="icon-world text-gray mt-2"></i>
|
||||
<select bind:value="{$locale}" class="bg-black text-sm text-gray flex-grow">
|
||||
{#each $locales as value}
|
||||
<option value="{value}">{$t(`lang.${value}`)}</option>
|
||||
{/each}
|
||||
</select>
|
||||
</section>
|
|
@ -1,252 +1,7 @@
|
|||
{
|
||||
"ar": {
|
||||
"lang": {
|
||||
"ar": "Arabic",
|
||||
"zh-CN": "Chinese Simplified",
|
||||
"nl": "Dutch",
|
||||
"en": "English",
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pt-PT": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"es-ES": "Spanish"
|
||||
},
|
||||
"cli": {
|
||||
"install": "tea ثَبَّتَ"
|
||||
},
|
||||
"store-search-placeholder": "search the tea store",
|
||||
"search": "search",
|
||||
"home": {
|
||||
"discover-title": "DISCOVER",
|
||||
"asset-title": "ASSET TYPE",
|
||||
"tutorials-title": "TUTORIALS",
|
||||
"os-news-title": "OPEN-SOURCE NEWS"
|
||||
},
|
||||
"package": {
|
||||
"top-list-title": "Top packages this week",
|
||||
"browse-cta": "Browse packages",
|
||||
"what-title": "What are packages?",
|
||||
"short-description": "Collections of files aggregated to form larger frameworks & functions. Think Python or Node.js.",
|
||||
"foundation-essentials-title": "FOUNDATION ESSENTIALS",
|
||||
"view-all-cta": "View all packages",
|
||||
"install-label": "install",
|
||||
"installed-label": "installed",
|
||||
"installing-label": "installing",
|
||||
"reinstall-label": "re-install",
|
||||
"my-installs-title": "my installs",
|
||||
"check-for-updates": "check for updates",
|
||||
"details": "details",
|
||||
"install-tea-label": "Install tea cli",
|
||||
"update-tea-label": "Update now",
|
||||
"install-tea-cli": "This app requires our command-line interface",
|
||||
"update-tea-cli": "An update is available for tea cli"
|
||||
},
|
||||
"script": {
|
||||
"top-list-title": "Top scripts this week",
|
||||
"view-all-cta": "View all scripts",
|
||||
"use-label": "use",
|
||||
"browse-cta": "Browse scripts",
|
||||
"what-title": "What are scripts?",
|
||||
"short-description": "Invisible applications that chain packages together in order to perform cool actions on your computer."
|
||||
},
|
||||
"post": {
|
||||
"workshops-title": "workshops to get started",
|
||||
"article-more-cta": "Read more articles",
|
||||
"read-more-cta": "read more"
|
||||
},
|
||||
"footer": {
|
||||
"quick-links-title": "quick links",
|
||||
"about-tea-store": "about the tea store",
|
||||
"report-a-problem": "report a problem",
|
||||
"visit-website": "visit tea.xyz",
|
||||
"terms-services": "terms & services",
|
||||
"privacy-policy": "privacy-policy"
|
||||
},
|
||||
"documentation": {
|
||||
"title": "documentation",
|
||||
"featured-courses-title": "featured courses",
|
||||
"workshops": "workshops"
|
||||
},
|
||||
"view-all": "view all",
|
||||
"sorting": {
|
||||
"label": "sort order",
|
||||
"popularity": "popularity",
|
||||
"most-recent": "most recent"
|
||||
}
|
||||
},
|
||||
"zh-CN": {
|
||||
"lang": {
|
||||
"ar": "Arabic",
|
||||
"zh-CN": "Chinese Simplified",
|
||||
"nl": "Dutch",
|
||||
"en": "English",
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pt-PT": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"es-ES": "Spanish"
|
||||
},
|
||||
"cli": {
|
||||
"install": "装 tea"
|
||||
},
|
||||
"store-search-placeholder": "search the tea store",
|
||||
"search": "search",
|
||||
"home": {
|
||||
"discover-title": "DISCOVER",
|
||||
"asset-title": "ASSET TYPE",
|
||||
"tutorials-title": "TUTORIALS",
|
||||
"os-news-title": "OPEN-SOURCE NEWS"
|
||||
},
|
||||
"package": {
|
||||
"top-list-title": "Top packages this week",
|
||||
"browse-cta": "Browse packages",
|
||||
"what-title": "What are packages?",
|
||||
"short-description": "Collections of files aggregated to form larger frameworks & functions. Think Python or Node.js.",
|
||||
"foundation-essentials-title": "FOUNDATION ESSENTIALS",
|
||||
"view-all-cta": "View all packages",
|
||||
"install-label": "install",
|
||||
"installed-label": "installed",
|
||||
"installing-label": "installing",
|
||||
"reinstall-label": "re-install",
|
||||
"my-installs-title": "my installs",
|
||||
"check-for-updates": "check for updates",
|
||||
"details": "details",
|
||||
"install-tea-label": "Install tea cli",
|
||||
"update-tea-label": "Update now",
|
||||
"install-tea-cli": "This app requires our command-line interface",
|
||||
"update-tea-cli": "An update is available for tea cli"
|
||||
},
|
||||
"script": {
|
||||
"top-list-title": "Top scripts this week",
|
||||
"view-all-cta": "View all scripts",
|
||||
"use-label": "use",
|
||||
"browse-cta": "Browse scripts",
|
||||
"what-title": "What are scripts?",
|
||||
"short-description": "Invisible applications that chain packages together in order to perform cool actions on your computer."
|
||||
},
|
||||
"post": {
|
||||
"workshops-title": "workshops to get started",
|
||||
"article-more-cta": "Read more articles",
|
||||
"read-more-cta": "read more"
|
||||
},
|
||||
"footer": {
|
||||
"quick-links-title": "quick links",
|
||||
"about-tea-store": "about the tea store",
|
||||
"report-a-problem": "report a problem",
|
||||
"visit-website": "visit tea.xyz",
|
||||
"terms-services": "terms & services",
|
||||
"privacy-policy": "privacy-policy"
|
||||
},
|
||||
"documentation": {
|
||||
"title": "documentation",
|
||||
"featured-courses-title": "featured courses",
|
||||
"workshops": "workshops"
|
||||
},
|
||||
"view-all": "view all",
|
||||
"sorting": {
|
||||
"label": "sort order",
|
||||
"popularity": "popularity",
|
||||
"most-recent": "most recent"
|
||||
}
|
||||
},
|
||||
"nl": {
|
||||
"lang": {
|
||||
"ar": "Arabic",
|
||||
"zh-CN": "Chinese Simplified",
|
||||
"nl": "Dutch",
|
||||
"en": "English",
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pt-PT": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"es-ES": "Spanish"
|
||||
},
|
||||
"cli": {
|
||||
"install": "installeer tea"
|
||||
},
|
||||
"store-search-placeholder": "search the tea store",
|
||||
"search": "search",
|
||||
"home": {
|
||||
"discover-title": "DISCOVER",
|
||||
"asset-title": "ASSET TYPE",
|
||||
"tutorials-title": "TUTORIALS",
|
||||
"os-news-title": "OPEN-SOURCE NEWS"
|
||||
},
|
||||
"package": {
|
||||
"top-list-title": "Top packages this week",
|
||||
"browse-cta": "Browse packages",
|
||||
"what-title": "What are packages?",
|
||||
"short-description": "Collections of files aggregated to form larger frameworks & functions. Think Python or Node.js.",
|
||||
"foundation-essentials-title": "FOUNDATION ESSENTIALS",
|
||||
"view-all-cta": "View all packages",
|
||||
"install-label": "install",
|
||||
"installed-label": "installed",
|
||||
"installing-label": "installing",
|
||||
"reinstall-label": "re-install",
|
||||
"my-installs-title": "my installs",
|
||||
"check-for-updates": "check for updates",
|
||||
"details": "details",
|
||||
"install-tea-label": "Install tea cli",
|
||||
"update-tea-label": "Update now",
|
||||
"install-tea-cli": "This app requires our command-line interface",
|
||||
"update-tea-cli": "An update is available for tea cli"
|
||||
},
|
||||
"script": {
|
||||
"top-list-title": "Top scripts this week",
|
||||
"view-all-cta": "View all scripts",
|
||||
"use-label": "use",
|
||||
"browse-cta": "Browse scripts",
|
||||
"what-title": "What are scripts?",
|
||||
"short-description": "Invisible applications that chain packages together in order to perform cool actions on your computer."
|
||||
},
|
||||
"post": {
|
||||
"workshops-title": "workshops to get started",
|
||||
"article-more-cta": "Read more articles",
|
||||
"read-more-cta": "read more"
|
||||
},
|
||||
"footer": {
|
||||
"quick-links-title": "quick links",
|
||||
"about-tea-store": "about the tea store",
|
||||
"report-a-problem": "report a problem",
|
||||
"visit-website": "visit tea.xyz",
|
||||
"terms-services": "terms & services",
|
||||
"privacy-policy": "privacy-policy"
|
||||
},
|
||||
"documentation": {
|
||||
"title": "documentation",
|
||||
"featured-courses-title": "featured courses",
|
||||
"workshops": "workshops"
|
||||
},
|
||||
"view-all": "view all",
|
||||
"sorting": {
|
||||
"label": "sort order",
|
||||
"popularity": "popularity",
|
||||
"most-recent": "most recent"
|
||||
}
|
||||
},
|
||||
"en": {
|
||||
"lang": {
|
||||
"ar": "Arabic",
|
||||
"zh-CN": "Chinese Simplified",
|
||||
"nl": "Dutch",
|
||||
"en": "English",
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pt-PT": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"es-ES": "Spanish"
|
||||
"en": "English"
|
||||
},
|
||||
"cli": {
|
||||
"install": "install tea"
|
||||
|
@ -311,629 +66,5 @@
|
|||
"popularity": "popularity",
|
||||
"most-recent": "most recent"
|
||||
}
|
||||
},
|
||||
"fr": {
|
||||
"lang": {
|
||||
"ar": "Arabic",
|
||||
"zh-CN": "Chinese Simplified",
|
||||
"nl": "Dutch",
|
||||
"en": "English",
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pt-PT": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"es-ES": "Spanish"
|
||||
},
|
||||
"cli": {
|
||||
"install": "installer le tea"
|
||||
},
|
||||
"store-search-placeholder": "search the tea store",
|
||||
"search": "search",
|
||||
"home": {
|
||||
"discover-title": "DISCOVER",
|
||||
"asset-title": "ASSET TYPE",
|
||||
"tutorials-title": "TUTORIALS",
|
||||
"os-news-title": "OPEN-SOURCE NEWS"
|
||||
},
|
||||
"package": {
|
||||
"top-list-title": "Top packages this week",
|
||||
"browse-cta": "Browse packages",
|
||||
"what-title": "What are packages?",
|
||||
"short-description": "Collections of files aggregated to form larger frameworks & functions. Think Python or Node.js.",
|
||||
"foundation-essentials-title": "FOUNDATION ESSENTIALS",
|
||||
"view-all-cta": "View all packages",
|
||||
"install-label": "install",
|
||||
"installed-label": "installed",
|
||||
"installing-label": "installing",
|
||||
"reinstall-label": "re-install",
|
||||
"my-installs-title": "my installs",
|
||||
"check-for-updates": "check for updates",
|
||||
"details": "details",
|
||||
"install-tea-label": "Install tea cli",
|
||||
"update-tea-label": "Update now",
|
||||
"install-tea-cli": "This app requires our command-line interface",
|
||||
"update-tea-cli": "An update is available for tea cli"
|
||||
},
|
||||
"script": {
|
||||
"top-list-title": "Top scripts this week",
|
||||
"view-all-cta": "View all scripts",
|
||||
"use-label": "use",
|
||||
"browse-cta": "Browse scripts",
|
||||
"what-title": "What are scripts?",
|
||||
"short-description": "Invisible applications that chain packages together in order to perform cool actions on your computer."
|
||||
},
|
||||
"post": {
|
||||
"workshops-title": "workshops to get started",
|
||||
"article-more-cta": "Read more articles",
|
||||
"read-more-cta": "read more"
|
||||
},
|
||||
"footer": {
|
||||
"quick-links-title": "quick links",
|
||||
"about-tea-store": "about the tea store",
|
||||
"report-a-problem": "report a problem",
|
||||
"visit-website": "visit tea.xyz",
|
||||
"terms-services": "terms & services",
|
||||
"privacy-policy": "privacy-policy"
|
||||
},
|
||||
"documentation": {
|
||||
"title": "documentation",
|
||||
"featured-courses-title": "featured courses",
|
||||
"workshops": "workshops"
|
||||
},
|
||||
"view-all": "view all",
|
||||
"sorting": {
|
||||
"label": "sort order",
|
||||
"popularity": "popularity",
|
||||
"most-recent": "most recent"
|
||||
}
|
||||
},
|
||||
"de": {
|
||||
"lang": {
|
||||
"ar": "Arabic",
|
||||
"zh-CN": "Chinese Simplified",
|
||||
"nl": "Dutch",
|
||||
"en": "English",
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pt-PT": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"es-ES": "Spanish"
|
||||
},
|
||||
"cli": {
|
||||
"install": "tea installieren"
|
||||
},
|
||||
"store-search-placeholder": "Suche im Tea-laden",
|
||||
"search": "suchen",
|
||||
"home": {
|
||||
"discover-title": "Entdecken",
|
||||
"asset-title": "Asset-Typ",
|
||||
"tutorials-title": "TUTORIALS",
|
||||
"os-news-title": "Open-Source-Nachrichten"
|
||||
},
|
||||
"package": {
|
||||
"top-list-title": "Top packages this week",
|
||||
"browse-cta": "Browse packages",
|
||||
"what-title": "What are packages?",
|
||||
"short-description": "Collections of files aggregated to form larger frameworks & functions. Think Python or Node.js.",
|
||||
"foundation-essentials-title": "FOUNDATION ESSENTIALS",
|
||||
"view-all-cta": "View all packages",
|
||||
"install-label": "Installieren",
|
||||
"installed-label": "eingerichtet",
|
||||
"installing-label": "installieren",
|
||||
"reinstall-label": "neu installieren",
|
||||
"my-installs-title": "my installs",
|
||||
"check-for-updates": "check for updates",
|
||||
"details": "details",
|
||||
"install-tea-label": "Install tea cli",
|
||||
"update-tea-label": "Update now",
|
||||
"install-tea-cli": "This app requires our command-line interface",
|
||||
"update-tea-cli": "An update is available for tea cli"
|
||||
},
|
||||
"script": {
|
||||
"top-list-title": "Top scripts this week",
|
||||
"view-all-cta": "View all scripts",
|
||||
"use-label": "use",
|
||||
"browse-cta": "Browse scripts",
|
||||
"what-title": "What are scripts?",
|
||||
"short-description": "Invisible applications that chain packages together in order to perform cool actions on your computer."
|
||||
},
|
||||
"post": {
|
||||
"workshops-title": "workshops to get started",
|
||||
"article-more-cta": "Read more articles",
|
||||
"read-more-cta": "read more"
|
||||
},
|
||||
"footer": {
|
||||
"quick-links-title": "quick links",
|
||||
"about-tea-store": "about the tea store",
|
||||
"report-a-problem": "report a problem",
|
||||
"visit-website": "visit tea.xyz",
|
||||
"terms-services": "terms & services",
|
||||
"privacy-policy": "datenschutz-Bestimmungen"
|
||||
},
|
||||
"documentation": {
|
||||
"title": "documentation",
|
||||
"featured-courses-title": "featured courses",
|
||||
"workshops": "workshops"
|
||||
},
|
||||
"view-all": "view all",
|
||||
"sorting": {
|
||||
"label": "sortierreihenfolge",
|
||||
"popularity": "popularität",
|
||||
"most-recent": "neueste"
|
||||
}
|
||||
},
|
||||
"it": {
|
||||
"lang": {
|
||||
"ar": "Arabic",
|
||||
"zh-CN": "Chinese Simplified",
|
||||
"nl": "Dutch",
|
||||
"en": "English",
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pt-PT": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"es-ES": "Spanish"
|
||||
},
|
||||
"cli": {
|
||||
"install": "installare il tea"
|
||||
},
|
||||
"store-search-placeholder": "search the tea store",
|
||||
"search": "search",
|
||||
"home": {
|
||||
"discover-title": "DISCOVER",
|
||||
"asset-title": "ASSET TYPE",
|
||||
"tutorials-title": "TUTORIALS",
|
||||
"os-news-title": "OPEN-SOURCE NEWS"
|
||||
},
|
||||
"package": {
|
||||
"top-list-title": "Top packages this week",
|
||||
"browse-cta": "Browse packages",
|
||||
"what-title": "What are packages?",
|
||||
"short-description": "Collections of files aggregated to form larger frameworks & functions. Think Python or Node.js.",
|
||||
"foundation-essentials-title": "FOUNDATION ESSENTIALS",
|
||||
"view-all-cta": "View all packages",
|
||||
"install-label": "install",
|
||||
"installed-label": "installed",
|
||||
"installing-label": "installing",
|
||||
"reinstall-label": "re-install",
|
||||
"my-installs-title": "my installs",
|
||||
"check-for-updates": "check for updates",
|
||||
"details": "details",
|
||||
"install-tea-label": "Install tea cli",
|
||||
"update-tea-label": "Update now",
|
||||
"install-tea-cli": "This app requires our command-line interface",
|
||||
"update-tea-cli": "An update is available for tea cli"
|
||||
},
|
||||
"script": {
|
||||
"top-list-title": "Top scripts this week",
|
||||
"view-all-cta": "View all scripts",
|
||||
"use-label": "use",
|
||||
"browse-cta": "Browse scripts",
|
||||
"what-title": "What are scripts?",
|
||||
"short-description": "Invisible applications that chain packages together in order to perform cool actions on your computer."
|
||||
},
|
||||
"post": {
|
||||
"workshops-title": "workshops to get started",
|
||||
"article-more-cta": "Read more articles",
|
||||
"read-more-cta": "read more"
|
||||
},
|
||||
"footer": {
|
||||
"quick-links-title": "quick links",
|
||||
"about-tea-store": "about the tea store",
|
||||
"report-a-problem": "report a problem",
|
||||
"visit-website": "visit tea.xyz",
|
||||
"terms-services": "terms & services",
|
||||
"privacy-policy": "privacy-policy"
|
||||
},
|
||||
"documentation": {
|
||||
"title": "documentation",
|
||||
"featured-courses-title": "featured courses",
|
||||
"workshops": "workshops"
|
||||
},
|
||||
"view-all": "view all",
|
||||
"sorting": {
|
||||
"label": "sort order",
|
||||
"popularity": "popularity",
|
||||
"most-recent": "most recent"
|
||||
}
|
||||
},
|
||||
"ja": {
|
||||
"lang": {
|
||||
"ar": "Arabic",
|
||||
"zh-CN": "Chinese Simplified",
|
||||
"nl": "Dutch",
|
||||
"en": "English",
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pt-PT": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"es-ES": "Spanish"
|
||||
},
|
||||
"cli": {
|
||||
"install": "tea をインストール"
|
||||
},
|
||||
"store-search-placeholder": "search the tea store",
|
||||
"search": "search",
|
||||
"home": {
|
||||
"discover-title": "DISCOVER",
|
||||
"asset-title": "ASSET TYPE",
|
||||
"tutorials-title": "TUTORIALS",
|
||||
"os-news-title": "OPEN-SOURCE NEWS"
|
||||
},
|
||||
"package": {
|
||||
"top-list-title": "Top packages this week",
|
||||
"browse-cta": "Browse packages",
|
||||
"what-title": "What are packages?",
|
||||
"short-description": "Collections of files aggregated to form larger frameworks & functions. Think Python or Node.js.",
|
||||
"foundation-essentials-title": "FOUNDATION ESSENTIALS",
|
||||
"view-all-cta": "View all packages",
|
||||
"install-label": "install",
|
||||
"installed-label": "installed",
|
||||
"installing-label": "installing",
|
||||
"reinstall-label": "re-install",
|
||||
"my-installs-title": "my installs",
|
||||
"check-for-updates": "check for updates",
|
||||
"details": "details",
|
||||
"install-tea-label": "Install tea cli",
|
||||
"update-tea-label": "Update now",
|
||||
"install-tea-cli": "This app requires our command-line interface",
|
||||
"update-tea-cli": "An update is available for tea cli"
|
||||
},
|
||||
"script": {
|
||||
"top-list-title": "Top scripts this week",
|
||||
"view-all-cta": "View all scripts",
|
||||
"use-label": "use",
|
||||
"browse-cta": "Browse scripts",
|
||||
"what-title": "What are scripts?",
|
||||
"short-description": "Invisible applications that chain packages together in order to perform cool actions on your computer."
|
||||
},
|
||||
"post": {
|
||||
"workshops-title": "workshops to get started",
|
||||
"article-more-cta": "Read more articles",
|
||||
"read-more-cta": "read more"
|
||||
},
|
||||
"footer": {
|
||||
"quick-links-title": "quick links",
|
||||
"about-tea-store": "about the tea store",
|
||||
"report-a-problem": "report a problem",
|
||||
"visit-website": "visit tea.xyz",
|
||||
"terms-services": "terms & services",
|
||||
"privacy-policy": "privacy-policy"
|
||||
},
|
||||
"documentation": {
|
||||
"title": "documentation",
|
||||
"featured-courses-title": "featured courses",
|
||||
"workshops": "workshops"
|
||||
},
|
||||
"view-all": "view all",
|
||||
"sorting": {
|
||||
"label": "sort order",
|
||||
"popularity": "popularity",
|
||||
"most-recent": "most recent"
|
||||
}
|
||||
},
|
||||
"ko": {
|
||||
"lang": {
|
||||
"ar": "Arabic",
|
||||
"zh-CN": "Chinese Simplified",
|
||||
"nl": "Dutch",
|
||||
"en": "English",
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pt-PT": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"es-ES": "Spanish"
|
||||
},
|
||||
"cli": {
|
||||
"install": "tea 설치"
|
||||
},
|
||||
"store-search-placeholder": "search the tea store",
|
||||
"search": "search",
|
||||
"home": {
|
||||
"discover-title": "DISCOVER",
|
||||
"asset-title": "ASSET TYPE",
|
||||
"tutorials-title": "TUTORIALS",
|
||||
"os-news-title": "OPEN-SOURCE NEWS"
|
||||
},
|
||||
"package": {
|
||||
"top-list-title": "Top packages this week",
|
||||
"browse-cta": "Browse packages",
|
||||
"what-title": "What are packages?",
|
||||
"short-description": "Collections of files aggregated to form larger frameworks & functions. Think Python or Node.js.",
|
||||
"foundation-essentials-title": "FOUNDATION ESSENTIALS",
|
||||
"view-all-cta": "View all packages",
|
||||
"install-label": "install",
|
||||
"installed-label": "installed",
|
||||
"installing-label": "installing",
|
||||
"reinstall-label": "re-install",
|
||||
"my-installs-title": "my installs",
|
||||
"check-for-updates": "check for updates",
|
||||
"details": "details",
|
||||
"install-tea-label": "Install tea cli",
|
||||
"update-tea-label": "Update now",
|
||||
"install-tea-cli": "This app requires our command-line interface",
|
||||
"update-tea-cli": "An update is available for tea cli"
|
||||
},
|
||||
"script": {
|
||||
"top-list-title": "Top scripts this week",
|
||||
"view-all-cta": "View all scripts",
|
||||
"use-label": "use",
|
||||
"browse-cta": "Browse scripts",
|
||||
"what-title": "What are scripts?",
|
||||
"short-description": "Invisible applications that chain packages together in order to perform cool actions on your computer."
|
||||
},
|
||||
"post": {
|
||||
"workshops-title": "workshops to get started",
|
||||
"article-more-cta": "Read more articles",
|
||||
"read-more-cta": "read more"
|
||||
},
|
||||
"footer": {
|
||||
"quick-links-title": "quick links",
|
||||
"about-tea-store": "about the tea store",
|
||||
"report-a-problem": "report a problem",
|
||||
"visit-website": "visit tea.xyz",
|
||||
"terms-services": "terms & services",
|
||||
"privacy-policy": "privacy-policy"
|
||||
},
|
||||
"documentation": {
|
||||
"title": "documentation",
|
||||
"featured-courses-title": "featured courses",
|
||||
"workshops": "workshops"
|
||||
},
|
||||
"view-all": "view all",
|
||||
"sorting": {
|
||||
"label": "sort order",
|
||||
"popularity": "popularity",
|
||||
"most-recent": "most recent"
|
||||
}
|
||||
},
|
||||
"pt-PT": {
|
||||
"lang": {
|
||||
"ar": "Arabic",
|
||||
"zh-CN": "Chinese Simplified",
|
||||
"nl": "Dutch",
|
||||
"en": "English",
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pt-PT": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"es-ES": "Spanish"
|
||||
},
|
||||
"cli": {
|
||||
"install": "instalar tea"
|
||||
},
|
||||
"store-search-placeholder": "search the tea store",
|
||||
"search": "search",
|
||||
"home": {
|
||||
"discover-title": "DISCOVER",
|
||||
"asset-title": "ASSET TYPE",
|
||||
"tutorials-title": "TUTORIALS",
|
||||
"os-news-title": "OPEN-SOURCE NEWS"
|
||||
},
|
||||
"package": {
|
||||
"top-list-title": "Top packages this week",
|
||||
"browse-cta": "Browse packages",
|
||||
"what-title": "What are packages?",
|
||||
"short-description": "Collections of files aggregated to form larger frameworks & functions. Think Python or Node.js.",
|
||||
"foundation-essentials-title": "FOUNDATION ESSENTIALS",
|
||||
"view-all-cta": "View all packages",
|
||||
"install-label": "install",
|
||||
"installed-label": "installed",
|
||||
"installing-label": "installing",
|
||||
"reinstall-label": "re-install",
|
||||
"my-installs-title": "my installs",
|
||||
"check-for-updates": "check for updates",
|
||||
"details": "details",
|
||||
"install-tea-label": "Install tea cli",
|
||||
"update-tea-label": "Update now",
|
||||
"install-tea-cli": "This app requires our command-line interface",
|
||||
"update-tea-cli": "An update is available for tea cli"
|
||||
},
|
||||
"script": {
|
||||
"top-list-title": "Top scripts this week",
|
||||
"view-all-cta": "View all scripts",
|
||||
"use-label": "use",
|
||||
"browse-cta": "Browse scripts",
|
||||
"what-title": "What are scripts?",
|
||||
"short-description": "Invisible applications that chain packages together in order to perform cool actions on your computer."
|
||||
},
|
||||
"post": {
|
||||
"workshops-title": "workshops to get started",
|
||||
"article-more-cta": "Read more articles",
|
||||
"read-more-cta": "read more"
|
||||
},
|
||||
"footer": {
|
||||
"quick-links-title": "quick links",
|
||||
"about-tea-store": "about the tea store",
|
||||
"report-a-problem": "report a problem",
|
||||
"visit-website": "visit tea.xyz",
|
||||
"terms-services": "terms & services",
|
||||
"privacy-policy": "privacy-policy"
|
||||
},
|
||||
"documentation": {
|
||||
"title": "documentation",
|
||||
"featured-courses-title": "featured courses",
|
||||
"workshops": "workshops"
|
||||
},
|
||||
"view-all": "view all",
|
||||
"sorting": {
|
||||
"label": "sort order",
|
||||
"popularity": "popularity",
|
||||
"most-recent": "most recent"
|
||||
}
|
||||
},
|
||||
"ru": {
|
||||
"lang": {
|
||||
"ar": "Arabic",
|
||||
"zh-CN": "Chinese Simplified",
|
||||
"nl": "Dutch",
|
||||
"en": "English",
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pt-PT": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"es-ES": "Spanish"
|
||||
},
|
||||
"cli": {
|
||||
"install": "установить tea"
|
||||
},
|
||||
"store-search-placeholder": "search the tea store",
|
||||
"search": "search",
|
||||
"home": {
|
||||
"discover-title": "DISCOVER",
|
||||
"asset-title": "ASSET TYPE",
|
||||
"tutorials-title": "TUTORIALS",
|
||||
"os-news-title": "OPEN-SOURCE NEWS"
|
||||
},
|
||||
"package": {
|
||||
"top-list-title": "Top packages this week",
|
||||
"browse-cta": "Browse packages",
|
||||
"what-title": "What are packages?",
|
||||
"short-description": "Collections of files aggregated to form larger frameworks & functions. Think Python or Node.js.",
|
||||
"foundation-essentials-title": "FOUNDATION ESSENTIALS",
|
||||
"view-all-cta": "View all packages",
|
||||
"install-label": "install",
|
||||
"installed-label": "installed",
|
||||
"installing-label": "installing",
|
||||
"reinstall-label": "re-install",
|
||||
"my-installs-title": "my installs",
|
||||
"check-for-updates": "check for updates",
|
||||
"details": "details",
|
||||
"install-tea-label": "Install tea cli",
|
||||
"update-tea-label": "Update now",
|
||||
"install-tea-cli": "This app requires our command-line interface",
|
||||
"update-tea-cli": "An update is available for tea cli"
|
||||
},
|
||||
"script": {
|
||||
"top-list-title": "Top scripts this week",
|
||||
"view-all-cta": "View all scripts",
|
||||
"use-label": "use",
|
||||
"browse-cta": "Browse scripts",
|
||||
"what-title": "What are scripts?",
|
||||
"short-description": "Invisible applications that chain packages together in order to perform cool actions on your computer."
|
||||
},
|
||||
"post": {
|
||||
"workshops-title": "workshops to get started",
|
||||
"article-more-cta": "Read more articles",
|
||||
"read-more-cta": "read more"
|
||||
},
|
||||
"footer": {
|
||||
"quick-links-title": "quick links",
|
||||
"about-tea-store": "about the tea store",
|
||||
"report-a-problem": "report a problem",
|
||||
"visit-website": "visit tea.xyz",
|
||||
"terms-services": "terms & services",
|
||||
"privacy-policy": "privacy-policy"
|
||||
},
|
||||
"documentation": {
|
||||
"title": "documentation",
|
||||
"featured-courses-title": "featured courses",
|
||||
"workshops": "workshops"
|
||||
},
|
||||
"view-all": "view all",
|
||||
"sorting": {
|
||||
"label": "sort order",
|
||||
"popularity": "popularity",
|
||||
"most-recent": "most recent"
|
||||
}
|
||||
},
|
||||
"es-ES": {
|
||||
"lang": {
|
||||
"ar": "Arabic",
|
||||
"zh-CN": "Chinese Simplified",
|
||||
"nl": "Dutch",
|
||||
"en": "English",
|
||||
"fr": "French",
|
||||
"de": "German",
|
||||
"it": "Italian",
|
||||
"ja": "Japanese",
|
||||
"ko": "Korean",
|
||||
"pt-PT": "Portuguese",
|
||||
"ru": "Russian",
|
||||
"es-ES": "Spanish"
|
||||
},
|
||||
"cli": {
|
||||
"install": "instalar tea"
|
||||
},
|
||||
"store-search-placeholder": "search the tea store",
|
||||
"search": "search",
|
||||
"home": {
|
||||
"discover-title": "DISCOVER",
|
||||
"asset-title": "ASSET TYPE",
|
||||
"tutorials-title": "TUTORIALS",
|
||||
"os-news-title": "OPEN-SOURCE NEWS"
|
||||
},
|
||||
"package": {
|
||||
"top-list-title": "Top packages this week",
|
||||
"browse-cta": "Browse packages",
|
||||
"what-title": "What are packages?",
|
||||
"short-description": "Collections of files aggregated to form larger frameworks & functions. Think Python or Node.js.",
|
||||
"foundation-essentials-title": "FOUNDATION ESSENTIALS",
|
||||
"view-all-cta": "View all packages",
|
||||
"install-label": "install",
|
||||
"installed-label": "installed",
|
||||
"installing-label": "installing",
|
||||
"reinstall-label": "re-install",
|
||||
"my-installs-title": "my installs",
|
||||
"check-for-updates": "check for updates",
|
||||
"details": "details",
|
||||
"install-tea-label": "Install tea cli",
|
||||
"update-tea-label": "Update now",
|
||||
"install-tea-cli": "This app requires our command-line interface",
|
||||
"update-tea-cli": "An update is available for tea cli"
|
||||
},
|
||||
"script": {
|
||||
"top-list-title": "Top scripts this week",
|
||||
"view-all-cta": "View all scripts",
|
||||
"use-label": "use",
|
||||
"browse-cta": "Browse scripts",
|
||||
"what-title": "What are scripts?",
|
||||
"short-description": "Invisible applications that chain packages together in order to perform cool actions on your computer."
|
||||
},
|
||||
"post": {
|
||||
"workshops-title": "workshops to get started",
|
||||
"article-more-cta": "Read more articles",
|
||||
"read-more-cta": "read more"
|
||||
},
|
||||
"footer": {
|
||||
"quick-links-title": "quick links",
|
||||
"about-tea-store": "about the tea store",
|
||||
"report-a-problem": "report a problem",
|
||||
"visit-website": "visit tea.xyz",
|
||||
"terms-services": "terms & services",
|
||||
"privacy-policy": "privacy-policy"
|
||||
},
|
||||
"documentation": {
|
||||
"title": "documentation",
|
||||
"featured-courses-title": "featured courses",
|
||||
"workshops": "workshops"
|
||||
},
|
||||
"view-all": "view all",
|
||||
"sorting": {
|
||||
"label": "sort order",
|
||||
"popularity": "popularity",
|
||||
"most-recent": "most recent"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -40,4 +40,5 @@
|
|||
<glyph glyph-name="exclamation-circle" unicode="E" d="M256 475c40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110 0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29z m37-356l0 54c0 3-1 5-3 7-2 2-4 3-6 3l-55 0c-3 0-5-1-7-3-2-2-3-4-3-7l0-54c0-2 1-5 3-6 2-2 4-3 7-3l55 0c2 0 4 1 6 2 2 2 3 4 3 7z m-1 98l5 178c0 2-1 4-3 5-2 2-4 2-7 2l-62 0c-3 0-5 0-7-2-2-1-3-3-3-5l5-178c0-1 1-3 3-5 1-1 4-2 6-2l53 0c3 0 5 1 7 2 2 2 3 4 3 5z"/>
|
||||
<glyph glyph-name="check-circle" unicode="F" d="M403 302c0 6-1 10-5 13l-26 26c-3 4-8 6-13 6-5 0-9-2-12-6l-117-116-65 64c-3 4-7 6-12 6-5 0-10-2-13-6l-26-25c-4-4-5-8-5-13 0-6 1-10 5-13l103-104c4-3 8-5 13-5 5 0 10 2 13 5l155 155c4 4 5 8 5 13z m72-46c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
|
||||
<glyph glyph-name="tea-x-btn" unicode="G" d="M512 463l-49 49-207-207-207 207-49-49 207-207-207-207 49-49 207 207 207-207 49 49-207 207z"/>
|
||||
<glyph glyph-name="world" unicode="H" d="M248 512c-137 0-248-111-248-248 0-137 111-248 248-248 137 0 248 111 248 248 0 137-111 248-248 248z m216-240l-96 0c-1 35-8 69-19 100 22 9 42 21 60 35 32-36 53-83 55-135z m-225-224c-26 23-49 51-65 85 21 6 43 10 66 11l0-96c0 0-1 0-1 0z m18 432c30-26 55-59 71-98-23-8-47-13-72-14l0 112c0 0 1 0 1 0z m26-3c45-8 84-28 115-58-17-13-35-24-55-32-14 35-35 65-60 90z m-43 3l0-112c-25 1-49 6-72 14 16 39 41 72 71 98 0 0 1 0 1 0z m-87-93c-20 8-38 19-55 32 31 30 70 50 115 58-25-25-46-55-60-90z m9-20c24-9 51-14 78-15l0-80-96 0c1 34 7 66 18 95z m78-111l0-96c-25-1-50-5-73-13-13 33-22 70-23 109z m-27-205c-40 7-76 24-105 49 16 11 33 20 51 27 14-29 32-54 54-76z m43-3l0 96c23-1 45-5 66-11-16-34-39-62-65-85 0 0-1 0-1 0z m81 79c18-7 35-16 51-27-29-25-65-42-105-49 22 22 40 47 54 76z m-8 20c-23 8-48 12-73 13l0 96 96 0c-1-39-10-76-23-109z m-73 125l0 80c27 1 54 6 78 15 11-29 17-62 18-95l-96 0z m-169 135c18-14 38-26 60-35-11-31-18-65-19-100l-96 0c2 52 23 99 55 135z m-55-151l96 0c1-41 10-79 24-114-20-8-39-19-56-31-38 37-62 88-64 145z m368-145c-17 12-36 23-56 31 14 35 23 73 24 114l96 0c-2-57-26-108-64-145z"/>
|
||||
</font></defs></svg>
|
||||
|
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 18 KiB |
Binary file not shown.
Binary file not shown.
|
@ -136,3 +136,6 @@
|
|||
.icon-tea-x-btn:before {
|
||||
content: "\47";
|
||||
}
|
||||
.icon-world:before {
|
||||
content: "\48";
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue