國際語言環境指南

在資源檔案中建立 Render 表格

Rendition 以及 render 表格應該在資源檔案中,針對適當國際化的應用程式進行指定。當您將 render 表格指定於一個檔案時,程式的二進位碼就可因應指定語言環境的特殊需求而獨立產生,且可輕易地依照該語言環境需求完成自訂。

Render 表格會以下列語法指定於資源檔案中 :resource_spec:[tag[,tag]*]

其中 tag 是某些適合 XmNtag rendition 資源的字串。

這一行將建立初始 render 表格,其將包含一個或更多個指定的 rendition。這些 rendition 將附加指定標記:

resource_spec[*|.] rendition[*|.]resource_name:value

下列範例將說明與 XmRendition (可以使用資源檔案設定) 相關聯的 CTL 資源。fontType 必須設定為 FONT_IS_XOC,才能使版面配置物件生效。layoutModifier (使用 @ls 指定) 已經由 rendition 物件傳遞至版面配置物件。

如需可以使用 layoutModifier 在版面配置上設定之資源的清單,請參閱「CAE Specification: Portable Layout Services: Context-dependent and Directional Text」,The Open Group:Feb 1997;ISBN 1-85912-142-X;document number C616。


範例 6–3 在應用程式中建立 Render 表格

在建立 render 表格之前,應用程式必須先建立至少一個該表格中的一個 rendition。XmRenderTableAddRenditions() 函式一如其名所示,也是使用新的 rendition 來強化 render 表格。若要建立新的 render 表格,請呼叫 XmRenderTableAdd s() 函式,並以 NULL 引數來替換現有的 render 表格。

下列程式碼將使用 rendition,將 XmNfontType 設定為 XmFONT_IS_XOC,來建立 render 表格。

int n;
Arg args[10];
Widget w;
XmString labelString;
XmRendition rendition;
XmStringTag renditionTag;
XmRenderTable renderTable;
      /* alef lam baa noon taa - iso8859-6 */
labelString = XmStringGenerate("\307\344\310\346\312\", NULL
			                           XmCHARSET_TEXT, "ArabicShaped");
w = XtVaCreateManagedWidget("a label", xmLabelWidgetClass, parent,
                            XmNlabelString, labelString,
		                         XmNlabelType, XmSTRING,
                            NULL);
n = 0;
XtSetArg(args[n], XmNfontName, "-*-*-medium-r-normal-*-24-*-*-*-*-*-*-*");
     n++;
XtSetArg(args[n], XmNfontType, XmFONT_IS_XOC); n++;
XtSetArg(args[n], XmNlayoutAttrObject, "ar"); n++;
XtSetArg(args[n], XmNlayoutModifier, 
          "@ls numerals=nominal:contextual, shapecharset=iso8859-6"); n++;
renditionTag = (XmStringTag) "ArabicShaped";
rendition = XmRenditionCreate(w, renditionTag, args, n);
renderTable = 
    XmRenderTableAddRenditions(NULL, &rendition, 1, XmREPLACE);
XtVaSetValues(w, XmNrenderTable, renderTable, NULL);