Adding user defined rule to existing language

2019-09-03 10:13发布

问题:

can anybody explain what the correct way is to load existing rules in a language and add some new to them. I do the following but the rule is not set.

void CompareTest()
{
  UErrorCode status = U_ZERO_ERROR;
  UChar ruleset[500]; *ruleset = 0;
  int32_t rlen = 0;

  UCollator *coll = ucol_open("de_DE", &status);


  static const UChar rules[] = L"&\\u0000 = '' = '-'";
  int32_t len=(int32_t)u_strlen(rules);

  const UChar *defRules = ucol_getRules(coll, &rlen);
  if(rlen > 0)
  {
    u_strcpy(ruleset, defRules); 
  }
  u_strcat(ruleset, rules);

  status = U_ZERO_ERROR;
  UCollator *collRule = ucol_openRules(ruleset, u_strlen(ruleset), 
                                       UCOL_OFF,     
                                       UCOL_DEFAULT_STRENGTH,NULL, &status);

回答1:

I partially answered in my answer to your other question - I don't see anything wrong with how you are using the API itself, however you cannot tailor "''". Use the solution given in the other question. Or, maybe you can explain a bit more about what you are trying to do.