有些翻譯會跟程式行為有關,比如說在 內容管理 > 內容 這裡面,你可以做內容節點的篩選,篩選旁邊的按鈕有:Filter, Refine, Undo, Reset
底下是程式碼(出自 modules/node/node.admin.inc)
/**
* Process result from node administration filter form.
*/
function node_filter_form_submit($form, &$form_state) {
$filters = node_filters();
switch ($form_state['values']['op']) {
case t('Filter'):
case t('Refine'):
if (isset($form_state['values']['filter'])) {
$filter = $form_state['values']['filter'];
// Flatten the options array to accommodate hierarchical/nested options.
$flat_options = form_options_flatten($filters[$filter]['options']);
if (isset($flat_options[$form_state['values'][$filter]])) {
$_SESSION['node_overview_filter'][] = array($filter, $form_state['values'][$filter]);
}
}
break;
case t('Undo'):
array_pop($_SESSION['node_overview_filter']);
break;
case t('Reset'):
$_SESSION['node_overview_filter'] = array();
break;
}
}
由這段程式碼可知,翻譯會影響程式的判斷行為。
目前的翻譯如下:
Filter => 篩選
Refine => 重設
Undo => 復原
Reset => 重設
很顯然 Refine 翻成「重設」是不對的,我已經重新提交新的翻譯為「篩選」
不過 Refine 這個詞被許多模組使用,或許有更恰當的翻譯方式,不管翻成什麼,只要不是「復原」或是「重設」,對這段程式都不會有影響。

Comments
何不保持原文?如此refine跟filter不是一樣稱為篩
何不保持原文?如此refine跟filter不是一樣稱為篩選了?個人淺見
請留意程式碼中的 switch 一段 case
請留意程式碼中的 switch 一段
case t('Filter') 及 case t('Refine') 是執行同一段程式碼的
但因為是用 t() 傳回的值做對比,如果:
t('Filter') => 篩選
t('Refine') => 重設
t('Reset') => 重設
那麼 t('Reset') 也會改為執行 t('Filter') ( i.e. t('Refine') ) 的一段程式,這是不正確的
因此,t('Refine') 一定不可以與 t('Undo') 或 t('Reset') 相同,
否則 t('Undo') 及 t('Reset') 就會執行了錯誤的程式碼
可參考這裏的小討論:http://drupaltaiwan
可參考這裏的小討論:http://drupaltaiwan.org/forum/20090928/3706#comment-13069
唉唷,之前沒細看,忽略了:
- Refine 這個詞被許多模組使用
- case t('Filter') 及 case t('Refine') 是執行同一段程式碼的
我在Drupal Core UI 看看,當有 Refine 時,是沒有 Filter 出現的,所以說 Refine & Filter 相同翻譯是可行的
沒法在每個模組考證,大家分享一下你的使用經驗及想法。
建議
Refine => 重設
翻譯成 提煉 或者 重構 何如?