i18n extract
v0.6.7
通过静态分析来管理本地化。
npm install --save-dev i18n-extract该模块对密钥用法进行静态分析代码,例如i18n.t('some.key') ,以:
例如,此模块与以下结合效果很好:
marker: 'polyglot.t', )marker: 'i18n', ) i18n ( 'key.static' ) i18n ( 'key.' + 'concat' ) i18n ( `key.template` ) i18n ( `key. ${ dynamic } ` ) /* i18n-extract key.comment */ 解析code以提取I18N( key )的调用参数。
code应该是字符串。 import { extractFromCode } from 'i18n-extract' ;
const keys = extractFromCode ( "const followMe = i18n('b2b.follow');" , {
marker : 'i18n' ,
} ) ;
// keys = ['b2b.follow']解析files以提取I18N( key )的调用参数。
files可以是字符串数组或字符串。您也可以使用地球。 import { extractFromFiles } from 'i18n-extract' ;
const keys = extractFromFiles ( [
'*.jsx' ,
'*.js' ,
] , {
marker : 'i18n' ,
} ) ;marker :国际化字符串标记功能的名称。默认为i18n 。keyLoc :一个整数,指示键在参数中的位置。默认为0 。负数,例如-1 ,表示相对于参数列表末尾的位置。parser :枚举表明要使用的解析器可以是typescript或flow 。默认为flow 。babelOptions :Babel配置对象,允许在扫描I18N键之前应用自定义转换或插件。使用所有巴比伦插件启用了默认为配置。报告缺少的键。这些密钥可能应该翻译。
locale应该是包含翻译的对象。keysUsed应该是一个数组。包含源代码中使用的密钥。可以用extractFromFiles我们的extractFromCode检索。 import { findMissing } from 'i18n-extract' ;
const missing = findMissing ( {
key1 : 'key 1' ,
} , [ 'key1' , 'key2' ] ) ;
/**
* missing = [{
* type: 'MISSING',
* key: 'key2',
* }];
*/ 报告未使用的密钥。这些密钥可能应被删除。
locale应该是包含翻译的对象。keysUsed应该是一个数组。包含源代码中使用的密钥。可以用extractFromFiles我们的extractFromCode检索。 import { findUnused } from 'i18n-extract' ;
const unused = findUnused ( {
key1 : 'key 1' ,
key2 : 'key 2' ,
} , [ 'key1' ] ) ;
/**
* unused = [{
* type: 'UNUSED',
* key: 'key2',
* }];
*/报告重复的密钥。这些钥匙可能应该相互合作。默认threshold是1,它将报告任何重复的翻译。
locale应该是包含翻译的对象。keysUsed应该是一个数组。包含源代码中使用的密钥。可以用extractFromFiles我们的extractFromCode检索。options应为对象。您可以提供一个threshold属性,以更改重复值的数量,然后再添加到报告中。 import { findDuplicated } from 'i18n-extract' ;
const duplicated = findDuplicated ( {
key1 : 'Key 1' ,
key2 : 'Key 2' ,
key3 : 'Key 2' ,
} ) ;
/**
* unused = [{
* type: 'DUPLICATED',
* keys: [
* 'key2',
* 'key3',
* ],
* value: 'Key 2',
* }];
*/报告任何动态密钥。使用动态密钥可以说更危险。他们可能会破裂。
locale应该是包含翻译的对象。keysUsed应该是一个数组。包含源代码中使用的密钥。可以用extractFromFiles我们的extractFromCode检索。 import { forbidDynamic } from 'i18n-extract' ;
const forbidDynamic = forbidDynamic ( { } , [ 'key.*' ] ) ;
/**
* forbidDynamic = [{
* type: 'FORBID_DYNAMIC',
* key: 'key.*',
* }];
*/弄平物体。
object应该是对象。 import { flatten } from 'i18n-extract' ;
const flattened = flatten ( {
key2 : 'Key 2' ,
key4 : {
key41 : 'Key 4.1' ,
key42 : {
key421 : 'Key 4.2.1' ,
} ,
} ,
} ) ;
/**
* flattened = {
* key2: 'Key 2',
* 'key4.key41': 'Key 4.1',
* 'key4.key42.key421': 'Key 4.2.1',
* };
*/输出一个新的PO文件,仅包含messages中的消息。如果在poInput中已经存在消息,我们将保留翻译。如果不存在消息,我们添加了一个新的空翻译。
messages应该是一个数组。poInput应该是字符串。poOutput应该是字符串。 import { mergeMessagesWithPO } from 'i18n-extract' ;
const messages = [ 'Message 1' , 'Message 2' ] ;
mergeMessagesWithPO ( messages , 'messages.po' , 'messages.output.po' ) ;
/**
* Will output :
* > messages.output.po has 812 messages.
* > We have added 7 messages.
* > We have removed 3 messages.
*/ 麻省理工学院