WP/WC項目中最髒的活之一:請把“產品”兩個字改一下,用戶訂閱服務時顯示“已購服務”,其它時候顯示“已購產品”。

“產品”二字是WC提供的標準翻譯,原文“Product(s)”,廣義泛指客戶能網站能買到的任何東西。

WC的上下文裡,當你添加一個Product,它可以是Simple/Variable/Group/External,不特指實物;它可以是Virtual的,即“虛擬”產品,無實物交接的東西,不涉及物流,比如任何可下載的東西都是“虛擬”產品。

“虛擬”產品是不是產品?當然是。

但如果你賣的是付費會員,付費訂閱這樣的虛的東西,把它們稱作“產品”似乎是有點牽強,嗯~ …. 嗯~ 但我好像也在哪裡、曾幾何時聽到過有人說“會員產品”、“付費訂閱類產品”、“知識付費產品” 啊~

莫非“白馬非馬”?

問題是,當你的網店要售賣各種東西,實物的、虛擬的(軟件、資格、權限),現在你要在發給顧客的對賬單上,用一個詞盡可能上下文貼切地描述它們是什麼的時候,用“產品”,你覺得從哲學上能不能成立呢?嗯嗯~~

這個哲學問題的哲學回答是:She won't give a fuck!它看到的對賬單是兩個數字,一個她付了多少錢,一個她省了多少錢,以我和夫人相處的有限經驗來回憶,生活比哲學要大得多。

比哲學有用也許還有代碼,在和客戶相處這件事上,代碼也比情商管用,尤其是我這種天生嘴笨的。 “產品”二字,是WC系統提供的標準翻譯,它在某個.mo文件裡,你能用Loco Translate插件輕易定位到它,你會發現它不止一處,作為有尊嚴的程序員,你應該不至於墮落到用Javascript代碼作post render字符替換,幹這種事的人好比猥褻了兒童的罪犯被關進監獄,晚上要還的。任何做過WP/WC PHP開發的人都不會太難找到類似下面偽碼的解決方法:

add_action/filter( {contextual hook}, function (...) { // -1 add_filter( {gettext hook}, function (...) use {context) { // -2 return translation based on context // - 3 } ... ); } );

在3這裡你基本上可以為所欲為,2是WP系統給你截胡字段翻譯的鉤子,而1是你選定需要截胡字段翻譯的路口或者小樹林。

下面的這個應用示例獻給語文好的客戶:

add_action( 'woocommerce_email_order_details', function ($order, $sent_to_admin, $plain_text, $email) { add_filter( 'gettext_woocommerce', function ($translation, $text, $domain) use ($order) { //優美的註釋:如果你看不到我這樣寫的問題,請自罰3杯foreach ($order->get_items() as $items) { if ($item->get_product_id() === SUBSCRIPTION_PRODUCT_ID) { return '已購服務'; } } return '已購產品'; }, 10, 3), 10, 4 );

感謝Closure,有了你,客戶永遠是對的,幫我省下不少情商。

發現錯別字麻煩選中按Ctrl+Enter

類似帖子

0 Comments
內聯反饋
查看所有評論