- result = BreakIterator::buildInstance(loc, lbType, kind, status);
+ result = BreakIterator::buildInstance(loc, lbType, status);
+ if (U_SUCCESS(status) && result != NULL) {
+ char lwKeyValue[kKeyValueLenMax] = {0};
+ UErrorCode kvStatus = U_ZERO_ERROR;
+ int32_t kLen = loc.getKeywordValue("lw", lwKeyValue, kKeyValueLenMax, kvStatus);
+ ULineWordOptions lineWordOpts = UBRK_LINEWORD_NORMAL;
+ if (U_SUCCESS(kvStatus) && kLen > 0) {
+ if (uprv_strcmp(lwKeyValue,"keepall")==0 || uprv_strcmp(lwKeyValue,"keep-all")==0) {
+ lineWordOpts = UBRK_LINEWORD_KEEP_ALL;
+ } else if (uprv_strcmp(lwKeyValue,"keep-hangul")==0) {
+ lineWordOpts = UBRK_LINEWORD_KEEP_HANGUL;
+ }
+ }
+ result->setLineWordOpts(lineWordOpts);
+ }