Plot cerita ini berkembang ketika saya memiliki kesempatan untuk mengimplementasikan salah satu tugas produk perusahaan kami Jivo untuk platform iOS. Tapi saya akan mulai dengan pengantar singkat.
Pelokalan adalah salah satu topik yang sering dibahas dalam pengembangan seluler.
Terutama pada topik ini yang berkaitan dengan platform iOS, aspek-aspek berikut terpengaruh:
layanan untuk menyederhanakan organisasi dan sinkronisasi terjemahan;
praktik terbaik untuk menerjemahkan file xib;
add-on waktu kompilasi tambahan untuk memverifikasi terjemahan.
Namun, cerita kami bukan tentang itu. Untuk menyinkronkan terjemahan, kami telah berhasil mengintegrasikan layanan pihak ketiga di perusahaan kami, daripada file xib, kami lebih memilih kode, dan kami belum menggunakan add-on waktu kompilasi (namun, ada pemikiran tentang penerapannya).
Kisah kami adalah tentang bagaimana suatu hari kami memiliki kesempatan untuk menghadapi tugas di mana secara praktis perlu menyulap terjemahan dari frasa yang sama dalam arti, yang sedikit dimodifikasi tergantung pada konteksnya.
Bagaimana semuanya dimulai
Produk kami sekarang memiliki fungsi untuk mengatur pengingat. Pengingat dapat berguna jika operator ingin kembali ke klien nanti. Misalnya, untuk memperjelas apakah pertanyaan tambahan telah muncul beberapa waktu setelah konsultasi, yang membantu meningkatkan loyalitas. Pengingat untuk waktu tertentu dapat disetel untuk Anda sendiri atau untuk operator lain, dan Anda secara opsional dapat menentukan komentar teks (deskripsi), jika perlu.
Tentu saja, fakta pengaturan pengingat seperti itu diduplikasi dalam pita dialog oleh pesan sistem. Dan justru di sinilah kesulitan ditemukan: tergantung pada konfigurasi pengingat, label informasi dapat terlihat sangat berbeda. Misalnya (dari antarmuka versi bahasa Inggris):
◼︎ You created the reminder for agent Alex on 08/29/20 at 4:30 PM
◼︎ Agent Nick created the reminder "Ask about any issue happened since our call" on 10/03/20 at 11:30 AM
◼︎ Agent Alex completed the reminder on 12/05/20 at 5:00 PM
, :
◼︎ –
◼︎
◼︎
◼︎ – , ,
, 32 . , , , . , .
, « » , :
// either...
let caption = format(
"REMINDER_CREATE_SELF_FOR_SELF", // !!!
reminder.time)
// or...
let caption = format(
"REMINDER_CREATE_ANOTHER_WITH_COMMENT_FOR_SELF", // !!!
reminder.author.name,
reminder.comment,
reminder.time)
// etc.... , , , . , , . , :
if reminder.author.isMe {
slices += [format("REMINDER_AUTHOR_SELF")]
}
else {
slices += [format("REMINDER_AUTHOR_ANOTHER", reminder.author.name)]
}
if let comment = reminder.comment {
slices += [format("REMINDER_COMMENT", comment)]
}
if reminder.target.isMe {
slices += [format("REMINDER_FOR_SELF")]
}
else {
slices += [format("REMINDER_FOR_ANOTHER", reminder.target.name)]
}
slices += [format("REMINDER_TIME", reminder.time)]
let caption = slices.joined(), - . .
. bb- , . , , , . « ».
( ). , , .
– , , $creatorName, , .
– , , $[Agent $creatorName ## You]; - Agent $creatorName You, ##; , ; . , , ( ) ; .
– , , , $[Agent $creatorName ## :another: Another agent ## You]; - Agent $creatorName, Another agent You; Another agent another, , , ( ).
. , :
◼︎ Agent Nick created the reminder on 10/03/20 at 11:30 AM
◼︎ You created the reminder "Ask about any issue happened since our call" on 10/03/20 at 11:30 AM
◼︎ Agent Nick created the reminder "Ask about any issue happened since our call" on 10/03/20 at 11:30 AM
◼︎ You created the reminder for Alex on 10/03/20 at 11:30 AM
:
$[Agent $creatorName ## You] created the reminder $["$comment"] $[for $targetName] on $date at $time, . , , . , ( Swift, C++, ).
:
let parser = PureParser()
let formula = "$[Agent $creatorName ## You] created the reminder $[\"$comment\"] $[for $targetName] on $date at $time"
parser.assign(variable: "creatorName", value: "Nick")
parser.assign(variable: "date", value: "10/03/20")
parser.assign(variable: "time", value: "11:30 AM")
let result = parser.execute(formula, collapseSpaces: true, resetOnFinish: true)
print(result)
// Agent Nick created the reminder on 10/03/20 at 11:30 AM:
let parser = PureParser()
let formula = "$[Agent $creatorName ## You] created the reminder $[\"$comment\"] $[for $targetName] on $date at $time"
parser.assign(variable: "comment", value: "Ask about any issue happened since our call")
parser.assign(variable: "date", value: "10/03/20")
parser.assign(variable: "time", value: "11:30 AM")
let result = parser.execute(formula, collapseSpaces: true, resetOnFinish: true)
print(result)
// You created the reminder "Ask about any issue happened since our call" on 10/03/20 at 11:30 AM:
let parser = PureParser()
let formula = "$[Agent $creatorName ## You] created the reminder $[\"$comment\"] $[for $targetName] on $date at $time"
parser.assign(variable: "creatorName", value: "Nick")
parser.assign(variable: "comment", value: "Ask about any issue happened since our call")
parser.assign(variable: "date", value: "10/03/20")parser.assign(variable: "time", value: "11:30 AM")
let result = parser.execute(formula, collapseSpaces: true, resetOnFinish: true)
print(result)
// Agent Nick created the reminder "Ask about any issue happened since our call" on 10/03/20 at 11:30 AM:
let parser = PureParser()
let formula = "$[Agent $creatorName ## You] created the reminder $[\"$comment\"] $[for $targetName] on $date at $time"
parser.assign(variable: "targetName", value: "Alex")
parser.assign(variable: "date", value: "10/03/20")
parser.assign(variable: "time", value: "11:30 AM")
let result = parser.execute(formula, collapseSpaces: true, resetOnFinish: true)
print(result)
// You created the reminder for Alex on 10/03/20 at 11:30 AM: ?
let parser = PureParser()
let formula = "$[Agent $creatorName ## :another: Another agent ## You] created the reminder $[\"$comment\"] $[for $targetName] on $date at $time"
parser.activate(alias: "another", true)
parser.assign(variable: "date", value: "10/03/20")
parser.assign(variable: "time", value: "11:30 AM")
let result = parser.execute(formula, collapseSpaces: true, resetOnFinish: true)
print(result)
// Another agent created the reminder on 10/03/20 at 11:30 AM( , , ) , . .

Pustaka ditulis dalam C ++ , dan ada juga pembungkus dalam C dan Swift .
Untuk Swift menyediakan konektivitas melalui CocoaPods dan Swift the Package Manager .