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 : ชื่อของฟังก์ชั่นเครื่องหมายสตริงนานาชาติ ค่าเริ่มต้นเป็น i18nkeyLoc : จำนวนเต็มที่ระบุตำแหน่งของคีย์ในอาร์กิวเมนต์ ค่าเริ่มต้นเป็น 0 ตัวเลขลบเช่น -1 ระบุตำแหน่งที่สัมพันธ์กับจุดสิ้นสุดของรายการอาร์กิวเมนต์parser : enum ระบุตัวแยกวิเคราะห์ที่จะใช้สามารถเป็น typescript หรือ flow ค่าเริ่มต้นเป็น flowbabelOptions : วัตถุการกำหนดค่า Babel เพื่ออนุญาตให้ใช้การแปลงหรือปลั๊กอินที่กำหนดเองก่อนที่จะสแกนสำหรับคีย์ I18N ค่าเริ่มต้นเป็น config กับปลั๊กอิน Babylon ทั้งหมดที่เปิดใช้งานรายงานคีย์ที่หายไป ควรแปลคีย์เหล่านั้น
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.
*/ มิกซ์