我爲我的數據庫表創建了DAO。在SAP ABAP中,您可以添加包含語言相關文本的其他文本表(語言代碼是該鍵的一部分)。 目前,我在程序開始時(依賴注入)創建了DAO實例,並向它們傳遞了一種語言鍵,它將DAO有效地綁定到特定的語言,讓DAO僅從該特定的語言中讀取文本。語言依賴DAO(i18n)
但是在程序的後期,我需要從另一種語言獲取文本。我該如何處理這個問題?
明確將語言鍵包含在DAO的crud和find-by方法中?這將要求DAO的任何客戶也將其方法暴露給語言鍵,並將其正確地傳遞給DAO,該DAO聞起來有味道。例如
method read(id, languageCode) returns <thing>
。另外我想讓域對象不知道DAO /基礎設施廢話。給DAO本身一個語言感知接口,它允許我創建另一個綁定到不同語言(工廠)的DAO實例。這就要求我明確地訪問DAO,否則這些DAO是隱藏的,也會聞到。例如
method createWithLang(langCode) returns <DAO>
使域對象具有語言意識,這意味着語言相關的方法顯式地公開語言代碼。但是,域對象已經需要知道所有語言的所有文本才能返回正確的文本或他們需要直接訪問某些DAO以重新加載正確的文本。然後,這樣做是一個額外的挑戰(關於ABAP OO)。
每個建議不勝感激
是的,我最需要的只是會話語言。但是在某些應用環境中,我需要使用另一種語言,這是由正在處理的業務合作伙伴確定的。然後,所有的DAO都綁定到我的會話語言上已經太遲了。我不想改變這個全球會話實例的語言,這將會與全局玩家一起玩,最終導致你的死亡。有什麼建議? – hotzen
最簡單的事情聽起來就像創建一個新的會話,專門處理我認爲是BP相關的輸出。 – tomdemuyt