templates/partials/lang.html (2865B)
1 {#- 언어 전환. 크롬이 아니라 본문에 붙는다.
2
3 마스트헤드에 있을 때는 "이 사이트를 한국어로 본다"는 전역 설정처럼 보였는데,
4 실제로 하는 일은 **지금 이 문서의 다른 판으로 간다**는 것이다. 자리를 문서
5 안으로 옮기면 그 뜻이 자리로 드러나고, 크롬에는 세 갈래와 검색만 남는다.
6
7 라벨이 EN / KO 인 이유: 이 사이트의 크롬은 두 언어에서 영어다. 그리고 이건 두
8 낱말이 나란히 서서 서로를 설명하는 자리다 — "한국어" 옆의 "EN" 은 무엇을
9 고르는 것인지 말해 주지만, "English" 옆의 "한국어" 는 한쪽만 읽는 사람에게
10 한쪽만 읽힌다. 두 글자짜리 코드는 어느 쪽에서도 같게 읽힌다.
11
12 지금 보고 있는 언어가 **더 밝다**. 참조 사이트는 반대로 두었는데(현재가 제일
13 어둡다) 그러면 "어디에 있는지"를 알려고 두 회색을 견줘 봐야 한다. 이 집의
14 규칙은 이미 정해져 있다 — 내비의 현재 항목이 눈금과 함께 밝아진다.
15
16 **문서에만** 붙는다. 글 한 편, 프로젝트 한 장, 소개. 홈과 목록에는 안 붙는데,
17 거기서 언어를 바꾸는 것은 문서의 다른 판으로 가는 일이 아니라 사이트 설정을
18 만지는 일처럼 읽히기 때문이다 — 마스트헤드에서 빼낸 이유가 바로 그거였다.
19
20 번역이 없는 페이지에서는 통째로 안 나온다. page.translations 가 비면 아무것도
21 그리지 않는다. 없는 판으로 가는 링크나 회색 처리된 라벨을 남기지 않는 이유는,
22 둘 다 "있는데 지금 못 쓴다"는 뜻이 되기 때문이다. 없는 것은 없다. #}
23
24 {% macro lang_cur(page) -%}
25 <span class="lang-cur" aria-current="true">{{ page.language }}</span>
26 {%- endmacro %}
27
28 {#- lang 은 이 요소의 글자가 무슨 말인지를 말하는 속성이다. 여기 글자는 라틴 두
29 자라 lang="ko" 를 붙이면 스크린리더가 "ko" 를 한국어 음가로 읽는다.
30 목적지의 언어는 hreflang 이 이미 지고 있다. #}
31 {% macro lang_alt(l) -%}
32 <a href="{{ l.url }}" hreflang="{{ l.code }}" title="{{ l.name }}">{{ l.code }}</a>
33 {%- endmacro %}
34
35 {#- 순서는 언제나 EN, KO 다. 현재 언어를 앞에 세우면 언어를 바꿀 때마다 두 낱말이
36 자리를 맞바꿔서, 방금 누른 것이 커서 밑에서 도망간다. #}
37 {% macro lang_switch(page) -%}
38 {%- if page.translations %}
39 <nav class="langs" aria-label="{{ t("language") }}">
40 {%- if page.language == "en" %}
41 {{ lang_cur(page) }}
42 {%- for l in page.translations %}{{ lang_alt(l) }}{% endfor %}
43 {%- else %}
44 {%- for l in page.translations %}{{ lang_alt(l) }}{% endfor %}
45 {{ lang_cur(page) }}
46 {%- endif %}
47 </nav>
48 {%- endif %}
49 {%- endmacro %}