Hoʻolaha a Me Ka Pūnaewele
i18n.site
i ka hoʻolālā palapala noi ʻaoʻao hoʻokahi , a ua hoʻonohonoho kūʻokoʻa ka ʻaoʻao komo pūnaewele a me ka ʻike pūnaewele.
Ma hope o ka holo ʻana i ka unuhi ma luna, e hana ʻia nā papa kuhikuhi htm
a me v
ma lalo o ka papa kuhikuhi md/out/dev
.
Maʻaneʻi,ʻo dev
ka mea i kūkuluʻia ma muli o ka waihona hoʻonohonoho .i18n/htm/dev.yml
.
dev
papa kuhikuhi :
ʻO ka papa kuhikuhi htm
ka ʻaoʻao komo pūnaewele.
Aia ma ka papa kuhikuhi v
ka ʻike pūnaewele me nā helu mana.
ʻAʻole mālama ka nānā ʻana i ka helu mana a e kope i nā faila āpau i ka papa kuhikuhi out/dev/v/0.1.0
.
No ka hoʻokuʻu kūhelu, e kope ʻia nā faila i hoʻololi ʻia i ka papa kuhikuhi helu mana hou.
E Wehewehe I Ka Faila Hoʻonohonoho Me -c
E hana nā faila hoʻonohonoho ʻokoʻa i nā papa kuhikuhi pili i ka papa kuhikuhi out
.
No ka laʻana, e hana ʻo .i18n/htm/main.yml
i ka papa kuhikuhi out/main
.
ʻO dev.yml
a me main.yml
nā hoʻonohonoho paʻamau.
ʻO dev
ka pōkole o development
, e hōʻike ana i ke kaiapuni hoʻomohala, i hoʻohana ʻia no ka ʻike maka kūloko, a ʻo ia hoʻi ka faila hoʻonohonoho paʻamau.
ʻO ol
ka pōkole o online
, e hōʻike ana i ke kaiapuni pūnaewele, i hoʻohana ʻia no ka hoʻokuʻu kūhelu ʻana ʻo ia hoʻi ka faila hoʻonohonoho paʻamau i ka wā e hoʻohana ai i nā palena laina kauoha -n
a npm
e hoʻokuʻu.
Hiki iā ʻoe ke hana i nā faila hoʻonohonoho ʻē aʻe E hoʻohana i --htm_conf
ma ka laina kauoha e kuhikuhi i ka inoa file hoʻonohonoho e hoʻohana ai.
ʻo kahi laʻana:
i18n.site --htm_conf dist --save
Ma ʻaneʻi, hōʻike ʻo --save
i ka helu mana hoʻokuʻu hou.
Hoʻopuka i ka ʻike ma npmjs.com
ʻO ka hoʻopuka ʻana i ka ʻike i ka npmjs.com
npm &
E hoʻouka i nodejs
, e komo me npm login
.
Hoʻoponopono i md/.i18n/htm/main.yml
a hoʻololi i ka waiwai o md:
YOUR_NPM_PACKAGE
e like npmjs.com kāu inoa pūʻolo npm
ponoʻī.
A laila hoʻololi i md/.i18n/htm/main.package.json
Holo i i18n.site --npm
a i ʻole i18n.site -n
ma ka papa kuhikuhi md
e unuhi a hoʻolaha.
Inā hoʻohana ʻoe i kahi kaiapuni hoʻohui hoʻomau no ka hoʻolaha ʻana, ʻaʻohe pono e hoʻokomo i nodejs
E kope wale i ka ʻae ʻia a me ka hoʻopuka ʻana i ka ʻae ~/.npmrc
i ke kaiapuni.
Inā hoʻololi ʻoe i ka inoa pūʻolo o v:
i main.yml
, e ʻoluʻolu e holoi mua i .i18n/v/main
a laila hoʻolaha.
Paʻi ʻia Ke Kikowaena Proxy E npm
Inā pilikia nā mea hoʻohana ma ka ʻāina nui o Kina a hiki ʻole ke hoʻopuka i nā pūʻolo npm
, hiki iā lākou ke hoʻonohonoho i ka ʻano hoʻololi kaiapuni https_proxy
e hoʻonohonoho i ka server proxy.
Ke manaʻo nei ʻo 7890
kāu port server port, hiki iā ʻoe ke kākau:
https_proxy=http://127.0.0.1:7890 i18n.site -n
Maʻiʻo Hoʻokipa Ponoʻī
Inā makemake ʻoe e hoʻokipa iā ʻoe iho i ka ʻike, hoʻoponopono mua i md/.i18n/htm/main.yml
a hoʻololi i v: //unpkg.com/i18n.site
i kāu prefix URL, e like me v: //i18n-v.xxx.com
.
E komo i ka papa kuhikuhi md
a holo
i18n.site --htm_conf ol --save
a i ʻole ka pōkole
i18n.site -c ol -s
A laila, hoʻonohonoho i ka ʻike ma ka papa kuhikuhi md/out/main/v
i ke ala prefix URL i hoʻonohonoho ʻia ma v:
.
ʻO ka hope, e hoʻonohonoho i ka manawa huna o ke ala e pau ana i /.v
a i 1s
, inā ʻaʻole hiki ke komo koke i nā mea hou i hoʻokuʻu ʻia.
Hiki ke hoʻonohonoho ʻia ka manawa hūnā no nā ala ʻē aʻe i hoʻokahi makahiki a ʻoi aku paha e hōʻemi i nā noi pono ʻole.
E Hoʻokipa Ma s3
No ka mea hoʻokipa ponoʻī, ma kahi o ka hoʻohana ʻana i kāu kikowaena ponoʻī, CDN
kahi koho maʻamau e hoʻohana i S3
+
Hiki iā ʻoe ke hoʻohana i rclone no ke komo ʻana i ka server S3
, a laila e nānā a hoʻololi i ka palapala ma lalo nei, a kope wale i nā hoʻololi hoʻonui i ka S3
no kēlā me kēia hoʻokuʻu.
i18n.site -c ol -s
s3=your-s3
bucket=your-bucket
ver=$(head -1 .i18n/v/main/v.hash | cut -c 2-)
rclone copy --overwrite-dir out/main/htm/v/$ver $s3:/$bucket/$ver
rclone copy out/main/v/.v "$s3:/$bucket/"
E hoʻomanaʻo i ka hoʻonohonoho ʻana i CDN
no laila ʻo ka manawa huna o ke ala e pau ai i /.v
ʻo 1s
, inā ʻaʻole hiki ke komo koke i nā mea hou i hoʻokuʻu ʻia.
Hoʻolaha Pūnaewele
Hiki ke kau ʻia ka punaewele ma nā wahi a pau github page a ʻo cloudflare page nā koho maikaʻi.
Ma muli o ka hoʻohana ʻana o ka pūnaewele i kahi hoʻolālā noiʻi ʻaoʻao hoʻokahi , e hoʻomanaʻo e kākau hou i nā ala URL ʻaʻohe .
a index.html
.
Hoʻokahi wale nō mea e pono ai ka ʻaoʻao komo pūnaewele, a ʻaʻohe pono e hoʻihoʻi hou i ka ʻaoʻao komo pūnaewele no ka hoʻonui ʻana i nā ʻike ma hope.
E Hoʻolālā Ma Ka ʻaoʻao github
E kaomi mua github i18n-demo
A laila e hana i kahi hale kūʻai i18n-demo.github.io
ma lalo o kēia hui (e ʻoluʻolu e hoʻololi i i18n-demo
me ka inoa o ka hui āu i hana ai):
I ka paʻi ʻana i ka ʻatikala ma mua, ua hana ʻia out/main/htm
e ʻoluʻolu e komo i kēia papa kuhikuhi a holo :
ln -s index.html 404.html
No ka mea ʻaʻole kākoʻo ʻo github page
i ke kākau hou ʻana i ke ala URL, hoʻohana ʻia ʻo 404.html
ma kahi.
A laila e holo i kēia kauoha ma ka papa kuhikuhi htm
(e hoʻomanaʻo e hoʻololi i i18n-demo/i18n-demo.github.io.git
me kāu helu hale kūʻai ponoʻī) :
git init
git branch -M main
git remote add origin [email protected]:i18n-demo/i18n-demo.github.io.git
git push -u origin main -f
Ma hope o ka paʻi ʻana i ke code, e kali i ka holo ʻana o github page
e holo kūleʻa (e like me ka hōʻike ʻana ma lalo) ma mua o kou hiki ke komo.
No ka ʻaoʻao demo e ʻoluʻolu e ʻike:
https://i18n-demo.github.io
E Hoʻolālā Ma Ka ʻaoʻao cloudflare
cloudflare page ʻia me github page
, hāʻawi ia i ke kākau hou ʻana i ke ala a ʻoi aku ka maikaʻi o ka ʻāina nui o Kina a ʻoi aku ka maʻalahi o ka hoʻohana.
Hoʻokumu pinepine ʻia ka hoʻolaha ʻana o cloudflare page
i ka hoʻolaha ʻana o github page
ma luna.
E hana i kahi papahana a hoʻopaʻa i ka hale kūʻai i18n-demo.github.io
ma luna.
Hōʻike ʻia ke kaʻina hana ma ke kiʻi ma lalo.
E kaomi i Add Account
no ka hāʻawi ʻana i ke komo i ka hui i18n-demo
.
Inā ua hoʻopaʻa ʻoe i ka hale kūʻai o kahi hui ʻē aʻe, pono ʻoe e kaomi ʻelua i Add Account
e ʻae i ʻelua manawa ma mua o ka hōʻike ʻia ʻana o ka hui hou.
A laila, koho i ka hale kūʻai i18n-demo.github.io
, a laila kaomi i Begin setup
, a hoʻohana i nā koina paʻamau no nā pae aʻe.
Ma hope o ka hoʻopaʻa ʻana no ka manawa mua, pono ʻoe e kali i kekahi mau minuke ma mua o kou hiki ʻana iā ia.
Ma hope o ka hoʻolaha ʻana, hiki iā ʻoe ke hoʻopaʻa i kahi inoa inoa maʻamau.
Ma hope o ka hoʻopaʻa ʻana i ka inoa kikowaena maʻamau, e ʻoluʻolu e hele i ka inoa domain e hoʻonohonoho i ke ala kākau hou ʻana o ka palapala noi ʻaoʻao hoʻokahi, e like me ka hōʻike ʻana ma lalo nei:
ʻO nā lula ma ke kiʻi ma luna nei, e ʻoluʻolu e hoʻololi i i18n.site
ma ka laina mua ma lalo me ka inoa inoa āu i hoʻopaʻa ai.
(http.host in {"i18n.site"}) and not (
substring(http.request.uri.path,-3) in {".js" ".gz"} or
substring(http.request.uri.path,-4) in {".htm" ".rss" ".css" ".svg" ".ico" ".png" ".xml" ".txt"} or
substring(http.request.uri.path,-5) in {".html" ".avif" ".json"} or
ends_with(http.request.uri.path,".webmanifest")
)
Eia hou, e ʻoluʻolu e hoʻonohonoho i nā lula cache, e like me ka mea i hōʻike ʻia ma lalo nei, a hoʻonohonoho i ka lōʻihi o ka cache i hoʻokahi mahina.
E ʻoluʻolu e hoʻololi i ka inoa kikowaena e pili ana i ka ʻanuʻu ʻelua o ke kiʻi ma luna nei i ka inoa domain āu i hoʻopaʻa ai.
Hoʻonui I Ka Hoʻolaha Pūnaewele Ma Ka ʻāina Nui O Kina
Inā makemake ʻoe e ʻoi aku ka maikaʻi o ka hoʻokō ʻana i ka ʻoihana pūnaewele o ka ʻāina nui o Kina, e ʻoluʻolu e hoʻopaʻa inoa mua i kahi inoa kikowaena .
A laila, e hoʻohana i ka waiho ʻana o nā mea kūʻai ao ma out/main/htm
ʻāina nui o Kina + E hoʻohana i kēia ʻike CDN
.
Hiki iā ʻoe ke hoʻohana i ka helu ʻaoʻao e kākau hou i ke ala e hoʻololi ai i nā noi ʻaoʻao hoʻokahi No ka laʻana, hiki ke hoʻonohonoho ʻia ʻo Baidu Smart Cloud CDN
e like me kēia.
const uri = r.uri, p = uri.lastIndexOf(".");
if (
p < 0 ||
!"|js|css|htm|html|md|avif|json|ico|xml|rss|gz|mp4|png|svg|txt|webmanifest|".includes(
"|" + uri.slice(p + 1) + "|",
)
) {
const ua = r.headersIn["User-Agent"].toLowerCase()
if (/facebookexternalhit|slurp|bot|spider|curl/.test(ua)) {
r.return(
302,
(/baidu|yisou|sogou|360|byte/.test(ua) ? "/zh" : "/en") + r.uri + ".htm",
)
} else {
r.uri = "/index.html"
}
}
r.respHeader(() => {
const t = [], out = r.headersOut;
["Content-MD5", "Age", "Expires", "Last-Modified"].forEach(
i => delete out[i]
)
r.rawHeadersOut.forEach(i => {
const key = i[0].toLowerCase()
if (key.startsWith("x-") || key.startsWith("ohc-")) {
delete out[key]
}
})
out["Cache-Control"] = "max-age=" + 9e5
// Hiki iā ʻoe ke hoʻonohonoho i ke poʻo pane e hoʻopau i ka hoʻopuka, e like me out.XXX = 'MSG';
})
No ka mea ʻaʻole hiki ke noho pū ka moʻolelo MX
a me ka moʻolelo CNAME
, inā makemake ʻoe e loaʻa nā leka uila i ka manawa like, pono ʻoe e hui pū me ka cname_flatten i ka pae CNAME
i ka moʻolelo A
.
Eia kekahi, no ka nui o ke kumukūʻai o nā kaʻa kūʻai ma waho o ka ʻāina ʻo Kina, inā makemake ʻoe e hoʻonui i nā kumukūʻai, hiki iā ʻoe ke hoʻohana i DNS hoʻonā ʻāina manuahi ʻole a me ka inoa inoa maʻamau o Cloudflare for SaaS (e like me ka mea i hōʻike ʻia ma lalo nei). kaʻahele kaʻahele──Ka hele ʻana ma ka ʻāina nui ʻo Kina Baidu Cloud CDN
, hele ka huakaʻi honua cloudflare .
ʻOi aku ka paʻakikī o kēia mau hoʻonā hoʻolālā hoʻolaha a hoʻokomo ʻia i nā mokuna kaʻawale i ka wā e hiki mai ana.
Hoʻihoʻi Hou I Ka Inoa Puni Honua
Inā hoʻohana ʻoe i i18n.site
e hana i kahi pūnaewele e like me kāu pūnaewele nui, pono ʻoe e hoʻonohonoho i ka pan-domain redirection, ʻo ia hoʻi, hoʻihoʻi hou i ke komo ʻana i *.xxx.com
(me ka www.xxx.com
) i ka xxx.com
.
Hiki ke hoʻokō ʻia kēia koi me ke kōkua o Alibaba Cloud CDN
EdgeScript
( palapala Pelekane / Palapala Kina )
E hoʻohui i ka inoa kikowaena ma Alibaba CDN a kuhikuhi i ka inoa kikowaena *.xxx.com
i ka CNAME
ma Alibaba Cloud CDN
.
No ka laʻana, ʻo ka hoʻonohonoho hoʻohuli ʻana i ka inoa pan-domain o *.i18n.site
ma ke kiʻi ma luna nei penei:
rewrite(concat('https://i18n.site',$uri), 'redirect',301)
E Hoʻouka Me Ka nginx
E ʻoluʻolu e hoʻohui i kahi hoʻonohonoho like me /root/i18n/md/out/main/htm
ma ka paukū server
o nginx out/main/htm
location / {
root /root/i18n/md/out/main/htm;
add_header Cache-Control "max-age=9999999";
if ($uri !~* \.(avif|css|html|ico|js|json|png|svg|txt|webmanifest|xml)$) {
rewrite ^ /index.html last;
}
}
Ma Muli O Ka github action
Hoʻohui Mau
Hiki iā ʻoe ke kuhikuhi i kēia e hoʻonohonoho i kāu github action
:
name: i18n.site
on:
workflow_dispatch:
push:
branches:
- main
- dist
jobs:
i18n:
permissions:
repository-projects: write
contents: write
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: https://i18n.site
uses: i18n-site/github-action-i18n.site@main
with:
I18N_SITE_TOKEN: ${{ secrets.I18N_SITE_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
E like me ka mea i ʻike ʻia ma ka hoʻonohonoho hoʻonohonoho, hoʻomaka ʻia kēia kaʻina hana i ka wā e pana ana i ka lālā main
a me ka lālā dist
.
E hoʻohana ke kaʻina hana i ka faila hoʻonohonoho e pili ana i ka inoa lālā e paʻi i ka palapala ma ʻaneʻi, e hoʻohana ʻia .i18n/htm/main.yml
a me .i18n/htm/dist.yml
ma ke ʻano he hoʻonohonoho hoʻopuka.
Paipai mākou i nā hana maikaʻi loa no ka hoʻokuʻu palapala:
Ke hoʻoneʻe ʻia nā hoʻololi i ka lālā main
, hoʻomaka ka palapala e kūkulu ʻia a hoʻoili ʻia i ke kahua ʻike (loaʻa ke kahua nānā github page ).
Ma hope o ka hōʻoia ʻana i ka pololei o ka palapala ma ka pūnaewele ʻike, e hoʻohui ʻia ke code a hoʻokuʻu ʻia i ka lālā dist
, a e hele ka hale kūhelu a me ka hoʻolaha ʻana ma ka pūnaewele.
ʻOiaʻiʻo, pono ka hoʻokō ʻana i ke kaʻina hana i luna e kākau i nā hoʻonohonoho hou aʻe.
Hiki iā ʻoe ke kuhikuhi i ka papahana maoli github.com/fcdoc/doc
secrets.I18N_SITE_TOKEN
a me secrets.NPM_TOKEN
i ka hoʻonohonoho hoʻonohonoho pono iā ʻoe e hoʻonohonoho i nā ʻano huna ma ka waihona code.
I18N_SITE_TOKEN
i18n.site/token
ʻO NPM_TOKEN
ka hōʻailona hoʻopuka o ka pūʻolo npm
i ka hoʻonohonoho ʻana e kipa i npmjs.com
Papa Kuhikuhi
public
Nā waihona kikoo o ka pūnaewele, e like me favicon.ico
, robots.txt
, etc.
Hiki ke hana ʻia nā faila ikona me ka realfavicongenerator.net .
.i18n
Ma lalo o ka papa kuhikuhi .i18n
nā faila hoʻonohonoho, kahi unuhi unuhi, etc. o i18n.site
E nānā i ka mokuna aʻe "Configuration" no nā kikoʻī.
en
Papa kuhikuhi ʻōlelo kumu, e pili ana i ka waihona hoʻonohonoho en
o fromTo
i .i18n/conf.yml
i18n:
fromTo:
en: zh
E ʻoluʻolu e nānā i ka hoʻonohonoho ʻana o ka unuhi i18