產品名稱可以針對不同區域進行當地語系化。 您可以使用 Dynamics 365 Sales,為特定產品屬性提供當地語系化標籤,讓人們可以看到符合其語言喜好設定的當地語系化名稱。 本文介紹開發人員如何與此功能互動。 如需在應用程式中使用此功能的逐步指示,請參閱將產品名稱和屬性翻譯成多種語言的舊版文件。
支援當地語系化屬性 (Property) 值的屬性 (Attribute)
下列清單包含支援可當地語系化值的屬性:
Product.NameDynamicProperty.NameDynamicPropertyOptionSetItem.DynamicPropertyOptionNameDynamicPropertyOptionSetItem.DynamicPropertyOptionDescriptionStringAttributeMetadata 和 MemoAttributeMetadata 類別具有唯讀
IsLocalizable布林屬性,此屬性對上表中四個屬性以外的所有屬性都是false。
擷取當地語系化屬性值
您不需要以不同的方式執行任何動作,即可擷取符合使用者語言喜好設定的當地語系化值。 如果使用者的慣用語言存在當地語系化值,則會傳回該值。 如果當地語系化值不存在,則會傳回組織基礎語言的值。 此行為保留回溯相容性;目前使用產品名稱屬性的任何程式碼都會繼續使用任何當地語系化值。 如果屬性值的當地語系化不完整,使用者可能會看到混合語言值。
若要擷取特定可當地語系化屬性的所有當地語系化標籤,請使用 RetrieveLocLabelsRequest 訊息。
使用當地語系化值進行查詢
使用當地語系化屬性的值查詢具有條件的資料表時,系統會先使用慣用語言來評估條件。 如果屬性沒有當地語系化值,則查詢還原為基礎語言。 當地語系化屬性值的查詢結果會以您的慣用語言 (如果存在) 傳回。 否則,結果以基礎語言傳回。
建立或更新包含可當地語系化屬性的記錄
包含當地語系化屬性的記錄是唯讀的,除非慣用語言是組織的基礎語言。 您只能使用組織的基礎語言建立包含當地語系化屬性值的記錄。 如果您更新可當地語系化屬性的基礎語言值,則不會變更該屬性的任何當地語系化值,除非您清除基礎語言的值。 如果將基礎語言值設定為 null 或空字串,也會清除該屬性的所有當地語系化值。
若要新增或更新任何特定當地語系化屬性的當地語系化標籤,請使用 SetLocLabelsRequest 訊息,或匯入翻譯的值。 對可當地語系化屬性的任何變更都會顯示在記錄的稽核歷程記錄中。 當地語系化值的語言代碼識別碼 (LCID) 會出現在稽核歷程記錄中。
翻譯可當地語系化的屬性
以程式設計方式當地語系化可當地語系化屬性的程序類似於用來翻譯當地語系化解決方案標籤的程序。 [!INCLUDE[proc_more_information]:將自訂的資料表和資料行文字翻譯成其他語言
與翻譯中繼資料值不同,匯出和匯入當地語系化屬性值的使用者不需要具有系統管理員資訊安全角色。 銷售經理資訊安全角色具有翻譯可當地語系化屬性所需的權限。 翻譯當地語系化屬性值的人員只能匯出他們有權檢視和更新那些他們有權更新的記錄。
若要以程式設計方式翻譯可當地語系化的屬性,您必須先使用 ExportFieldTranslationRequest 匯出目前的當地語系化標籤定義。
ExportFieldTranslationResponse。
ExportTranslationFile 屬性包含壓縮 crmFieldTranslations.zip 檔案的 byte[],該壓縮檔包含可使用 Office Excel 開啟的 [Content_types].xml 檔案和 crmFieldTranslations.xml 檔案。
當地語系化標籤工作表包含一欄,其中包含組織每個已佈建語言的 LCID 值。 包含基礎語言值的欄會有資料填入,而且每個已佈建語言的欄都包含任何先前當地語系化的值。 翻譯人員可以編輯此檔案,為可當地語系化的屬性提供當地語系化標籤。
小提示
如果只是要對基礎語言名稱執行大量更新,則也可以編輯基礎語言值。
編輯 crmFieldTranslations.xml 檔案以提供當地語系化標籤之後,將其與 [Content_types].xml 檔案一起壓縮,並將該檔案設定為 ImportFieldTranslationRequest 的 TranslationFile 屬性。
修改匯出已翻譯屬性值時包含的值
匯出翻譯中包含的值是由與支援可當地語系化屬性值之資料表相關聯的可自訂檢視表所控制。 只有產品資料表會在自訂使用者介面中顯示此檢視表。 這些檢視表名為匯出欄位翻譯。 下表提供這些檢視表的 SavedQueryId。
| Table | SavedQueryId |
預設 FetchXml |
|---|---|---|
| product | 9cfe2a9f-13c4-e311-8f2e-00155d9d2505 |
<擷取版本=“1.0” output-format="xml-platform" mapping="logical" distinct="false"> <entity name="product"> <attribute name="name" /> </entity> </fetch> |
| dynamicproperty | 4833cf48-1ac4-e311-8f2e-00155d9d2505 |
<擷取版本=“1.0” output-format="xml-platform" mapping="logical"> <實體名稱="dynamicproperty"> <attribute name="name" /> </entity> </fetch> |
| dynamicpropertyoptionsetitem | d64cce30-1fc4-e311-8f2e-00155d9d2505 |
<擷取版本=“1.0” output-format="xml-platform" mapping="logical"> <實體名稱=“dynamicpropertyoptionsetitem”> <屬性名稱=“dynamicpropertyoptionname” /> <屬性名稱=“dynamicPropertyOptionDescription” /> </entity> </fetch> |
您可以編輯這些檢視表的 FetchXml 屬性,以篩除您不希望包含的任何屬性 (Attribute) 屬性 (Property) 值。 例如,您可能想要排除封存的記錄,或僅包含特定日期之後更新的記錄。
監視欄位翻譯匯入工作的進度
系統作業資料表包含下列檢視表,以監視欄位翻譯匯入工作的進度:
所有欄位翻譯匯入工作
完成的欄位翻譯匯入工作
進行中的欄位翻譯匯入工作
我的欄位翻譯匯入工作
未啟動的欄位翻譯匯入工作
下列情況會導致匯入翻譯工作時發生錯誤:
| Message | Description |
|---|---|
| 警告:您對匯入檔案中所指定工作表 {0} 的一列或多列沒有寫入權限,行 {1}。 | 執行匯入的人員可能沒有匯入檔案中所包含資料列的寫入權限。 其他列的處理會繼續進行。 |
| 警告:工作表 {0} 中的基礎語言翻譯字串,列 {1},欄 {2} 為 null。 | 無法透過匯入翻譯來清除基礎語言值。 其他列的處理會繼續進行 |
| 警告:列 {0} 中的儲存格數目不符合工作表 {1} 列 1 中的儲存格數目。 | 試算表中所有的列都必須有相同數量的儲存格。 其他列的處理會繼續進行。 |
| 警告:在工作表 {0},行 {1},A 欄中找到無效的表格名稱。 | 系統中沒有使用工作表中名稱的有效表格。 其他列的處理會繼續進行。 |
| 警告:在工作表 {0},行 {1},C 欄中找到無效的物件欄名稱。 | 系統中沒有使用工作表中名稱的有效可當地語系化屬性。 其他列的處理會繼續進行。 |
| 警告:在工作表 {0},行 {1},B 欄中找到無效的物件識別碼。 | 組織中沒有此列中項目的相符記錄。 其他列的處理會繼續進行。 |
| 錯誤:在工作表 {0} 中找不到任何列。 | 要匯入的工作表是空的。 |
| 錯誤:工作表 {0} 中存在的組織識別碼與目前的組織識別碼不符。 | 您只能將翻譯匯入至與匯出時相同的來源組織。 |
| 警告:在工作表 {0},欄 {1} 中找到無效的語言代碼。 | 詳細資料:{2} | 欄中的 LCID 不是有效的整數,或未安裝語言的語言套件。 忽略欄中的翻譯。 有效的語言代碼識別碼(LCID)值可以在 語言代碼識別碼圖表中找到。 |
| 錯誤:在工作表 {0},欄 {1} 中找到重複的語言代碼。 | 每個欄都必須有不同的語言代碼。 |
| 錯誤:翻譯檔案無效。 壓縮檔案的根目錄必須包含下列檔案:CrmFieldTranslations.xml、[Content_Types].xml | 要匯入的壓縮 (zip) 檔案必須僅包含錯誤中描述的檔案。 |
| 錯誤:翻譯檔案無效,或不符合所需的結構描述。 | 壓縮 (zip) 檔案中包含的 CrmFieldTranslations.xml 檔案必須是從系統匯出的檔案,且僅經過編輯以提供當地語系化值。 其他變更可能會使檔案失效。 |
解除安裝語言
為已解除安裝語言提供的任何當地語系化標籤都會保留在系統中,讓這些標籤在重新安裝語言時仍然可用。