koa의 i18n 대응
12916 단어 Node.jsKoaI18nJavaScript
개요
koa의 i18n에 대응하는 샘플입니다.nodev4 이상 대응.
현재 언어 환경에 따라 표시할 메시지를 전환합니다.
기본값은 일본어
QueryString에서
en를 지정하면 영어 태그가 됩니다.
라이브러리 작업
코드 해설
설명 같은 건 필요 없어요. 어쨌든 원본 코드를 보고 싶어요!이렇게 하면
참조https://github.com/Kazunori-Kimura/koa-i18n-sample.
./koa-i18n-sample
│
│ app.js
│ package.json
│
├─locales
│ en.js
│ ja.js
│
└─views
index.html
layout.html
locale 파일 만들기
./locales 아래에 사용자locale에 대응하는 정의 파일을 만듭니다.파일 이름은
{locale名}.json이고locale에 대응하는 문장 정의는 json 형식으로 기술되어 있습니다.ja.json
{
"title": "こんにちは Koa",
"message": "こんにちは、世界!"
}
en.json{
"title": "Hello Koa",
"message": "Hello, world!"
}
koa-i18n에서 파일 읽기대응하는locale의 데이터를view에 건네줍니다.
koa-i18n 열기i18n-2
코아를 위해 포장한 것 같아요.
템플릿 생성
이번에view의 템플릿 엔진 사용swig.
koa용 koa-swig 모듈 사용
대신 사용하고 싶습니다
co-views와swig도 마찬가지입니다.이번에는 전체적인 레이아웃
layout.html과내용
index.html을 삽입할 두 개의 템플릿 파일을 준비합니다.layout.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}koa-i18n-sample{% endblock %}</title>
<style>
html, body {
margin: 0px;
padding: 0px;
background-color: #E9ECF5;
}
#content {
margin: 40px auto;
padding: 10px;
width: 60vw;
height: 40vh;
background-color: #73BFB8;
color: #eaeaea;
font-size: 4em;
}
</style>
</head>
<body>
<section id="content">
{% block content %}
<p>Missing content!</p>
{% endblock %}
</section>
</body>
</html>
템플릿 파일에서 i18n 값을 사용하려면 {{ __("key") }} 형식으로 기술하십시오.index.html
{% extends 'layout.html' %}
{% block title %}{{ __("title") }}{% endblock %}
{% block content %}
<p>{{ __("message") }}</p>
{% endblock %}
app.js
우선, i18n은localles 폴더 내의 json 파일을
를 참고하십시오.
appjs
"use strict";
const koa = require("koa");
const route = require("koa-route");
const render = require("koa-swig");
const locale = require("koa-locale");
const i18n = require("koa-i18n");
const path = require("path");
const app = koa();
const PORT = 3000;
locale(app);
// i18nの設定
app.use(i18n(app, {
directory: path.resolve(__dirname, "locales"),
locales: ["ja", "en"],
extension: ".json",
modes: [
"query", // optional detect querystring - `/?locale=en`
"cookie", // optional detect cookie - `Cookie: locale=zh-TW`
"header" // optional detect header - `Accept-Language: zh-CN,zh;q=0.5`
]
}));
이번에 구상한 것은 일본어(ja)와 영어(en)의 전환이다.기본값
locales에서 지정한 그룹의 첫 번째 요소에 지정된localedefaultLocale에서 지정할 수도 있습니다.extension에서 .json를 지정합니다.이 지정이 없으면 기본 확장자는
.js입니다..js의 확장자로 json 파일을 만드는 것은 구역질이 난다정확히 지목하는 게 좋겠지.
modes 클라이언트locale를 가져오는 방법을 지정합니다.이번에는 쉽게 언어 전환을 하려고 하니 큐리스트링의 판단이 우선이다.
만약 통상적으로 구상한 사용이라면 상술한 설정만으로도 충분하다
자세한 설정은 i18n-2의 README를 참조하십시오.
appjs
// swigの設定
app.context.render = render({
root: path.resolve(__dirname, "views"),
ext: "html"
});
다음은 스웨그의 설정.이번에는 템플릿 파일의 저장 위치와 확장자를 지정했습니다.
세부 설정koa-swig의 README 및
swig의 문서를 참조하십시오.
appjs
// ルーティングの設定
// [get] /:view
app.use(route.get("/:view", function*(view){
this.body = yield this.render(view);
}));
마지막으로 라우팅 설정입니다.이번엔
index.html만 준비했으니까 의미가 없어요.고객의 요청에 따라 표시되는 보기를 전환합니다.
여기
:view에 들어간 것은http://localhost:3000/index의index부분이다.render 방법에서 확장자 이외의basename을 지정합니다.실행
node app.js를 입력하고 서버를 실행하십시오.적절한 브라우저에서 액세스
http://localhost:3000/index일본어 정보가 표시되는지 확인합니다.
이어서 액세스
http://localhost:3000/index?locale=en확인 정보는 영어입니다.
koa-i18n의 다국적 언어 견본에 대해 설명하였다.문장의 오류와 "이렇게 해야 한다!"만약 이런 의견이 있으면 제출해 주십시오.
Reference
이 문제에 관하여(koa의 i18n 대응), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kazunori-Kimura/items/e8a96fcee4d0baef4707텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)