UNPKG

next-intl

Version:

Internationalization (i18n) for Next.js

2 lines (1 loc) 1.14 kB
import e from"po-parser";import{setNestedProperty as t,getSortedMessages as s}from"../../utils.js";import{defineCodec as r}from"../ExtractorCodec.js";var n=r((()=>{const r={"Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"8bit","X-Generator":"next-intl","X-Crowdin-SourceKey":"msgstr"},n=".",o=new Map;return{decode(t,s){const r=e.parse(t);r.meta&&o.set(s.locale,r.meta);return(r.messages||[]).map((e=>{const{extractedComments:t,msgctxt:s,msgid:r,msgstr:o,references:a,...c}=e;return{...c,id:s?[s,r].join(n):r,message:o,description:t??[],references:a??[]}}))},encode(t,a){const c=s(t).map((e=>{const{description:t=[],id:s,message:r,references:o,...a}=e,c=s.lastIndexOf(n),m=s.includes(n),i=m?s.slice(c+1):s,d=[...new Set(o.map((e=>e.path)))].map((e=>({path:e})));return{msgid:i,msgstr:r,...t.length>0&&{extractedComments:t},...m&&{msgctxt:s.slice(0,c)},...d.length>0&&{references:d},...a}}));return e.serialize({meta:{Language:a.locale,...r,...o.get(a.locale)},messages:c})},toJSONString(e,s){const r=this.decode(e,s),n={};for(const e of r)t(n,e.id,e.message);return JSON.stringify(n)}}}));export{n as default};