Internationalization

模組介紹: 

提供多國語言網站的建置。i18n包含多種模組,支援一個多國語言網站的建制。
1. 多國語言的vocabulary 分類表,對應的語言顯示對應的分類
2. 多國語言的block 區塊,對應的語言顯示對應的block
3. 多國語言的node 內容,對應的語言顯示對應的node
4. 多國語言的menu 選單,對應的語言,顯示對應的menu
5. 多國語言的variable 變數,對應的語言,顯示對應的變數(如site slogan,site name等變數)。
6. 多國語言的切換,提供一個預設的block區塊,讓人方便切換不同語言

回應

jimmy 的照片

問題1. 多國語言的primary link

primary link,4.7版的作法是只要你用預設的語言新建primary link,i18n系統就會自動把該詞彙加進語系翻譯裡頭。這時只要到
admin/locale/string/search
這裡找找看剛剛新增的字彙,就可以針對不同語言進行翻譯囉!

--
http://jimmy.j2.idv.tw

jimmy 的照片

問題2. 語系切換沒路用?

這部份,我trace了一下code,語系切換的確不包含內容翻譯切換
因為產生的路徑是沒有包含翻譯的node
我做了一些dirty hack,需要的人可以湊合的用看看,之後我也會給i18n的作者參考一下這樣的作法。

step0.
請先確定translation.module有啟用。
請先確定有開啟content types設定裡頭「Multilingual support」有開啟
(以page這個content type為例,admin/settings/content-types/page 裡頭可以看到選項)

step1.
在i18n.module裡找到function i18n_path(大概在291行左右)

