brauchte ich die gleiche Sache selbst und so ist es, wie ich gerade geschrieben habe dies:
Ich hatte zwei Dropdown-Listen mit den bestehenden Sprachen, von Sprache 1 Sprache 2 die Idee war.
Bei Auswahl beider Sprachen lese ich die JSON-Dateien in Arrays und zeige sie mit einem ng-repeat unter Verwendung von Zwei-Wege-Bindungen an. Wenn sich der Inhalt eines Eingabefeldes änderte, wurde das Array sofort aktualisiert.
Die Methode apply hat dann den Dateinamen und das Array in eine PHP-Datei hochgeladen, die es in das Dokument geschrieben hat.
ger.json:
{
"ALBUM":{
"TITEL":"album",
"LAAD_MEER":"Load more",
"ALBUMS":"Back to albums"
},
"INFO":{
"TITEL":"information",
"HOTELS":"Hotels",
"SPORTHAL":"Sportscenter",
"INTHISHOTEL":"In this facility"
}
}
mein html:
<section ng-if="toSelected"
class="bg-g-r bg-u-1 card flyin"
ng-repeat="section in fromContents"
id="{{'trans'+section.TITEL}}"
class="translatorSection">
<p class="paddedText bg-u-1 blueElement">{{section.TITEL}}</p>
<div class="textContainer bg-u-1"
ng-repeat="line in section">
<p style="color:grey">{{line}}</p>
<textarea class="bg-u-1" ng-model="toContents[getKeys(toContents,$parent.$index)][getKeys(section,$index)]"
style="padding: 8px;border-radius: 10px"
></textarea>
</div>
</section>
mein Controller:
//Bound to the dropdowns in my case
$scope.fromSelected = null; //language from wich to start
$scope.toSelected = null; //language i wish to extend
$scope.fromContents = null;
$scope.toContents = null;
$scope.$watch('fromSelected', function (abbr) {
if(abbr) {
jsonFactory.getLanguageContents(abbr).then(function (data) {
$scope.fromContents = data.data;
});
}
});
$scope.$watch('toSelected', function (abbr) {
if(abbr) {
jsonFactory.getLanguageContents(abbr).then(function(data){
$scope.toContents = data.data;
});
}
});
$scope.getKeys = function (array,index){
return Object.keys(array)[index];
};
$scope.getToValueByKey = function (key){
return $scope.toContents[key];
};
$scope.apply = function(){
jsonFactory.UploadLanguage($scope.toSelected,$scope.toContents)
.then(function(data){
alert('update succesfull, please reload')
});
};
Jsonfactory:
function getLanguageContents(lang) {
var deferred = $q.defer(),
httpPromise = $http.get('languages/'+lang+'.json');
httpPromise.then(function (response) {
deferred.resolve(response);
}, function (error) {
console.error(error);
});
return deferred.promise;
}
function UploadLanguage(lang,content){
return $q(function(resolve,reject){
var xmlhttp,
params = 'lang='+lang+'&content='+JSON.stringify(content);
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else { // code for IE6, IE5
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.open('POST', 'http://localhost:63342/website/app/php/translator.php', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
var data = xmlhttp.responseText;
resolve(data);
}else if (xmlhttp.readyState === 4){
reject('not found');
}
};
xmlhttp.send(params);
});
}
Lesen Sie den Ordner mit JSON-Dateien in Javascript in einigen Arrays, Für jedes Array erstellen Sie einfach eine ng-repeat mit Eingabefeldern, so dass Sie den Schlüssel und alle Ihre Übersetzungen sehen, wenn Sie Änderungen vorgenommen haben, erstellen Sie eine Schaltfläche, die Array und den Dateinamen an dieses PHP-Skript sendet: (Ich akzeptiere nur eine Sprache zu dem Zeitpunkt)
<?php
header("Access-Control-Allow-Origin: *");
$taal = $_POST["lang"];
$content = $_POST["content"];
$myfile = fopen("../languages/".$taal.".json", "w");
fwrite($myfile, $content);
fclose($myfile);
echo $taal;
echo $content;
?>
es war eigentlich sehr einfach zu erstellen, wollte ich es auf meiner Website hinzuzufügen, so dass jeder der Übersetzung helfen konnte, aber es kam nie dort.
Ich kann nicht den ganzen Code geben, aber ich thik das sollte Sie beginnen.
Mögliche Vervielfältigung von: http://stackoverflow.com/questions/16877062/program-for-managing-json-localization-files – Ganbin
Mögliche Duplizierung zu: http://stackoverflow.com/questions/12664823/angular-js -support-for-localisation –