message 객체를 json 형태의 메세지 프로퍼티로 변경해보자!(feat.react-intl)
BKJang opened this issue · comments
Code
function generateTranslations(messageDescriptors) {
return Object.values(messageDescriptors).reduce((acc, value) => {
if (
typeof value.defaultMessage === "string" ||
typeof value.defaultMessage === "number"
) {
return {
...acc,
[value.id]: value.defaultMessage
};
}
if (typeof value !== "object" || Object.keys(value).length <= 0) {
throw new TypeError(value);
}
return {
...acc,
...generateTranslations(value)
};
}, {});
}
const scope = "Messages";
const messageDescriptors = {
listTitle: {
id: `${scope}.listTitle`,
defaultMessage: "목록"
},
detailTitle: {
id: `${scope}.detailTitle`,
defaultMessage: "상세"
},
body: {
createTabs: [
{
id: `${scope}.body.createTabs.0`,
defaultMessage: "탭1"
},
{
id: `${scope}.body.createTabs.1`,
defaultMessage: "탭2"
},
],
},
};
const ko = generateTranslations(messageDescriptors);
const result = JSON.stringify(ko, null);
Result
{
"Messages.listTitle":"목록",
"Messages.detailTitle":"상세",
"Messages.body.createTabs.0":"탭1",
"Messages.body.createTabs.1":"탭2"
}