Вы можете хранить свои строки в CSV-файлах следующим образом:
"Welcome","Welcome"
"Total Price","Total Price"
Создайте один файл для каждого языка. Первое значение - это ключ, который вы будете использовать для извлечения строки, а второе - перевод. Затем вы можете создать класс с функциями, которые загружают соответствующий файл, сохраняют переменные в массиве и переводят текст по запросу. Например:
protected function loadTranslation($locale) {
$this->_data=array();
$localeFilePath="locale/" . $locale . "/whatever.csv";
if(file_exists($localeFilePath)){
$localeFileHandle = fopen($localeFilePath, "r");
while (($line = fgetcsv($localeFileHandle, 1000)) !== FALSE) {
$this->_data[$line[0]]=$line[1];
}
fclose($localeFileHandle);
}
return $this;
}
для загрузки значений и
public function __($label) {
$output=$this->_data[$label];
if(empty($output)) $output=$label;
return $output;
}
для перевода.
Затем вы можете, например, использовать следующую строку для получения правильной строки:
echo $this->__('Total Price')
Преимущество использования CSV-файлов заключается в том, что вам не нужно беспокоиться о базе данных, и, конечно, их можно редактировать через Excel, что очень удобно, когда вам нужно будет указать какой-то беспилотник для ввода данных, чтобы выполнить перевод.
Кроме того, вы можете написать небольшой скрипт для поиска строк, используемых функцией __ () в вашем коде, а затем записать соответствующие строки в файлы CSV, чтобы вам не приходилось тратить время на добавление строк в каждый CSV. файл для каждой строки, которую вы используете в своем коде.
Что касается шаблонов Smarty и файлов Javascript, вам также придется использовать переведенные строки из PHP. Значения Smarty приходят из PHP, поэтому используйте ваш переводчик, прежде чем присваивать значение Smarty. Что касается javascript, он должен быть динамически создан PHP, чтобы вы могли установить переведенные строки в соответствующих местах.