step2.
把下面的程式碼,插入function i18n_path(){ 這一行下面
目的是為了要讓更改block產生連結的過程,讓對應的翻譯node可以正確加入

function i18n_path($path, $lang) {
  if(arg(0)=='node' && is_numeric(arg(1))){
    if(module_exist('translation')){
      $tnid = translation_node_nid(arg(1), $lang);
      $p = explode('/', $path);
      $p[1] = $tnid ? $tnid : arg(1);
      $path = implode('/', $p);
    }
  }

step3.
啟用switch language這個block,試看看效果吧

--
http://jimmy.j2.idv.tw

大魔王 的照片

Re: 問題2. 語系切換沒路用?

使用version = "6.x-1.1"但找不到291行有以上的unction i18n_path
想詢問 jimmy您使用的是6.x-1.1的嘛?謝謝

LeS 的照片

Re: Internationalization

他會讓首頁斷掉嗎?

我試了幾次,內容切換很棒,很順暢

但是,就是回首頁(網站資訊中的指定首頁 / site information / Default front page )

每次都跳出 404 錯誤

大魔王 的照片

Re: Internationalization

我有一個問題~~
就是使用中英文版。然後指定首頁的部份~~~
應要如何各別指定呢?
像英文和中文就是各建內容類型的頁面,但是~中英文頁面都有指定想要預設的頁面…要怎設定首頁呢?

LeS 的照片

Re: Internationalization

請看
http://drupal.org/node/357248
http://drupal.org/node/313272

------

得再 settings.php 上補上一段

然後才得以開啟多語主要設定(而先前只有多語內容)

爬了文才知道,但原本程式的 readme 應該要補上這段的

也一併解決了我斷頭的疑難

大魔王 的照片

Re: Internationalization

您好想詢問
那意思是指我將下面代碼整個貼在上面就可以設定多語了,是這意思嘛?
因為>w<我找不到要怎設…
$conf['i18n_variables'] = array(
// Site name, slogan, mission, etc..
'site_name',
'site_slogan',
'site_mission',
'site_footer',
'anonymous',
// Different front page for each language
'site_frontpage',
// Primary and secondary links
'menu_primary_links_source',
'menu_secondary_links_source',
// Contact form information
'contact_form_information',
// For theme variables, read more below
'theme_settings',
'theme_garland_settings',
);

LeS 的照片

Re: Internationalization

我翻譯一下好了,如何做到不同語言,呈現不同首頁

1.增加 site_frontpage 的資訊
2.分別使用不同語言設定首頁,這樣就能夠分開首頁資訊了

------

那麼 1. 是怎麼做到的,他提到要使用 multilingual variables

通常要打開 /sites/default/settings.php 這個標準的設定檔

打開並編輯這個檔案,再最後補上 上述的程式碼

/**
* Multilingual settings
*
* This is a collection of variables that can be set up for each language when i18n is enabled.
* These are the basic ones for Drupal core, but you can add your own here.
*/
$conf['i18n_variables'] = array(
  // Site name, slogan, mission, etc..
  'site_name',
  'site_slogan',
  'site_mission',
  'site_footer',
  'anonymous',
  // Different front page for each language
  'site_frontpage',
  // Primary and secondary links
  'menu_primary_links_source',
  'menu_secondary_links_source',
  // Contact form information
  'contact_form_information',
  // For theme variables, read more below
  'theme_settings',
  'theme_garland_settings',
);

並留意最後一行 theme_garland_settings 中間的 garland 改成你自己使用的主題,即可

大魔王 的照片

Re: Internationalization

LeS您好:
但我還是作不出效果~很不好意思的再問你一下
但是增加 site_frontpage 的資訊就是修改settings.php的意思,然後在網站資訊中就能分別設不同首頁的意思嘛?
那意思就是於/sites/default/settings.php設定檔中加上如上代碼然後修改自已目前所用的版型
但是啊我出現如下錯誤訊息~

附加檔案大小
error1.PNG6.62 KB
bug.PNG12.88 KB
大魔王 的照片

Re: Internationalization

我後來就將版型註解掉,只剩如下~
之後將中文版和英文版的內容類型所建立的頁面都取為同一個名字~
使用Automatic alias的方式~都命名同一個網頁路徑~
然後再到網站資料將首頁預設好~~
不知您說的方式是不是這意思就能達到呢?
想說沒命名版型的話應不會有問題吧~

'theme_settings',
  //'theme_garland_settings',

大魔王 的照片

Re: Internationalization

而且覺得啊有時選單的部份在ie下會有點切不過去的亂掉~~
如果是切英文版的有時選單全部看不到~~如果切中文版可能混一些英文選單~~
但選單中的語系我都有特別的勾選選單語系了~~
>w<~~help~~~

LeS 的照片

Re: Internationalization

我的作法是1.建立中文首頁(假設 node/1 標題 twhome ),
然後翻譯成英文(假設 node/2 標題 enhome),

2.那麼再開啟區塊 block 中多國語言的區塊,語言選擇
這樣就能夠隨時切換中英文

3.上述的程式碼 確認有寫進 setting.php 並且有出現 ,This is a multilingual variable.

4.進入中文,並選擇網站資訊、設定預設的網站首頁: *,選擇 node/1
進入英文,並選擇site-information,Default front page: * 選擇 node/2

5.進入效能清除快取,再回到首頁看看,切換中/英文是否皆能呈現

步驟參考參考

大魔王 的照片

Re: Internationalization

LeS謝謝您我照你的方式弄好了。
但有一個問題~有時后若在切換時,像我的中文頁面我都會再命名路徑名稱
它原先的路徑名是node/88但我重命名about好了~

但像如果使用者在看英文版時,再突然切回中文版~就會帶不到我命名路徑而是跑node/88,不然就是畫面中文版會參到英文選單~
不知你有無遇到這問題~~

LeS 的照片

Re: Internationalization

我很少自己額外命名

會使用 pathauto,系統會自己轉譯,挺方便的

http://drupal.org/project/pathauto?no_cache=1258523493

大魔王 的照片

Re: Internationalization

那麼意思是指我不要去使用pathauto去命名,就讓系統自已轉譯比較不會有我剛上述描述的狀況發生~是這意思嘛?

LeS 的照片

Re: Internationalization

是我都叫系統自己轉譯,自己翻譯很容易會忘記

但後來想想,自己轉譯也沒什麼不對

可能是我配了許多 module

大魔王 的照片

Re: Internationalization

Les您好:
    我覺得我的語系切換還是有點卡卡的說~有時切來切去之間並無法完全切過去

大魔王 的照片

Re: Internationalization

而且這版型的部份啊~~就是我後來自已想了一下~~
就是啊~當加了這'theme_summertime_settings',
還得進入版型/設定/您的樣版~去將一些預設值勾選~之後就沒這錯的訊息出現了

大魔王 的照片

Re: Internationalization

ya~英文版架設好
但是啊有一個問題再詢問一下~
若中文網址
http://xx.x.xx.xxx/star/cn/
要如何讓它再自訂網址呢?
只要讓人家不管打什麼是秀http://xx.x.xx.xxx/star/

大魔王 的照片

Re: Internationalization

想詢問像中英文版~是不是在node/頁數的名稱都得一樣才能直接翻譯呢?
因為我發覺node的id不同(中英文版)結果導致中英文頁都亂掉了~

astsj 的照片

Re: Internationalization

看完之後有個疑問....
要怎麼設定才能有
中文的node 內容,對應到顯示對應的英文的node內容?
是讓user在輸入中文後再輸入對應的英文node?
如果是要怎麼設定??

RSS feed